
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.
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.
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)
}
}

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:

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:
Bagi yang berminat dapat mempelajarinya di sistem backtesting.