avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Studi Awal tentang Pengujian Ulang Strategi Opsi Mata Uang Kripto

Dibuat di: 2020-08-11 14:21:28, diperbarui pada: 2024-12-10 10:10:30
comments   0
hits   2220

Studi Awal tentang Pengujian Ulang Strategi Opsi Mata Uang Kripto

Studi Awal tentang Pengujian Ulang Strategi Opsi Mata Uang Kripto

Baru-baru ini, Platform Perdagangan Kuantitatif Inventor meningkatkan sistem pengujian ulangnya untuk mendukung pengujian ulang opsi mata uang digital.DeribitBeberapa data opsi dari bursa. Oleh karena itu, kami memiliki alat yang lebih baik untuk mempelajari tentang perdagangan opsi dan memvalidasi strategi.

Pengujian Ulang Opsi Deribit

Didefinisikan dalam sistem pengujian ulangDeribitOpsinya bergaya Eropa, dan satu kontrak bernilai 1BTC. Kode kontrak opsi adalah:BTC-7AUG20-12750-C

Subjek materi Tanggal Latihan Harga Latihan Opsi (Panggilan/Penempatan)
BTC 7AUG20 12750 C
Bitcoin Tanggal latihan: 7 Agustus 2020 Harga latihan 12750 Opsi Panggilan
BTC 7AUG20 12750 P
Bitcoin Tanggal latihan: 7 Agustus 2020 Harga latihan 12750 Opsi Jual

Operasi penetapan kontrak dan perolehan posisi sama dengan operasi pada kontrak berjangka mata uang digital. Siapkan kontraknya:exchange.SetContractType("BTC-7AUG20-12750-C") Dapatkan posisi:var pos = exchange.GetPosition()

Harga kontrak opsi adalah premi kontrak opsi, dan pembeli opsi perlu membayar premi kepada penjual opsi. Pembeli memperoleh hak untuk melaksanakan opsi, dan penjual memiliki kewajiban untuk melaksanakan opsi. Kontrak opsi dapat diperdagangkan (misalnya, menutup posisi, menyelesaikan kewajiban) sebelum dilaksanakan.

Kombinasi perdagangan opsi umum sebagai contoh

Jual opsi panggilan dan beli spot.

/*backtest
start: 2020-07-27 00:00:00
end: 2020-08-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Deribit","currency":"BTC_USD"},{"eid":"OKEX","currency":"BTC_USDT","balance":100000}]
*/

function main() {
    exchanges[0].SetContractType('BTC-7AUG20-12750-C');
    var initSpotAcc = _C(exchanges[1].GetAccount)
    var isFirst = true
    while(true) {
        var optionTicker = exchanges[0].GetTicker()
        var spotTicker = exchanges[1].GetTicker()
        if(isFirst) {
            exchanges[0].SetDirection("sell")
            exchanges[0].Sell(optionTicker.Buy, 1)
            exchanges[1].Buy(spotTicker.Sell, 1)
            
            isFirst = false 
        }
        
        var optionPos = _C(exchanges[0].GetPosition)
        var nowSpotAcc = _C(exchanges[1].GetAccount)
        var diffStocks = (nowSpotAcc.Stocks - initSpotAcc.Stocks)
        var diffBalance = (nowSpotAcc.Balance - initSpotAcc.Balance)
        var spotProfit = diffBalance + diffStocks * spotTicker.Last
        var optionProfit = optionPos[0].Profit * spotTicker.Last
        LogProfit(spotProfit + optionProfit)
        $.PlotLine("现货", spotProfit)
        $.PlotLine("期权", optionProfit)
        Sleep(500)
    }
}

Studi Awal tentang Pengujian Ulang Strategi Opsi Mata Uang Kripto

Opsi dapat memberikan tingkat perlindungan lindung nilai tertentu untuk aset yang dibeli secara spot. Umumnya digunakan ketika Anda optimis terhadap spot tersebut dan bersedia mempertahankan spot tersebut. Risikonya terletak pada penurunan harga spot. Meskipun opsi dapat menutupi kerugian spot tertentu sampai batas tertentu, jika kerugian melebihi premi opsi, kerugian bersih akan terjadi.

Selain itu, likuiditas pasar opsi mata uang digital pada umumnya buruk, dan terkadang sulit menemukan rekanan. Ini juga sesuatu yang perlu dipertimbangkan.

Demikian pula, kita dapat mengganti spot dengan futures, kodenya adalah sebagai berikut:

/*backtest
start: 2020-07-27 00:00:00
end: 2020-08-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Deribit","currency":"BTC_USD"},{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
*/

function main() {
    exchanges[0].SetContractType('BTC-7AUG20-12750-C');
    exchanges[1].SetContractType("quarter")
    var isFirst = true
    while(true) {
        var optionTicker = exchanges[0].GetTicker()
        var futuresTicker = exchanges[1].GetTicker()
        if(isFirst) {
            exchanges[0].SetDirection("sell")
            exchanges[0].Sell(optionTicker.Buy, 1)
            
            exchanges[1].SetDirection("buy")
            exchanges[1].Buy(futuresTicker.Sell, _N(1 * futuresTicker.Sell / 100, 0))
            
            isFirst = false 
        }
        
        var optionPos = _C(exchanges[0].GetPosition)
        var futuresPos = _C(exchanges[1].GetPosition)
        
        
        var futuresProfit = futuresPos[0].Profit 
        var optionProfit = optionPos[0].Profit
        LogProfit(futuresProfit + optionProfit)
        $.PlotLine("期货", futuresProfit)
        $.PlotLine("期权", optionProfit)
        Sleep(500)
    }
}

Pengujian ulang ditunjukkan pada gambar: Studi Awal tentang Pengujian Ulang Strategi Opsi Mata Uang Kripto

Kontrak berjangka dapat mengurangi modal yang ditempatkan dibandingkan dengan kontrak spot, tetapi risikonya sedikit lebih tinggi daripada kontrak spot.

Selain itu, ada banyak kombinasi perdagangan opsi lainnya:

  • Penyebaran panggilan banteng
  • Spread Taruhan Beruang

Bagi yang berminat dapat mempelajarinya di sistem backtesting.