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

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

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

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

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

eexchange.GetOrder(id)Você pode consultar as informações do pedido.
O mesmo método é usado para cancelamento de pedidos.CancelOrderFunção, assim como cancelar uma ordem na negociação de futuros.

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

Execute o código para obter:

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:

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

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