Futures & Spot Spread Return Arbitrage Analysis dalam Kontrak Crypto-Margined

Penulis:Ninabadass, Dibuat: 2022-04-12 10:06:51, Diperbarui: 2022-04-13 09:20:56

Futures & Spot Spread Return Arbitrage

Terakhir kali, kami memperkenalkan arbitrase tingkat pendanaan kontrak abadi (https://www.fmz.com/digest-topic/6381), yaitu untuk membuat long spot dari jumlah yang sama dengan membuat pendek kontrak berjangka abadi, dan kita dapat terus mendapatkan keuntungan tingkat pendanaan. Dalam kasus premi negatif yang besar, itu juga dapat menghasilkan uang dan premi, untuk mengembalikan keuntungan.

Dalam arbitrage cryptocurrency berisiko rendah, ada jenis strategi lain yang belum diperkenalkan - arbitrage pengembalian dasar.

1.Ada perbedaan harga antara kontrak berjangka dan spot. Fitur dari kontrak pengiriman adalah bahwa tidak diselesaikan dengan harga spot sampai tanggal pengiriman. Oleh karena itu, ketika tanggal pengiriman jauh, pengiriman kontrak mudah dipengaruhi oleh sentimen pasar. Jika pasar berkinerja baik, lebih banyak orang akan optimis tentang harga masa depan, sehingga akan ada premi positif. Ketika ada penurunan tajam, seringkali ada premi negatif. Tetapi secara umum, pengiriman kontrak tidak akan terlalu menyimpang dari spot, dan selalu akan kembali pada hari pengiriman.

2.Ada kontrak pengiriman berbasis mata uang. Sebagai contoh, Binance memiliki kontrak pengiriman kuartal dan kuartal berikutnya. Ada perbedaan besar antara kontrak pengiriman dengan margin kripto dan kontrak abadi dengan margin USDT. Penyelesaian dengan margin kripto menggunakan mata uang, dan harga mata uang terus berubah, yang akan diperkenalkan secara rinci selanjutnya.

Kode dalam artikel ini dapat dijalankan secara langsung, tetapi karena alasan jaringan, bagian data merangkak membutuhkan akses Internet ilmiah, yang terbaik adalah menggunakan komputer Anda sendiri untuk menjalankan, atau menggunakan Google colab.

Perhitungan Keuntungan & Kerugian dari Kontrak Margin Crypto

Menurut dokumentasi Binance, pendapatan = arah perdagangan × volume yang dieksekusi × kelipatan kontrak × (1 / harga terbuka - 1 / harga penutupan) = nilai posisi × (1 / harga terbuka - 1 / harga penutupan); ketika Anda melakukan short, nilai posisi negatif. Jika Anda memegang 100 kontrak pengiriman BTCUSD, masing-masing bernilai 100USD, dan harga terbuka adalah 10,000USD, maka keuntungan dan kerugian dengan perubahan harga adalah sebagai berikut:

Melalui perhitungan dan analisis, keuntungan dari posisi pendek atau panjang dengan margin kripto tidak linier dan diukur dengan keuntungan mata uang; jika ada kerugian dalam membuat posisi pendek, hanya kehilangan jumlah mata uang satu posisi, tetapi tidak ada batas atas jumlah mata uang yang diperoleh; jika ada keuntungan dalam membuat posisi panjang, hanya menghasilkan keuntungan, paling banyak, jumlah mata uang satu posisi, dan tidak ada batas atas kerugian.

Pada saat yang sama, ketika berdagang kontrak bermargin crypto, Anda perlu memegang mata uang pada awalnya. Jika Anda menganggap USD sebagai mata uang kutipan, maka total nilai akun = (jumlah mata uang akun + nilai posisi × (1 / harga terbuka - 1 / harga penutupan)) × harga spot. Jika nilai posisi = - jumlah mata uang di akun × harga terbuka, yaitu dengan menggunakan leverage satu kali untuk membuat short, dan total nilai akun = jumlah mata uang di akun × harga terbuka × harga spot posisi penutupan / harga penutupan. Mengingat bahwa harga kontrak pengiriman akhirnya akan kembali ke harga spot, pada akhirnya, total nilai akun = jumlah mata uang di akun × harga terbuka. Artinya, nilai akun akan terkunci pada harga terbuka, dan tidak akan berubah dengan harga saat ini. Menurut analisis, jika harga naik tanpa batas, posisi tidak akan likuidasi. Ini adalah prinsip hedging. Membuat futures pendek Anda setara dengan menjual mata uang dengan harga spot di muka.

Jika mata uang akun berjangka dibeli dari pasar spot, makaNilai total rekening = jumlah mata uang di rekening × (harga buka - harga pembelian spot), selama posisi dibuka, keuntungan kita telah ditetapkan, dan harga saat ini tidak masalah. harga spread adalah keuntungan dari arbitrase. ini adalah prinsip arbitrase berjangka.

Tentu saja, dalam kebanyakan kasus, kita tidak perlu menunggu sampai tanggal pengiriman. jika spread harga menurun, kita dapat menutup posisi sebelumnya. pada saat ini,nilai total rekening = nilai spot × (rasio futures-to-spot periode pembukaan / ratio futures-to-spot periode penutupan - 1)Selama rasio harga berjangka dan spot di periode pembukaan lebih besar dari pada periode penutupan, dan dapat menutupi biaya, maka akan ada keuntungan.

Di [15]: permintaan impor Dari tanggal waktu tanggal impor,tanggal waktu waktu impor mengimpor panda sebagai pd import numpy sebagai np mengimpor matplotlib.pyplot sebagai plt % matplotlib inline Di [96]: nilai = 100100 # nilai posisi open_price = 10000 #harga posisi terbuka 10000USD long_profit_list = [] short_profit_list = [] long_usdt_profit_list = [] short_usdt_profit_list = [] close_range = range ((1000,30000,10) untuk p dalam jarak dekat: keuntungan = nilai(1/open_price-1/p) long_profit_list.append (keuntungan) long_usdt_profit_list.append(profitp) short_profit_list.append ((-profit) short_usdt_profit_list.append(-profitp) Di [97]: #crypto-margin profit 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 ((profit); plt.xlabel ((harga dekat); Plt.grid (benar) 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)); Keluar[1]:imgDalam [101]: #keuntungan dihitung dalam USD 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 ((harga dekat); 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));
Plt.grid (benar) Keluar[101]:img

Prosedur Arbitrage Futures & Spot

1.Pengamatan perubahan futures & premi spot secara real time. Setelah mencapai nilai yang ditetapkan, simbol mata uang spot dibeli dan segera ditransfer ke futures untuk short. Nilai short adalah jumlah spot × harga buka. 2.Menunggu pengembalian premi, dan setelah mencapai nilai yang ditetapkan, tutup posisi berjangka, transfer ke tempat untuk menjual, dan mendapatkan keuntungan.

Rincian

1.Premi pada tanggal pengiriman yang berbeda memiliki arti yang berbeda. Misalnya, jika ada premi triwulanan sebesar 5% dan premi triwulanan berikutnya sebesar 5%, yang triwulanan pasti akan lebih disukai untuk arbitrase. Tingkat tahunan yang sesuai perlu dihitung berdasarkan tanggal pengiriman. 2.Biaya layanan harus dipertimbangkan, yang melibatkan pembelian dan penjualan spot serta posisi terbuka dan dekat berjangka, yang totalnya memiliki 4 perdagangan. 3.Perdagangan berjangka dan spot harus dilakukan pada saat yang sama untuk mengunci premi.Untuk menghindari kejutan pasar, posisi dapat dikurangi dalam beberapa perdagangan. 4.Ketika ada mata uang di akun berjangka, Anda dapat secara langsung melakukan arbitrage posisi terbuka bersamaan tanpa menunggu transfer.5.Tomemantau semua pasangan perdagangan, mana yang memiliki kesempatan, dan mana yang memiliki premi yang lebih tinggi. 6.Pilihan posisi penutupan sangat penting.Anda dapat menutup posisi berdasarkan tingkat; Anda dapat menggunakan premi 0 atau premi negatif untuk menutup semua.

Sejarah Premium Perubahan

Mengambil data pengiriman Binance sebagai contoh; ada 9 pasangan perdagangan, yaitu BTCUSDT, ETHUSDT, ADAUSDT, LINKUSDT, BCHUSDT, DOTUSDT, XRPUSDT, LTCUSDT dan BNBUSDT, yang dapat digunakan untuk perdagangan arbitrase.

Sejak awal tahun ini (2021), ETH dimulai dari 600U, dan naik ke maksimum 4000U pada bulan Mei, kemudian turun ke 2000U pada bulan Juni dan Juli, dan baru-baru ini kembali ke 3500U, yang berarti pasar sedang booming. Pertimbangkan tiga kontrak pengiriman dengan tanggal kedaluwarsa 210625, 210924, dan 211231. Premium 210625 tetap pada 8% untuk waktu yang lama; jika memulai arbitrage pada 10% dan menutup posisi pada 6%, ada sekitar 4 peluang dalam 4 bulan, dan tingkat tahunan akan lebih dari 50%. 210924 memiliki premi, maksimum, lebih dari 15%, yang sekarang telah kembali. 211231, yang masih memiliki waktu yang lama sebelum tanggal kedaluwarsa, memiliki premi maksimum 5%.

Pembaca dapat mengubah pasangan perdagangan sendiri; situasinya pada dasarnya serupa; secara umum, ini adalah zona waktu yang cukup baik dari Januari hingga April tahun ini. Dalam [103]: ##pasangan perdagangan saat ini Info = permintaan.get(https://dapi.binance.com/dapi/v1/exchangeInfo’) simbol = [s[symbol] untuk s di Info.json()[symbols]] Di [106]: symbols_nq = list(filter(lambda x:x.split() [-1]==211231, simbol)) # kontrak kuartal berikutnya symbols_q = list(filter(lambda x:x.split()[-1]==210924, simbol)) # kontrak triwulanan symbols_s = [s.split(_) [0]+T untuk s dalam symbols_nq] #spot trading pair Di [108]: ,.join ((simbol_s) Keluar [108]: Di [109]: def GetKlines ((simbol=BTCUSDT,start=2020-8-10,end=2021-8-10,period=1h,base=fapi,v = v1): Klines = [] 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).timetuple()))1000 + 860601000 intervel_map = {m:601000,h:60601000,d:2460601000} sementara start_time < end_time: waktu tengah = min(waktu awal+1000int ((periode[:-1])interval_map[periode[-1], akhir_waktu) url = https://+base+.binance.com/+base+/+v+/klines?simbol=%s&interval=%s&startTime=%s&endTime=%s&limit=1000%(simbol,periode,start_time,mid_time) res = request.get (url) res_list = res.json() if type ((res_list) == list dan len ((res_list) > 0: start_time = res_list[-1][0] Klines += res_list elif type ((res_list) == daftar: start_time = start_time+1000int ((periode[:-1])interval_map[periode[-1]] lainnya: 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) kembali df Di [110]: simbol = ETH df_s = GetKlines ((simbol=simbol+USDT,start=2020-12-26,end=2021-9-15,period=1h,base=api,v=v3) df_nq = GetKlines ((simbol=simbol+USD_211231,start=2021-6-26,end=2021-9-15,period=1h,base=dapi) df_q = GetKlines ((simbol=simbol+USD_210924,start=2021-3-26,end=2021-9-15,period=1h,base=dapi) df_lq = GetKlines ((symbol=symbol+USD_210625,start=2020-12-26,end=2021-6-24,period=1h,base=dapi) Di [128]: # harga langsung df_s.close.dropna().plot(figsize=(16,6),grid=True); Keluar[128]:imgDi [139]: #premi kontrak kuartal terakhir (100(df_lq.close-df_s.close) /df_s.close.dropna (().plot ((figsize=(16,6), grid=True); #premi kontrak kuartal (100(df_q.close-df_s.close) /df_s.close).dropna().plot(figsize=(16,6), grid=True); #premium kontrak kuartal berikutnya (100*(df_nq.close-df_s.close) /df_s.close).dropna().plot(figsize=(16,6),grid=True); Keluar [1]:img

##peluang perdagangan saat ini Untuk kontrak 210924 akan berakhir, di sini kita terutama mengamati kontrak 211231, yang masih memiliki tiga bulan untuk berakhir. Untuk saat ini, premi dasar adalah sekitar 3%, dan premi tertinggi adalah 5%. kita bisa mengatakan kesempatan itu tidak terlalu menjanjikan. namun, setelah kontrak 210924 berakhir, kontrak baru kuartal berikutnya akan dihasilkan, dan akan ada 6 bulan untuk dikirim, yang berarti masih akan ada banyak peluang.

Di [143]: df_all = pd.DataFrame ((index=pd.date_range ((start=2021-6-26, end=2021-9-16, freq=1H), kolom=simbol_s) untuk i dalam rentang ((len ((simbol_nq)): simbol_nq = simbol_nq[i] simbol_s = simbol_s[i] df_s = GetKlines ((simbol=simbol_s,start=2021-6-26,end=2021-9-16,period=1h,base=api,v=v3) df_nq = GetKlines ((symbol=symbol_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() Pada [144]: df_all.dropna (().plot ((figsize=(16,10),grid=True); Keluar[144]:img

Kesimpulan

Artikel ini terutama memperkenalkan melakukan perdagangan arbitrase dengan menggunakan spread return antara kontrak pengiriman dan spot.

1.Risiko rendah. Karena melakukan posisi pendek dengan leverage 1x tidak akan dilikuidasi, tidak ada risiko bahkan jika premi berkembang, dan ini hampir merupakan arbitrage bebas risiko. 2.Kepastian tinggi. Harga kontrak pengiriman akan selalu kembali ke tempatnya. Setelah arbitrase selesai, tidak akan terpengaruh oleh fluktuasi harga saat ini. 3.Prinsip operasinya sederhana, dan dapat berdagang dengan beberapa simbol mata uang, yang cocok untuk dana yang relatif besar untuk mengejar keuntungan yang stabil. 4.Keuntungan tidak rendah, dan kadang-kadang akan ada premi negatif yang besar.Jika Anda beruntung dan telah menguasai ritme, keuntungan sangat besar.

Risiko utama: 1.Jika premi meningkat untuk waktu yang lama, akan ada kerugian mengambang untuk waktu yang lama.Pada saat ini, penutupan posisi dan keluar dari pasar akan menghasilkan kerugian yang sebenarnya. 2.Gagalnya API platform; perdagangan dengan satu kaki. 3.Likuiditas kontrak perdagangan rendah, dan ada terlalu banyak strategi dari jenis yang sama, yang mengakibatkan titik tergelincir yang berlebihan dan mengikis keuntungan.


Lebih banyak