
최근 Inventor Quantitative Trading Platform은 디지털 통화 옵션 백테스팅을 지원하기 위해 백테스팅 시스템을 업그레이드했습니다.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)
}
}
백테스팅은 그림에 표시되어 있습니다.

선물은 현물과 비교했을 때 자본 점유를 줄일 수 있지만, 위험은 현물보다 약간 높습니다.
이 외에도 다양한 옵션 거래 조합이 있습니다.
관심 있는 분들은 백테스팅 시스템을 통해 연구해 보실 수 있습니다.