avatar of 发明者量化-小小梦 发明者量化-小小梦
フォロー ダイレクトメッセージ
4
フォロー
1271
フォロワー

暗号通貨オプション戦略のバックテストに関する予備的研究

作成日:: 2020-08-11 14:21:28, 更新日:: 2024-12-10 10:10:30
comments   0
hits   2220

暗号通貨オプション戦略のバックテストに関する予備的研究

暗号通貨オプション戦略のバックテストに関する予備的研究

最近、Inventor Quantitative Trading Platform は、デジタル通貨オプションのバックテストをサポートするためにバックテスト システムをアップグレードしました。Deribit取引所からのオプションデータの一部。したがって、オプション取引について学び、戦略を検証するためのより優れたツールがあります。

Deribit オプションバックテスト

バックテストシステムで定義Deribitオプションはヨーロピアンスタイルで、1契約の価値は1BTCです。オプション契約コードは次のとおりです。BTC-7AUG20-12750-C

主題 行使日 行使価格 (コール/プット)オプション
BTC 7AUG20 12750 C
ビットコイン 行使日: 2020年8月7日 行使価格 12750 コールオプション
BTC 7AUG20 12750 P
ビットコイン 行使日: 2020年8月7日 行使価格 12750 プットオプション

契約の設定やポジションの取得などの操作は、デジタル通貨先物と同様です。 契約を設定します。exchange.SetContractType("BTC-7AUG20-12750-C") ポジションを取得:var pos = exchange.GetPosition()

オプション契約の価格はオプション契約のプレミアムであり、オプションの買い手はオプションの売り手にプレミアムを支払う必要があります。買い手はオプションを行使する権利を取得し、売り手はオプションを行使する義務を負います。オプション契約は、行使される前に取引(ポジションのクローズ、義務の決済など)することができます。

一般的なオプション取引の組み合わせの例

コールオプションを売り、スポットを買う。

/*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)
    }
}

暗号通貨オプション戦略のバックテストに関する予備的研究

オプションは、スポットで購入した資産に対して、ある程度のヘッジ保護を提供できます。通常、そのスポットについて楽観的で、そのスポットを保持する意思がある場合に使用されます。リスクはスポット価格の下落にあります。オプションはスポット損失をある程度補うことができますが、損失がオプションプレミアムを上回った場合は、純損失が発生します。

さらに、デジタル通貨オプション市場の流動性は一般的に低く、取引相手を見つけることが難しい場合もあります。これも考慮する必要があるものです。

同様に、スポットを先物に置き換えることもできます。コードは次のようになります。

/*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)
    }
}

バックテストは図に示されています: 暗号通貨オプション戦略のバックテストに関する予備的研究

先物はスポットに比べて占有資本を減らすことができますが、リスクはスポットよりもわずかに高くなります。

さらに、オプション取引の組み合わせは他にもたくさんあります。

  • ブルコールスプレッド
  • ベア・プット・スプレッド

興味のある方はバックテストシステムで勉強することができます。