avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

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

Criado em: 2020-08-11 14:21:28, atualizado em: 2024-12-10 10:10:30
comments   0
hits   2220

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

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

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.

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

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

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

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: Um estudo preliminar sobre estratégias de opções de criptomoeda de backtesting

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.