Type/to search
8
Follow
1364
Followers
Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones
Original
Created 2019-10-29 14:57:54  Updated 2024-12-16 11:24:47
 0
 3119

img

Ya existen muchas bolsas de futuros de divisas digitales, pero como derivado de futuros, negociación de opciones de divisas digitales, no hay muchas bolsas en el mercado. Las bolsas que admiten la negociación de opciones incluyen Deribit y BitMEX. En el campo del trading cuantitativo, también existen muchas estrategias para el trading de opciones, como las estrategias de opciones mencionadas en algunos materiales buscados:

tipo
Estrategia direccional:Comprar una opción de compraVenta de una opción de ventaSpread de compra de opciones alcistasSpread de venta alcista
--Comprar opción de ventaVenta de una opción de compraSpread de compra de opciones bajistasSpread de venta bajista
Estrategias de volatilidad:Venta de straddleVenta de Straddle anchoComprar StraddleComprar Straddle ancho
Estrategias de cobertura:Llamada cubiertaOpción de venta cubiertaLlamadas de protecciónPóngalo protector
--Límite doble largoPosición corta de doble límite----

Citado deconectar

Para escribir una estrategia de negociación de opciones, primero es necesario sentar una base sólida y familiarizarse con operaciones básicas como realizar órdenes, obtener información del mercado, cancelar órdenes y obtener posiciones. La redacción de estrategias aún utiliza la plataforma de negociación cuantitativa Inventor, aunque actualmente esta admite principalmente el comercio de moneda a moneda, el comercio de contratos y el comercio apalancado en el campo del comercio cuantitativo de moneda digital. No hay mucha información relacionada con el comercio de opciones. A continuación, tomaremos el intercambio "Deribit" como ejemplo para presentar cómo utilizar la plataforma de comercio cuantitativo Inventor para operar con opciones de divisas digitales.

Información relacionada con Deribit

Documentación de la API: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Disco de simulación: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

Puede registrar una cuenta en el sitio web de la plataforma de simulación, habilitar la CLAVE API y obtener la CLAVE API. La configuración en la plataforma de comercio cuantitativo de Inventor es igual que la configuración de una cuenta real.
img

Hay 4 conceptos básicos que debes comprender para operar con opciones:
img

  • Fecha de ejercicio: La fecha en la que las partes largas y cortas de la opción completan la entrega del contrato de opción.
  • Precio de ejercicio: En la fecha de ejercicio, las partes largas y cortas de la opción completan la entrega del contrato de opción al precio de ejercicio.
  • Prima: es el precio de una opción. Al igual que los futuros al contado, las cotizaciones incluyen un precio de compra y un precio de venta.
    Vale la pena señalar que, dado que la liquidez de las opciones es generalmente peor que la de los futuros y el spot, el diferencial entre oferta y demanda puede ser grande, por lo que aquí se debe prestar especial atención. Una vez finalizada la operación, el precio de la misma es el coste de la opción larga. En este momento, la posición larga obtiene el derecho (el derecho a ejercer la opción); y la posición corta de la opción, como la parte que recibe la prima. , tiene una obligación adicional. Una vez que la posición larga solicita ejercer el derecho, la posición corta debe cooperar.
  • Opciones de compra y venta:
    Una opción de compra es un derecho que tiene el titular de la opción larga para pedirle al titular de la opción corta que compre una cierta cantidad de Bitcoin a un precio de ejercicio determinado en una fecha de ejercicio determinada, y el titular de la opción corta tiene la obligación de cooperar con el titular de la opción larga. titular. Una opción de venta es un derecho que tiene el titular de la opción larga de pedirle al titular de la opción corta que compre una cierta cantidad de Bitcoin a un precio de ejercicio determinado en una fecha de ejercicio determinada. En una fecha de ejercicio determinada, el vendedor en corto debe vender los bitcoins dados a un precio de ejercicio determinado, y el vendedor en corto tiene la obligación de cooperar con el vendedor en largo.

Información del mercado

Según la documentación de la API de Deribit Exchange, la interfaz de mercado de Deribit solo pasa los datos para acceder a la información del mercado de futuros u opciones.instrument_nameLos parámetros son diferentes (instrument_name se establece mediante la función SetContractType), por lo que básicamente puedes usar la interfaz para obtener información del mercado.GetTickerObtenga cotizaciones para las opciones.

Por supuesto, el paquete predeterminado de la plataforma de negociación cuantitativa Inventor es el mercado real de Deribit Exchange. Primero debemos cambiar al mercado de simulación y utilizar el siguiente código:

