
Baru-baru ini, Platform Dagangan Kuantitatif Pencipta telah meningkatkan sistem ujian belakangnya untuk menyokong ujian balik pilihan mata wang digital.DeribitBeberapa data pilihan daripada pertukaran. Oleh itu, kami mempunyai alat yang lebih baik untuk mempelajari tentang perdagangan pilihan dan strategi pengesahan.
Ditakrifkan dalam sistem ujian belakangDeribitPilihannya adalah gaya Eropah, dan satu kontrak bernilai 1BTC. Kod kontrak pilihan ialah:BTC-7AUG20-12750-C。
| Perkara subjek | Tarikh Latihan | Harga Latihan | (Panggil/Letak) Pilihan |
|---|---|---|---|
| BTC | 7AUG20 | 12750 | C |
| Bitcoin | Tarikh latihan: 7 Ogos 2020 | Harga latihan 12750 | Pilihan Panggilan |
| BTC | 7AUG20 | 12750 | P |
| Bitcoin | Tarikh latihan: 7 Ogos 2020 | Harga latihan 12750 | Pilihan Letak |
Operasi penetapan kontrak dan mendapatkan kedudukan adalah sama seperti niaga hadapan mata wang digital.
Sediakan kontrak:exchange.SetContractType("BTC-7AUG20-12750-C")
Dapatkan jawatan:var pos = exchange.GetPosition()
Harga kontrak opsyen ialah premium kontrak opsyen, dan pembeli opsyen perlu membayar premium kepada penjual opsyen. Pembeli mendapat hak untuk melaksanakan pilihan, dan penjual mempunyai kewajipan untuk melaksanakan pilihan. Kontrak opsyen boleh didagangkan (cth., menutup kedudukan, menyelesaikan obligasi) sebelum ia dilaksanakan.
Jual pilihan panggilan dan beli tempat.
/*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)
}
}

Pilihan boleh memberikan tahap perlindungan lindung nilai tertentu untuk aset yang dibeli secara spot. Ia biasanya digunakan apabila anda optimis tentang tempat itu dan bersedia untuk memegang tempat itu. Risiko terletak pada penurunan harga spot Walaupun opsyen boleh menebus kerugian spot tertentu pada tahap tertentu, jika kerugian melebihi premium opsyen, kerugian bersih akan berlaku.
Di samping itu, kecairan pasaran pilihan mata wang digital secara amnya adalah lemah, dan kadangkala sukar untuk mencari rakan niaga. Perkara ini juga perlu difikirkan.
Begitu juga, kita boleh menggantikan tempat dengan niaga hadapan, kodnya adalah seperti 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)
}
}
Ujian belakang ditunjukkan dalam rajah:

Niaga hadapan boleh mengurangkan modal yang diduduki berbanding spot, tetapi risikonya lebih tinggi sedikit daripada spot.
Di samping itu, terdapat banyak kombinasi perdagangan pilihan lain:
Mereka yang berminat boleh mengkajinya dalam sistem backtesting.