avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

Criado em: 2019-10-29 14:57:54, atualizado em: 2024-12-16 11:24:47
comments   0
hits   2741

Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

Já existem muitas bolsas de futuros de moeda digital, mas como derivativos de futuros, negociação de opções de moeda digital, não há muitas bolsas no mercado. As bolsas que dão suporte à negociação de opções incluem Deribit e BitMEX. No campo da negociação quantitativa, também existem muitas estratégias para negociação de opções, como as estratégias de opções mencionadas em alguns materiais pesquisados:

tipo
Estratégia direcional: Comprando uma opção de compra Vender uma opção de venda Bull Call Spread Bull Put Spread
Comprar opção de venda Venda de uma opção de compra Spread de chamada de baixa Bear Put Spread
Estratégias de volatilidade: Vender Straddle Vender Straddle largo Comprar Straddle Compre Straddle largo
Estratégias de hedge: Chamada Coberta Colocação Coberta Chamadas de proteção Colocação protetora
Limite Duplo Longo Limite duplo de posição curta

Citado deconectar

Para escrever uma estratégia de negociação de opções, você ainda precisa estabelecer uma base sólida primeiro e estar familiarizado com operações básicas, como colocar ordens, obter informações de mercado, cancelar ordens e obter posições. A escrita de estratégias ainda usa a Plataforma de Negociação Quantitativa Inventor, embora a Plataforma de Negociação Quantitativa Inventor atualmente suporte principalmente negociação de moeda para moeda, negociação de contratos e negociação alavancada no campo de negociação quantitativa de moeda digital. Não há muitas informações relacionadas à negociação de opções. Abaixo, tomaremos a bolsa “Deribit” como exemplo para apresentar como usar a Inventor Quantitative Trading Platform para jogar negociação de opções de moeda digital.

Informações relacionadas ao Deribit

Documentação da API: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument Disco de simulação: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

Você pode registrar uma conta no site da plataforma de simulação, habilitar a API KEY e obter a API KEY. A configuração na plataforma de negociação quantitativa Inventor é a mesma que a configuração de uma conta real. Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

Existem 4 conceitos básicos que você precisa entender para negociar opções: Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

  • Data de exercício: Data em que as partes compradas e vendidas da opção concluem a entrega do contrato de opção.
  • Preço de exercício: Na data de exercício, as partes comprada e vendida da opção concluem a entrega do contrato de opção ao preço de exercício.
  • Premium: Este é o preço de uma opção. Como os futuros spot, as cotações incluem um preço de compra e um preço de venda. Vale ressaltar que, como a liquidez das opções é geralmente pior do que a dos futuros e à vista, o spread entre compra e venda pode ser grande, portanto, atenção especial deve ser dada aqui! Após a conclusão da transação, o preço da transação é o custo da opção longa. Neste momento, a posição longa obtém o direito (o direito de exercer a opção); e a posição curta da opção, como a parte que recebe o prêmio , tem uma obrigação adicional. Uma vez que a posição longa solicita o exercício do direito, a posição curta deve cooperar. .
  • Opções de compra e venda: Uma opção de compra é um direito que o detentor da opção longa tem de pedir ao detentor da opção curta para comprar uma certa quantidade de Bitcoin a um certo preço de exercício em uma certa data de exercício, e o detentor da opção curta tem a obrigação de cooperar com o detentor da opção longa titular. Uma opção de venda é um direito que o titular da opção longa tem de pedir ao titular da opção curta para comprar uma certa quantidade de Bitcoin a um certo preço de exercício em uma certa data de exercício. Em uma certa data de exercício, o vendedor a descoberto é obrigado a vender os bitcoins fornecidos a um determinado preço de exercício, e o vendedor a descoberto tem a obrigação de cooperar com o vendedor a longo prazo.

Informações de mercado

De acordo com a documentação da API da Deribit Exchange, a interface de mercado da Deribit apenas transmite os dados para acessar informações do mercado de futuros ou opções.instrument_nameOs parâmetros são diferentes (instrument_name é definido pela função SetContractType), então basicamente você pode usar a interface para obter informações de mercado.GetTickerObtenha orçamentos para opções.

Claro, o pacote padrão da Inventor Quantitative Trading Platform é o mercado real da Deribit Exchange. Primeiro, precisamos mudar para o mercado de simulação e usar o seguinte código:

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

Então, atualmente configuramos um contrato de opçãoBTC-27DEC19-7000-P: Esta é uma opção de venda com data de exercício: 27DEZ19 e preço de exercício: 7000

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

Então pegue. Nós escrevemos juntos, rodamos o código e testamos para obter as informações de mercado deste contrato de opção.

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

Usar ferramentas de depuração pode ser muito conveniente para testar: Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções Você pode ver que o preço é consistente com o do disco de simulação. Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

Os métodos de chamada de outras interfaces de mercado são os mesmos e não serão repetidos aqui. Deve-se notar que: A negociação de opções não é muito ativa. Às vezes, não haverá ordens de compra ou venda no mercado. Neste momento, a camada inferior da Plataforma de Negociação Quantitativa do Inventor detectará um valor de 0 e relatará um erro. Você pode usarSetErrorFilter("Invalid ticker")Ignore este erro e useGetRawJSONA função obtém as informações originais do mercado e encapsula os dados. Aqui escrevo um exemplo para atingir funções semelhantes:

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
}

Ao ligar escreva:Log($.GetTicker(exchange))

Faça um pedido

A operação de colocação de ordens é muito simples. Comparado com a negociação de futuros, há apenas duas direções: comprar e vender. Também useSell,BuyOrdem das funções.

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

Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

A ordem recém-emitida também aparece no quadro de negociação simulado. Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

eexchange.GetOrder(id)Você pode consultar as informações do pedido.

Cancelar pedido

O mesmo método é usado para cancelamento de pedidos.CancelOrderFunção, assim como cancelar uma ordem na negociação de futuros. Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

Obtenha os ativos disponíveis na conta

Obter os ativos disponíveis em uma conta é exatamente o mesmo que na negociação de futuros. Ligue diretamenteGetAccountFunção.

Exibir na página de câmbio simulado Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

Execute o código para obter: Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

Obter informações de posição

Para manter posições, você não pode usar diretamente o pacoteGetPositionfunção, porque por padrão as transações Deribit são transações futuras, não transações de opções, e somente esta função pode ser usada para obter posições futuras. Portanto, devemos encapsular a função de obter posições de opções por nós mesmos.

A interface de função para obter posições na documentação da API: Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

$.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
}

ChamarLog($.GetPosition(exchange))Você pode imprimir as informações da posição. Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções

Dessa forma, as operações básicas podem ser realizadas, e o resto é estudar as estratégias de negociação de opções.