exchange.IO("base", "https://test.deribit.com")

Luego actualmente configuramos un contrato de opciónBTC-27DEC19-7000-P
Esta es una opción de venta con fecha de ejercicio: 27DEC19 y precio de ejercicio: 7000

exchange.SetContractType("BTC-27DEC19-7000-P")

Luego, consígalo. Lo escribimos juntos, ejecutamos el código y hacemos pruebas para obtener la información del mercado de este contrato de opción.

function main () { exchange.IO("base", "https://test.deribit.com") exchange.SetContractType("BTC-27DEC19-7000-P") var ticker = exchange.GetTicker() Log(ticker) }

El uso de herramientas de depuración puede resultar muy conveniente para probar:
img
Puedes ver que el precio es consistente con el del disco de simulación.
img

Los métodos de llamada de otras interfaces de mercado son los mismos y no se repetirán aquí. Cabe señalar que:
El comercio de opciones no es muy activo. A veces no habrá órdenes de compra ni órdenes de venta. En este momento, la capa inferior de la plataforma de comercio cuantitativo de Inventor detectará un valor de 0 e informará un error. Puede utilizarSetErrorFilter("Invalid ticker")Ignore este error y utiliceGetRawJSONLa función obtiene la información original del mercado y encapsula los datos. Aquí escribo un ejemplo para lograr funciones similares:

function init() { SetErrorFilter("Invalid ticker") } $.GetTicker = function(e) { var ticker = e.GetTicker() if (!ticker) { try { var ret = JSON.parse(e.GetRawJSON()) return { Info : ret, High : ret.result.stats.high, Low : ret.result.stats.low, Buy : ret.result.best_bid_price, Sell : ret.result.best_ask_price, Last : ret.result.last_price, Volume : ret.result.stats.volume, OpenInterest : 0, Time : new Date().getTime() } } catch (err) { Log(err) } } return ticker }

Al llamar escribe:Log($.GetTicker(exchange))

Realizar un pedido

La operación de colocación de órdenes es muy sencilla. En comparación con el trading de futuros, solo hay dos direcciones: compra y venta. Utilice tambiénSell,BuyOrden de funciones.

function main () { exchange.IO("base", "https://test.deribit.com") exchange.SetContractType("BTC-27DEC19-7000-P") var id = exchange.Buy(0.017, 1) Log(exchange.GetOrder(id)) }

img

La orden recién realizada también aparece en el tablero de negociación simulado.
img

yexchange.GetOrder(id)Puede consultar la información del pedido.

Cancelar pedido

El mismo método se utiliza para la cancelación de pedidos.CancelOrderFunción, igual que cancelar una orden en el comercio de futuros.
img

Obtenga los activos disponibles en la cuenta

La obtención de los activos disponibles en una cuenta es exactamente igual que en la negociación de futuros. Llamada directaGetAccountFunción.

Visualización en la página de intercambio simulado
img

Ejecute el código para obtener:
img

Obtener información de posición

Para mantener posiciones, no se puede utilizar directamente el paqueteGetPositionfunción, porque por defecto las transacciones de Deribit son transacciones de futuros, no transacciones de opciones, y solo esta función se puede utilizar para obtener posiciones de futuros.
Por lo tanto, debemos encapsular la función de obtener posiciones de opciones por nosotros mismos.

La interfaz de función para obtener posiciones en la documentación de la API:
img

$.GetPosition = function(e) { // /private/get_positions // currency , kind var positions = [] var currency = e.GetCurrency() var arr = currency.split("_") var baseCurrency = arr[0] try { var ret = e.IO("api", "GET", "/api/v2/private/get_positions", "currency=" + baseCurrency + "&kind=option") for (var i in ret.result) { if (ret.result[i].size == 0 || ret.result[i].direction == "zero") { continue } var pos = { Info : ret.result[i], Amount : ret.result[i].size, FrozenAmount : 0, Price : ret.result[i].average_price, Profit : ret.result[i].floating_profit_loss, MarginLevel : 0, Margin : 0, ContractType : ret.result[i].instrument_name, Type : ret.result[i].direction == "buy" ? ORDER_TYPE_BUY : ORDER_TYPE_SELL, } positions.push(pos) } } catch (err) { Log(err) positions = null } return positions }

LlamarLog($.GetPosition(exchange))Puede imprimir la información de la posición.
img
img

De esta manera se pueden realizar las operaciones básicas y el resto es estudiar las estrategias de trading con opciones.

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