avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Eine vorläufige Studie zum Backtesting von Optionsstrategien für Kryptowährungen

Erstellt in: 2020-08-11 14:21:28, aktualisiert am: 2024-12-10 10:10:30
comments   0
hits   2220

Eine vorläufige Studie zum Backtesting von Optionsstrategien für Kryptowährungen

Eine vorläufige Studie zum Backtesting von Optionsstrategien für Kryptowährungen

Vor Kurzem hat die Inventor Quantitative Trading Platform ihr Backtesting-System aktualisiert, um das Backtesting von digitalen Währungsoptionen zu unterstützen.DeribitEinige Optionsdaten von der Börse. Daher verfügen wir über bessere Tools, um den Optionshandel zu erlernen und Strategien zu validieren.

Deribit Optionen Backtesting

Im Backtesting-System definiertDeribitDie Optionen sind im europäischen Stil und ein Kontrakt ist 1 BTC wert. Der Optionsvertragscode lautet:BTC-7AUG20-12750-C

Gegenstand Ausübungsdatum Ausübungspreis (Call/Put) Optionen
BTC 7AUG20 12750 C
Bitcoin Ausübungsdatum: 7. August 2020 Ausübungspreis 12750 Call-Option
BTC 7AUG20 12750 P
Bitcoin Ausübungsdatum: 7. August 2020 Ausübungspreis 12750 Put-Option

Die Vorgänge zum Aufsetzen von Verträgen und Erhalten von Positionen sind dieselben wie bei digitalen Währungs-Futures. So richten Sie den Vertrag ein:exchange.SetContractType("BTC-7AUG20-12750-C") Positionen abrufen:var pos = exchange.GetPosition()

Der Preis eines Optionskontrakts ist die Prämie eines Optionskontrakts, und der Optionskäufer muss die Prämie an den Optionsverkäufer zahlen. Der Käufer erhält das Recht, die Option auszuüben, und der Verkäufer hat die Pflicht, die Option auszuüben. Ein Optionskontrakt kann gehandelt werden (z. B. durch Schließen einer Position, Begleichen einer Verpflichtung), bevor er ausgeübt wird.

Nehmen Sie als Beispiel eine gängige Optionshandelskombination

Call-Optionen verkaufen und Spot kaufen.

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

Eine vorläufige Studie zum Backtesting von Optionsstrategien für Kryptowährungen

Optionen können einen gewissen Grad an Absicherungsschutz für per Spot gekaufte Vermögenswerte bieten. Es wird im Allgemeinen verwendet, wenn Sie hinsichtlich des Spots optimistisch sind und bereit sind, den Spot zu halten. Das Risiko liegt im Rückgang der Spotpreise. Zwar können Optionen gewisse Spotverluste bis zu einem gewissen Grad ausgleichen, doch wenn die Verluste die Optionsprämie übersteigen, entsteht ein Nettoverlust.

Darüber hinaus ist die Liquidität des Marktes für digitale Währungsoptionen im Allgemeinen gering und manchmal ist es schwierig, Gegenparteien zu finden. Auch dies muss berücksichtigt werden.

In ähnlicher Weise können wir Spot durch Futures ersetzen. Der Code lautet wie folgt:

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

Das Backtesting ist in der Abbildung dargestellt: Eine vorläufige Studie zum Backtesting von Optionsstrategien für Kryptowährungen

Futures können den Kapitaleinsatz im Vergleich zu Spot reduzieren, das Risiko ist jedoch etwas höher als bei Spot.

Darüber hinaus gibt es zahlreiche weitere Kombinationen für den Optionshandel:

  • Bull-Call-Spread
  • Bären-Put-Spread

Interessierte können dies im Backtesting-System studieren.