4
Подписаться
1271
Подписчики

Предварительное исследование по бэктестингу стратегий опционов на криптовалюту

Создано: 2020-08-11 14:21:28, Обновлено: 2024-12-10 10:10:30
comments   0
hits   2220

Предварительное исследование по бэктестингу стратегий опционов на криптовалюту

Предварительное исследование по бэктестингу стратегий опционов на криптовалюту

Недавно платформа количественной торговли Inventor обновила свою систему бэктестинга для поддержки бэктестинга опционов на цифровые валюты.DeribitНекоторые данные по опционам с биржи. Таким образом, у нас есть более совершенные инструменты для изучения торговли опционами и проверки стратегий.

Тестирование опционов Deribit

Определено в системе бэктестингаDeribitОпционы соответствуют европейскому стилю, стоимость одного контракта составляет 1 BTC. Код опционного контракта:BTC-7AUG20-12750-C

Тема Дата выполнения Цена упражнения (Колл/Пут) опционы
BTC 7AUG20 12750 C
Биткойн Дата исполнения: 7 августа 2020 г. Цена исполнения 12750 Опцион колл
BTC 7AUG20 12750 P
Биткойн Дата исполнения: 7 августа 2020 г. Цена исполнения 12750 Опцион пут

Операции по заключению контрактов и получению позиций аналогичны операциям по фьючерсам на цифровые валюты. Заключите договор:exchange.SetContractType("BTC-7AUG20-12750-C") Получить позиции:var pos = exchange.GetPosition()

Цена опционного контракта — это премия опционного контракта, и покупатель опциона должен уплатить премию продавцу опциона. Покупатель получает право реализовать опцион, а продавец обязан реализовать опцион. Опционный контракт может быть продан (например, закрыть позицию, урегулировать обязательство) до его исполнения.

Пример распространенных комбинаций опционной торговли

Продайте опционы колл и купите спот.

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

Предварительное исследование по бэктестингу стратегий опционов на криптовалюту

Опционы могут обеспечить определенную степень хеджирования для активов, приобретенных на спотовых рынках. Обычно он используется, когда вы настроены оптимистично в отношении позиции и готовы ее удерживать. Риск заключается в снижении спотовых цен. Хотя опционы могут компенсировать определенные спотовые потери в определенной степени, если потери превышают опционную премию, возникнет чистый убыток.

Кроме того, ликвидность рынка опционов на цифровые валюты, как правило, низкая, и порой бывает сложно найти контрагентов. Это также необходимо учитывать.

Аналогично мы можем заменить спот на фьючерс, код будет следующим:

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

Бэктестинг показан на рисунке: Предварительное исследование по бэктестингу стратегий опционов на криптовалюту

Фьючерсы могут сократить занимаемый капитал по сравнению со спотом, но риск немного выше, чем со спотом.

Кроме того, существует множество других комбинаций опционной торговли:

  • Спред по бычьему колл-опциону
  • Медвежий пут-спред

Желающие могут изучить это в системе бэктестинга.