Фьючерсы и арбитражный анализ доходности спотовых спредов в контрактах с криптомаржинальной гарантией

Автор:Нинабадасс., Создано: 2022-04-12 10:06:51, Обновлено: 2022-04-13 09:20:56

Фьючерсы и арбитраж возврата спотовых спредов

В прошлый раз мы ввели арбитраж ставки постоянного контрактного финансирования (https://www.fmz.com/digest-topic/6381В случае большой отрицательной премии, это также может сделать деньги и премию, чтобы вернуть прибыль. на бычьем рынке в августе и сентябре, годовая ставка однажды достигла 100%, так что это относительно популярная стратегия.

В низкорисковом криптовалютном арбитраже существует еще один тип стратегии, который не был внедрен - базовый арбитраж доходности.

1.Существует разница в цене между фьючерсным контрактом и спотом. Особенность контракта поставки заключается в том, что он не урегулируется по спотовой цене до даты поставки. Поэтому, когда дата доставки далеко, доставка контракта легко влияет на рыночные настроения. Если рынок работает хорошо, больше людей будут оптимистично относиться к будущей цене, поэтому будет положительная премия. Когда наблюдается резкое падение, часто наблюдается отрицательная премия. Но в целом, доставка контракта не будет слишком сильно отклоняться от спота и всегда вернется в день доставки.

Например, у Binance есть текущие квартальные и следующие квартальные контракты на доставку. Существует большая разница между контрактом на доставку с криптомаржировкой и вечным контрактом с маржировкой USDT. В расчетах с криптомаржировкой используется валюта, и цена валюты постоянно меняется, что будет подробно представлено далее.

Код в этой статье можно запустить непосредственно, но из-за сетевых причин, часть сканирования данных требует научного доступа в Интернет, лучше всего использовать свой собственный компьютер для запуска или использовать Google colab.

Расчет прибыли и убытка по контрактам с криптомаржировкой

Согласно документации Binance, доход = направление торговли × объем исполнения × кратное контракта × (1 / цена открытия - 1 / цена закрытия) = стоимость позиции × (1 / цена открытия - 1 / цена закрытия); когда вы делаете короткий, стоимость позиции отрицательна. Если у вас есть 100 контрактов поставки BTCUSD, каждый на 100USD, и цена открытия составляет 10,000USD, то прибыль и убыток при изменении цены следующий:

Посредством расчета и анализа прибыль от крипто-маржинальных коротких или длинных позиций нелинейна и измеряется прибылью от валюты; если при создании короткой позиции есть убыток, то теряется только сумма валюты одной позиции, но нет верхнего предела заработанной валютной суммы; если при создании длинной позиции есть прибыль, то получается только прибыль, максимум, от суммы валюты одной позиции, и нет верхнего предела убытков. Похоже, что сделать короткую более экономически эффективно, но прибыль от создания короткой валюты уменьшается по мере снижения цены, что не так высоко рассчитывается в долларах США. Если вы рассчитываете прибыль в долларах США, ситуация прямо противоположна.

В то же время при торговле крипто-маржинальными контрактами вам нужно первоначально держать валюты. Если вы считаете USD валютой котировки, то общая стоимость счета = (сумма валюты счета + стоимость позиции × (1 / открытая цена - 1 / закрытая цена)) × спотная цена. Если стоимость позиции = - сумма валюты на счете × открытая цена, то есть с использованием однократного рычага для короткого, и общая стоимость счета = сумма валюты на счете × открытая цена × спотная цена закрытой позиции / закрытой цены. Учитывая, что цена контракта поставки в конечном итоге вернется к спотовой цене, в последнем случае общая стоимость счета = сумма валюты на счете × открытая цена. То есть стоимость счета будет заперта на открытой цене и не изменится с текущей ценой. Согласно анализу, если цена повысится бесконечно, позиция не будет ликвидироваться. Это принцип хеджирования. Создание короткого

Если валюта фьючерсного счета приобретена на спотовом рынке, тообщая стоимость счета = сумма валюты на счете × (цена открытия - цена покупки на месте), пока позиция открыта, наша прибыль фиксирована, и текущая цена не имеет значения.

Конечно, в большинстве случаев, нам не нужно ждать до даты поставки. Если спред цены снижается, мы можем закрыть позицию заранее.общая стоимость счета = спотовая стоимость × (соотношение фьючерсов к спотовым в открывающем периоде / фьючерсов к спотовым в закрывающем периоде - 1)До тех пор, пока соотношение фьючерсов и спотовых цен в период открытия больше, чем в период закрытия, и может покрыть комиссию, и тогда будет прибыль.

В [15]: запросы на импорт от даты времени даты ввоза, даты времени Время импорта Импорт панды как pd импортировать нумпи как np Импортировать matplotlib.pyplot как plt % матрицы в строке В [96]: значение = 100100 #значение позиции open_price = 10000 #открытая цена позиции 10000USD long_profit_list = [] short_profit_list = [] long_usdt_profit_list = [] short_usdt_profit_list = [] close_range = range ((1000,30000,10) для p в close_range: Прибыль = стоимость(1/open_price-1/p) long_profit_list.append (прибыль) long_usdt_profit_list.append(прибыльp) short_profit_list.append ((-прибыль) short_usdt_profit_list.append(-прибыльp) В [97]: #крипто-маржинальная прибыль plt.figure ((figsize=(12, 7), dpi=80) plt.plot ((close_range,long_profit_list,label=long); plt.plot ((close_range,short_profit_list); plt.plot ((close_range,[1]*len ((close_range),r); plt.plot ((close_range,[-1]*len ((close_range),g); plt.ylabel ((прибыль); plt.xlabel ((ближайшая цена); ПЛТ.ГРИД ((Правда)) plt.annotate ((Short profit, xy=(4500, 1.5), xytext=(7000, 2.5),arrowprops=dict ((facecolor=black)); plt.annotate ((Long profit, xy=(4500, -1.5), xytext=(7000, -2.5), arrowprops=dict ((facecolor=black));
plt.annotate ((Open price, xy=(10000, 0), xytext=(13000, 2.5),arrowprops=dict ((facecolor=black)); Выход[97]:imgВ [101]: #прибыль, рассчитанная в долларах США plt.figure ((figsize=(12, 7), dpi=80) plt.plot ((close_range,long_usdt_profit_list,label=long); plt.plot ((close_range,short_usdt_profit_list);

plt.ylabel ((profit); plt.xlabel ((ближайшая цена); plt.annotate ((Short profit, xy=(5000, 5000), xytext=(7000, 10000),arrowprops=dict ((facecolor=black)); plt.annotate ((Long profit, xy=(5000, -5000), xytext=(7000, -10000),arrowprops=dict ((facecolor=black));
ПЛТ.ГРИД ((Правда)) Вне[101]:img

Процедуры фьючерсов и спотового арбитража

После достижения установленного значения, символ спотовой валюты покупается и немедленно переносится на фьючерсы для проведения коротких торгов. Значение проведения коротких торгов равняется сумме спота × открытой цене. 2.Ожидать возврата премии, а после достижения установленной стоимости закрыть фьючерсную позицию, перевести ее на место продажи и получить прибыль.

Подробная информация

Например, если есть ежеквартальная премия в размере 5% и ежеквартальная премия в следующем квартале в размере 5%, то для арбитража определенно будет предпочтительнее ежеквартальная ставка. Соответствующую годовую ставку необходимо рассчитать на основе даты поставки. 2.Необходимо учитывать комиссию за обслуживание, которая включает покупку и продажу на месте, а также открытые и закрытые позиции фьючерсов, в общей сложности включающие 4 сделки. Для того чтобы избежать шоков на рынке, позиции могут быть сокращены в нескольких сделках. 4.Когда на фьючерсном счете есть валюта, вы можете напрямую одновременно арбитражировать открытые позиции, не дожидаясь передачи.5.ToСледите за всеми торговыми парами, какая из них имеет шанс, и какая из них имеет более высокую премию. 6.Выбор позиций для закрытия очень важен.Вы можете закрывать позиции по уровням; вы можете использовать 0 премии или отрицательную премию для закрытия всех.

Изменения в истории премии

В качестве примера можно привести данные о доставке Binance; существует 9 торговых пар, а именно BTCUSDT, ETHUSDT, ADAUSDT, LINKUSDT, BCHUSDT, DOTUSDT, XRPUSDT, LTCUSDT и BNBUSDT, которые можно использовать для арбитражной торговли.

С начала этого года (2021), ETH начал с 600U, и поднялся до максимума 4000U в мае, затем упал до 2000U в июне и июле, и недавно вернулся до 3500U, что означает, что рынок процветает. Рассмотрим три контракта поставки с датами истечения 210625, 210924 и 211231. Премия 210625 остается на уровне 8% в течение длительного времени; если начать арбитраж на уровне 10% и закрыть позиции на уровне 6%, есть около 4 возможностей за 4 месяца, и годовая ставка будет более 50%. 210924 имеет премию, максимум, более 15%, которая теперь вернулась. 211231, у которого еще много времени до даты истечения, имеет максимальную премию 5%. Можно увидеть, что, пока вы терпеливо ждете, есть много возможностей арбитража на ETH.

Читатели могут самостоятельно менять торговую пару; ситуация в основном похожа; в целом, это довольно хороший часовой пояс с января по апрель этого года. В [103]: ## текущая торговая пара Info = запросы.get(https://dapi.binance.com/dapi/v1/exchangeInfo’) символы = [s[symbol] для s в Info.json() [symbols]] В [106]: symbols_nq = list(filter(lambda x:x.split() [-1]==211231, символы)) # следующий квартальный контракт symbols_q = list(filter(lambda x:x.split()[-1]==210924, символы)) #квартальный контракт symbols_s = [s.split(_) [0]+T для s в symbols_nq] #спот торговая пара В [108]: ,.присоединяйтесь (символы) Вне[108]: В [109]: def GetKlines ((символ=BTCUSDT,start=2020-8-10,end=2021-8-10,period=1h,base=fapi,v = v1): Клин = [] start_time = int(time.mktime(datetime.strptime(start, %Y-%m-%d).timetuple()))1000 + 860601000 end_time = int(time.mktime(datetime.strptime(end, %Y-%m-%d).метметпуль()))1000 + 860601000 intervel_map = {m:601000,h:60601000,d:2460601000) в то время как время начала < время окончания: mid_time = min(start_time+1000int ((период[:-1])intervel_map[период[-1],конец_время] url = https://+base+.binance.com/+base+/+v+/klines?символ=%s&interval=%s&startTime=%s&endTime=%s&limit=1000%(символ,период,start_time,mid_time) res = requests.get ((url)) res_list = res.json() если type ((res_list) == list и len ((res_list) > 0: start_time = res_list[-1][0] Klines += res_list elif type ((res_list) == список: start_time = start_time+1000int ((период[:-1])intervel_map[период[-1]] другие: print ((url) df = pd.DataFrame ((Klines,columns=[time,open,high,low,close,amount,end_time,volume,count,buy_amount,buy_volume,null]).astype ((float) df.index = pd.to_datetime ((df.time,unit=ms) возвращение df В [110]: символ = ETH df_s = GetKlines ((символ=символ+USDT,start=2020-12-26,end=2021-9-15,period=1h,base=api,v=v3) df_nq = GetKlines ((символ=символ+USD_211231,start=2021-6-26,end=2021-9-15,period=1h,base=dapi) df_q = GetKlines ((символ=символ+USD_210924,start=2021-3-26,end=2021-9-15,period=1h,base=dapi) df_lq = GetKlines ((символ=символ+USD_210625,start=2020-12-26,end=2021-6-24,period=1h,base=dapi) В [128]: #спотовая цена df_s.close.dropna (().plot ((figsize=(16,6),grid=True); Выход[128]:imgВ [139]: #премия по контракту за последний квартал (100(df_lq.close-df_s.close) /df_s.close).dropna().plot(figsize=(16,6),grid=True); #квартальная контрактная премия (100(df_q.close-df_s.close) /df_s.close).dropna().plot(figsize=(16,6),grid=True); #премия контракта на следующий квартал (100*(df_nq.close-df_s.close) /df_s.close).dropna().plot(figsize=(16,6),grid=True); Выход[139]:img

## текущая возможность торговли Для контракта 210924 собирается истечь, здесь мы в основном наблюдать контракт 211231, который еще три месяца до истечения. На данный момент основная премия составляет около 3%, а самая высокая премия - 5%. Мы могли бы сказать, что эта возможность не очень перспективна. Однако после истечения срока действия контракта 210924 будет создан новый контракт на следующий квартал, и будет 6 месяцев для доставки, что означает, что еще будет много возможностей.

В [143]: df_all = pd.DataFrame ((index=pd.date_range ((start=2021-6-26, end=2021-9-16, freq=1H), столбцы=символы_s) для i в диапазоне ((len ((символы_nq)): symbol_nq = символы_nq[i] symbol_s = symbols_s[i] df_s = GetKlines ((символ=символ_s,start=2021-6-26,end=2021-9-16,period=1h,base=api,v=v3) df_nq = GetKlines ((символ=символ_nq,start=2021-6-26,end=2021-9-16,period=1h,base=dapi) df_all[symbol_s] = (100*(df_nq.close-df_s.close) /df_s.close).drop_duplicates() В [144]: df_all.dropna (().plot ((figsize=(16,10),grid=True); Вне[144]:img

Заключение

В данной статье в основном рассказывается о проведении арбитражной торговли с использованием спреда доходности между контрактом поставки и спотом.

1.Низкий риск. Поскольку короткая позиция с 1x рычагом не будет ликвидирована, риск отсутствует даже при увеличении премии, и это практически безрисковый арбитраж. 2.Высокая уверенность.Цена контракта поставки всегда будет возвращаться на место.После завершения арбитража она не будет подвергаться влиянию текущих колебаний цен. 3.Принцип работы прост, и он может торговать с несколькими валютными символами, что подходит для относительно крупных фондов для достижения стабильной прибыли. Если вам повезло и вы освоили ритм, выигрыш будет очень значительным.

Основные риски: 1.Если премия увеличивается в течение длительного времени, то в течение длительного времени будет наблюдаться плавающий убыток. 2.Ошибка API платформы; торговля одной ногой. 3.Ликвидность торговых контрактов низкая, а стратегий одного и того же типа слишком много, что приводит к чрезмерному уровню падения и снижению прибыли.


Больше