avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Une étude préliminaire sur les stratégies de backtesting des options de crypto-monnaie

Créé le: 2020-08-11 14:21:28, Mis à jour le: 2024-12-10 10:10:30
comments   0
hits   2226

Une étude préliminaire sur les stratégies de backtesting des options de crypto-monnaie

Une étude préliminaire sur les stratégies de backtesting des options de crypto-monnaie

Récemment, la plateforme de trading quantitative Inventor a mis à niveau son système de backtesting pour prendre en charge le backtesting des options de monnaie numérique.DeribitQuelques données d’options de la bourse. Nous disposons donc de meilleurs outils pour en savoir plus sur le trading d’options et valider les stratégies.

Backtesting des options Deribit

Défini dans le système de backtestingDeribitLes options sont de style européen et un contrat vaut 1 BTC. Le code du contrat d’option est :BTC-7AUG20-12750-C

Sujet Date de l’exercice Prix ​​d’exercice Options (d’achat/de vente)
BTC 7AUG20 12750 C
Bitcoin Date de l’exercice : 7 août 2020 Prix ​​d’exercice 12750 Option d’achat
BTC 7AUG20 12750 P
Bitcoin Date de l’exercice : 7 août 2020 Prix ​​d’exercice 12750 Option de vente

Les opérations de définition de contrats et d’obtention de positions sont les mêmes que celles des contrats à terme sur devises numériques. Configurer le contrat :exchange.SetContractType("BTC-7AUG20-12750-C") Obtenir des positions:var pos = exchange.GetPosition()

Le prix d’un contrat d’option est la prime d’un contrat d’option, et l’acheteur de l’option doit payer la prime au vendeur de l’option. L’acheteur obtient le droit d’exercer l’option et le vendeur a l’obligation d’exercer l’option. Un contrat d’option peut être négocié (par exemple, clôturer une position, régler une obligation) avant d’être exercé.

Combinaisons courantes de trading d’options à titre d’exemple

Vendez des options d’achat et achetez au comptant.

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

Une étude préliminaire sur les stratégies de backtesting des options de crypto-monnaie

Les options peuvent fournir un certain degré de protection de couverture pour les actifs achetés au comptant. Il est généralement utilisé lorsque vous êtes optimiste quant à la place et que vous êtes prêt à la conserver. Le risque réside dans la baisse des prix spot. Bien que les options puissent compenser dans une certaine mesure certaines pertes spot, si les pertes dépassent la prime de l’option, une perte nette se produira.

De plus, la liquidité du marché des options sur devises numériques est généralement faible et il est parfois difficile de trouver des contreparties. C’est également quelque chose qui doit être pris en compte.

De même, nous pouvons remplacer le spot par des futures, le code est le suivant :

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

Le backtesting est illustré dans la figure : Une étude préliminaire sur les stratégies de backtesting des options de crypto-monnaie

Les contrats à terme peuvent réduire le capital occupé par rapport au spot, mais le risque est légèrement plus élevé que celui du spot.

En outre, il existe de nombreuses autres combinaisons de trading d’options :

  • Spread d’appel haussier
  • Bear Put Spread

Ceux qui sont intéressés peuvent l’étudier dans le système de backtesting.