Atualmente, existem muitas bolsas de futuros de moeda digital. No entanto, como derivado de futuros, há poucas bolsas no mercado para negociação de opções de moeda digital. Deribit e BitMEX suportam a negociação de opções. No campo da negociação quantitativa, a negociação de opções também tem uma variedade de estratégias, como as estratégias de opções mencionadas em alguns materiais pesquisados:
Tipo |
---|
Estratégia de direcção: |
– |
Estratégia de volatilidade: |
Estratégia de cobertura: |
– |
Citado deligação
Para preparar uma estratégia de negociação de opções, você precisa primeiro estabelecer uma base sólida e estar familiarizado com operações básicas, como colocar uma ordem, obter um ticker, cancelar uma ordem e obter posições. A escrita da estratégia ainda usa a plataforma de negociação FMZ Quant, embora a plataforma de negociação FMZ Quant atualmente suporte negociação de moeda-moeda, negociação de contratos e negociação de alavancagem no campo da negociação quantitativa de moeda digital. Não há muitas informações sobre negociação de opções.
Documento API:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentBot de simulação:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Você pode registrar uma conta no site do bot de simulação, abrir a API KEY e obter a API KEY.
Existem quatro conceitos básicos para entender sobre negociação de opções:
- Data de exercício: as partes longas e curtas da opção completam a entrega do contrato de opção nesta data. - Preço de exercício: na data de exercício, as partes longas e curtas da opção completam a entrega do contrato de opção ao preço de exercício. - Prémio: isto é, o preço das opções. tal como os spot e futuros, é cotado a um preço de oferta e a um preço de compra. Vale a pena notar que, uma vez que a liquidez das opções é geralmente menor do que a dos futuros e spot, a diferença de preço entre oferta e demanda pode ser grande, por isso deve-se prestar muita atenção aqui! Após a transação, o preço da transação é o custo das posições longas da opção, momento em que as posições longas obtêm o direito (o direito de exercer a opção); A opção curta, como a parte que recebe o prêmio, adiciona uma obrigação. Uma vez que a opção longa solicita exercer seus direitos, a opção curta deve cooperar. - Opções de compra: A chamada opção de compra significa que as posições longas da opção têm o direito de pedir às posições curtas da opção para comprar o determinado Bitcoin a um determinado preço de exercício em uma determinada data de exercício, e as posições curtas têm a obrigação de cooperar com as posições longas; A chamada opção put significa que o lado longo da opção tem o direito de pedir ao lado curto para vender o determinado Bitcoin a um determinado preço de exercício em uma determinada data de exercício, e o lado curto tem a obrigação de cooperar com o lado longo.
Depois de ler o documento API da Deribit Exchange, podemos ver que a interface de ticker da Deribit para acessar os tickers de futuros ou opções é simplesmente uma questão de passar em diferentesinstrument_name
Parâmetros (instrument_name é definido pela função SetContractType), então basicamente, você pode seguir a interfaceGetTicker
para obter o ticker das opções.
Naturalmente, a plataforma FMZ Quant Trading encapsula o bot real da Deribit Exchange por padrão.
exchange.IO("base", "https://test.deribit.com")
Depois, criamos o contrato de opção.BTC-27DEC19-7000-P
Atualmente.
O valor da opção de venda é o valor da opção de venda que se encontra em conformidade com o artigo 252.o, n.o 1, alínea a), do CRR.
exchange.SetContractType("BTC-27DEC19-7000-P")
Então, vamos escrever juntos e deixar o código executar para testar a obtenção do ticker para este 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)
}
É fácil de testar usando a ferramenta de depuração:
Pode-se ver que o preço é consistente com o do robô de simulação.
Outras interfaces de ticker são chamadas da mesma forma, o que não será repetido aqui.
A negociação de opções não é muito ativa. Às vezes não há ordem para comprar ou vender. Neste momento, a plataforma de negociação FMZ Quant detectará o valor de 0 na parte inferior e reportará um erro. Você pode usarSetErrorFilter("Invalid ticker")
para ignorar este erro, e usar a funçãoGetRawJSON
Aqui eu escrevo um exemplo para conseguir 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
}
Quando chamados, escrevemos:Log($.GetTicker(exchange))
A operação de colocar uma ordem é muito simples, em comparação com a negociação de futuros, há apenas duas direções de compra e venda.
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 encomenda que foi feita também aparece no bot de simulação.
E...exchange.GetOrder(id)
Pode procurar as informações do pedido.
O mesmo.CancelOrder
A função é usada para cancelamento de ordem, assim como o cancelamento de ordem para negociação de futuros.
Obter ativos disponíveis conta é exatamente o mesmo que a negociação de futuros, basta chamar oGetAccount
função directamente.
Simula a exibição na página de troca:
Execute o código para conseguir.
Não podemos usar o encapsulado.GetPosition
Função diretamente para posições, porque a transação Deribit padrão é uma transação de futuros, não uma transação de opções, só podemos usar esta função para obter posições de futuros.
Então isso terá que ser nossa própria função encapsulada para obter a posição de opções.
Interface de funções para a obtenção de posições no documento 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
}
Ligue.Log($.GetPosition(exchange))
para imprimir as informações de posição.
Assim, as operações básicas podem ser implementadas, e o resto pode ser estudado para estratégias de negociação de opções.