Type/to search
8
Follow
1364
Followers
Transformando a API Deribit Futures para se adequar à negociação quantitativa de opções
Original
Created 2019-10-29 14:57:54  Updated 2024-12-16 11:24:47
 0
 3119

img

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 compraVender uma opção de vendaBull Call SpreadBull Put Spread
--Comprar opção de vendaVenda de uma opção de compraSpread de chamada de baixaBear Put Spread
Estratégias de volatilidade:Vender StraddleVender Straddle largoComprar StraddleCompre Straddle largo
Estratégias de hedge:Chamada CobertaColocação CobertaChamadas de proteçãoColocação protetora
--Limite Duplo LongoLimite 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.
img

Existem 4 conceitos básicos que você precisa entender para negociar opções:
img

  • 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:
img
Você pode ver que o preço é consistente com o do disco de simulação.
img

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

img

A ordem recém-emitida também aparece no quadro de negociação simulado.
img

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.
img

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
img

Execute o código para obter:
img

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

ChamarLog($.GetPosition(exchange))Você pode imprimir as informações da posição.
img
img

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

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