avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

Creado el: 2019-10-29 14:57:54, Actualizado el: 2024-12-16 11:24:47
comments   0
hits   2741

Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

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 compra Venta de una opción de venta Spread de compra de opciones alcistas Spread de venta alcista
Comprar opción de venta Venta de una opción de compra Spread de compra de opciones bajistas Spread de venta bajista
Estrategias de volatilidad: Venta de straddle Venta de Straddle ancho Comprar Straddle Comprar Straddle ancho
Estrategias de cobertura: Llamada cubierta Opción de venta cubierta Llamadas de protección Póngalo protector
Límite doble largo Posició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. Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

Hay 4 conceptos básicos que debes comprender para operar con opciones: Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

  • 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: Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones Puedes ver que el precio es consistente con el del disco de simulación. Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

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

Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

La orden recién realizada también aparece en el tablero de negociación simulado. Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

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. Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

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 Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

Ejecute el código para obtener: Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

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: Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

$.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. Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones Transformación de la API de futuros de Deribit para adecuarla al trading cuantitativo de opciones

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