Предварительное исследование по тестированию стратегии опционов на цифровую валюту

Автор:Доброта, Создано: 2020-08-23 10:53:41, Обновлено: 2023-10-08 19:56:47

img

Предварительное исследование по тестированию стратегии опционов на цифровую валюту

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

Дерибит опционы backtest

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

Тема Дата осуществления Цены на осуществление (Call/Put) Опция
BTC 7AUG20 12750 В
Биткойн Упражнение 7 августа 2020 года Цена осуществления 12750 Варианты обращения
BTC 7AUG20 12750 П
Биткойн Упражнение 7 августа 2020 года Цена осуществления 12750 Опция " Положить "

Операции, такие как заключение контрактов и получение позиций, аналогичны фьючерсам на цифровую валюту. Контракт набор: exchange.SetContractType ((BTC-7AUG20-12750-C) Получить положение: var pos = обмен.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("Spots", spotProfit)
        $.PlotLine("Options", optionProfit)
        Sleep(500)
    }
}

img

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

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

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

/*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("Futures", futuresProfit)
        $.PlotLine("Options", optionProfit)
        Sleep(500)
    }
}

img

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

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

  • Спред опциона на выкупbull call spread
  • Опцион Bear Put РаспространениеBear Put Spread

Те, кто заинтересован, могут изучить его в системе обратного теста.


Связанные

Больше