Type/to search
8
Follow
1364
Followers
Um estudo preliminar sobre estratégias de opções de criptomoeda de backtesting
Discussions
Created 2020-08-11 14:21:28  Updated 2024-12-10 10:10:30
 0
 2581

img

Um estudo preliminar sobre estratégias de opções de criptomoeda de backtesting

Recentemente, a plataforma de negociação quantitativa Inventor atualizou seu sistema de backtesting para oferecer suporte ao backtesting de opções de moeda digital.DeribitAlguns dados de opções da bolsa. Portanto, temos melhores ferramentas para aprender sobre negociação de opções e validar estratégias.

Opções de Backtesting Deribit

Definido no sistema de backtestingDeribitAs opções são no estilo europeu e um contrato vale 1 BTC. O código do contrato de opção é:BTC-7AUG20-12750-C

AssuntoData do exercícioPreço do ExercícioOpções (Call/Put)
BTC7AUG2012750C
BitcoinData do exercício: 7 de agosto de 2020Preço de exercício 12750Opção de compra
BTC7AUG2012750P
BitcoinData do exercício: 7 de agosto de 2020Preço de exercício 12750Opção de venda

As operações de definição de contratos e obtenção de posições são as mesmas dos futuros de moedas digitais.
Configure o contrato:exchange.SetContractType("BTC-7AUG20-12750-C")
Obter posições:var pos = exchange.GetPosition()

O preço de um contrato de opção é o prêmio de um contrato de opção, e o comprador da opção precisa pagar o prêmio ao vendedor da opção. O comprador obtém o direito de exercer a opção, e o vendedor tem a obrigação de exercer a opção. Um contrato de opção pode ser negociado (por exemplo, fechando uma posição, liquidando uma obrigação) antes de ser exercido.

Tomemos como exemplo uma combinação comum de negociação de opções

Venda opções de compra e compre à vista.

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

As opções podem fornecer um certo grau de proteção de hedge para ativos comprados à vista. Geralmente é usado quando você está otimista sobre o local e está disposto a mantê-lo. O risco está no declínio dos preços spot. Embora as opções possam compensar certas perdas spot até certo ponto, se as perdas excederem o prêmio da opção, ocorrerá uma perda líquida.

Além disso, a liquidez do mercado de opções de moeda digital é geralmente baixa e, às vezes, é difícil encontrar contrapartes. Isso também é algo que precisa ser considerado.

Da mesma forma, podemos substituir spot por futuros, o código é o seguinte:

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

O backtesting é mostrado na figura:
img

Os futuros podem reduzir o capital ocupado em comparação ao spot, mas o risco é ligeiramente maior.

Além disso, existem muitas outras combinações de negociação de opções:

  • Chamada de alta spread
  • Bear Put Spread

Os interessados ​​podem estudá-lo no sistema de backtesting.

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