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

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 :

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 :
Ceux qui sont intéressés peuvent l’étudier dans le système de backtesting.