Type/to search
8
Follow
1364
Followers
Une étude préliminaire sur les stratégies de backtesting des options de crypto-monnaie
Discussions
Created 2020-08-11 14:21:28  Updated 2024-12-10 10:10:30
 0
 2583

img

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

SujetDate de l'exercicePrix ​​d'exerciceOptions (d'achat/de vente)
BTC7AUG2012750C
BitcoinDate de l'exercice : 7 août 2020Prix ​​d'exercice 12750Option d'achat
BTC7AUG2012750P
BitcoinDate de l'exercice : 7 août 2020Prix ​​d'exercice 12750Option 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.

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

img

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 :

javascript
/*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 :
img

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.

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)