암호화폐 옵션 전략 백테스팅에 대한 예비 연구
최근 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()
옵션 계약의 가격은 옵션 계약의 프리미엄이며, 옵션 매수자는 옵션 매도자에게 프리미엄을 지불해야 합니다. 매수자는 옵션을 행사할 권리를 얻고, 매도자는 옵션을 행사할 의무를 집니다. 옵션 계약은 행사되기 전에 거래(예: 포지션 종료, 의무 결제)가 가능합니다.
일반적인 옵션 거래 조합을 예로 들어 보겠습니다.
콜 옵션을 매도하고 현물 옵션을 매수합니다.
javascript
/*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)
}
}
옵션은 현물 매수 자산에 대해 일정 수준의 헤지 보호를 제공할 수 있습니다. 이는 일반적으로 해당 장소에 대해 낙관적이며 그 장소를 유지할 의향이 있을 때 사용됩니다. 위험은 현물 가격 하락에 있습니다. 옵션은 어느 정도 현물 손실을 메울 수 있지만 손실이 옵션 프리미엄을 초과하면 순손실이 발생합니다.
또한 디지털 통화 옵션 시장의 유동성은 일반적으로 부족하며, 때로는 거래상대방을 찾기 어려울 수도 있습니다. 이 점 역시 고려해야 할 사항입니다.
마찬가지로, 현물을 선물로 대체할 수 있으며 코드는 다음과 같습니다.
javascript
/*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)
}
}
선물은 현물과 비교했을 때 자본 점유를 줄일 수 있지만, 위험은 현물보다 약간 높습니다.
이 외에도 다양한 옵션 거래 조합이 있습니다.
- 불 콜 스프레드
- 베어 풋 스프레드
관심 있는 분들은 백테스팅 시스템을 통해 연구해 보실 수 있습니다.
- 1



