
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.
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。
| Assunto | Data do exercício | Preço do Exercício | Opções (Call/Put) |
|---|---|---|---|
| BTC | 7AUG20 | 12750 | C |
| Bitcoin | Data do exercício: 7 de agosto de 2020 | Preço de exercício 12750 | Opção de compra |
| BTC | 7AUG20 | 12750 | P |
| Bitcoin | Data do exercício: 7 de agosto de 2020 | Preço de exercício 12750 | Opçã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.
Venda opções de compra e compre à vista.
/*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)
}
}

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

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:
Os interessados podem estudá-lo no sistema de backtesting.