avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

암호화폐 옵션 전략 백테스팅에 대한 예비 연구

만든 날짜: 2020-08-11 14:21:28, 업데이트 날짜: 2024-12-10 10:10:30
comments   0
hits   2220

암호화폐 옵션 전략 백테스팅에 대한 예비 연구

암호화폐 옵션 전략 백테스팅에 대한 예비 연구

최근 Inventor Quantitative Trading Platform은 디지털 통화 옵션 백테스팅을 지원하기 위해 백테스팅 시스템을 업그레이드했습니다.Deribit거래소의 일부 옵션 데이터입니다. 따라서 우리는 옵션 거래에 대해 배우고 전략을 검증하는 데 더 나은 도구를 갖게 되었습니다.

Deribit 옵션 백테스팅

백테스팅 시스템에서 정의됨Deribit옵션은 유럽식이며, 한 계약은 1BTC의 가치를 갖습니다. 옵션 계약 코드는 다음과 같습니다.BTC-7AUG20-12750-C

소재 운동 날짜 행사가격 (콜/풋) 옵션
BTC 7AUG20 12750 C
비트코인 행사일자 : 2020년 8월 7일 행사가격 12750 콜 옵션
BTC 7AUG20 12750 P
비트코인 행사일자 : 2020년 8월 7일 행사가격 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)
    }
}

백테스팅은 그림에 표시되어 있습니다. 암호화폐 옵션 전략 백테스팅에 대한 예비 연구

선물은 현물과 비교했을 때 자본 점유를 줄일 수 있지만, 위험은 현물보다 약간 높습니다.

이 외에도 다양한 옵션 거래 조합이 있습니다.

  • 불 콜 스프레드
  • 베어 풋 스프레드

관심 있는 분들은 백테스팅 시스템을 통해 연구해 보실 수 있습니다.