Type/to search
8
Follow
1364
Followers
Un estudio preliminar sobre el backtesting de estrategias de opciones de criptomonedas
Discussions
Created 2020-08-11 14:21:28  Updated 2024-12-10 10:10:30
 0
 2583

img

Un estudio preliminar sobre el backtesting de estrategias de opciones de criptomonedas

Recientemente, la plataforma de comercio cuantitativo Inventor actualizó su sistema de backtesting para admitir el backtesting de opciones de moneda digital.DeribitAlgunos datos de opciones del exchange. Por lo tanto, tenemos mejores herramientas para aprender sobre el comercio de opciones y validar estrategias.

Prueba retrospectiva de opciones de Deribit

Definido en el sistema de backtestingDeribitLas opciones son de estilo europeo y cada contrato vale 1 BTC. El código del contrato de opción es:BTC-7AUG20-12750-C

TemaFecha del ejercicioPrecio de ejercicioOpciones (call/put)
BTC7AUG2012750C
BitcoinFecha de ejercicio: 7 de agosto de 2020Precio de ejercicio 12750Opción de compra
BTC7AUG2012750P
BitcoinFecha de ejercicio: 7 de agosto de 2020Precio de ejercicio 12750Opción de venta

Las operaciones de fijación de contratos y obtención de posiciones son las mismas que las de los futuros de monedas digitales.
Establecer el contrato:exchange.SetContractType("BTC-7AUG20-12750-C")
Obtener posiciones:var pos = exchange.GetPosition()

El precio de un contrato de opción es la prima de un contrato de opción, y el comprador de la opción debe pagar la prima al vendedor de la opción. El comprador obtiene el derecho a ejercer la opción y el vendedor tiene la obligación de ejercer la opción. Un contrato de opción puede negociarse (por ejemplo, cerrando una posición, liquidando una obligación) antes de ejercerse.

Combinaciones comunes de negociación de opciones como ejemplo

Vender opciones de compra y comprar al contado.

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

img

Las opciones pueden proporcionar un cierto grado de protección de cobertura para los activos comprados al contado. Generalmente se utiliza cuando uno se siente optimista sobre el puesto y está dispuesto a mantenerlo. El riesgo reside en la caída de los precios spot. Aunque las opciones pueden compensar ciertas pérdidas spot hasta cierto punto, si las pérdidas superan la prima de la opción, se producirá una pérdida neta.

Además, la liquidez del mercado de opciones de moneda digital es generalmente pobre y a veces es difícil encontrar contrapartes. Esto también es algo que hay que tener en cuenta.

De manera similar, podemos reemplazar el spot por futuros, el código es el siguiente:

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

El backtesting se muestra en la figura:
img

Los futuros pueden reducir el capital ocupado en comparación con el spot, pero el riesgo es ligeramente mayor que el spot.

Además, existen muchas otras combinaciones de opciones comerciales:

  • Spread de compra de opciones alcistas
  • Spread de venta bajista

Los interesados ​​podrán estudiarlo en el sistema de backtesting.

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)