O recurso está a ser carregado... Carregamento...

Reforma da API de futuros da Deribit para a adaptação à negociação quantitativa de opções

Autora:FMZ~Lydia, Criado: 2022-12-28 10:02:51, Atualizado: 2023-09-20 09:15:09

img

Reforma da API de futuros da Deribit para a adaptação à negociação quantitativa de opções

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.

Materiais relacionados com o Deribit

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.

img

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.

Aquisição de tickets

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_nameParâmetros (instrument_name é definido pela função SetContractType), então basicamente, você pode seguir a interfaceGetTickerpara 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-PAtualmente. 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:

img

Pode-se ver que o preço é consistente com o do robô de simulação.

img

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çãoGetRawJSONAqui 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))

Faça uma encomenda.

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

img

A encomenda que foi feita também aparece no bot de simulação.

img

E...exchange.GetOrder(id)Pode procurar as informações do pedido.

Cancelamento de encomendas

O mesmo.CancelOrderA função é usada para cancelamento de ordem, assim como o cancelamento de ordem para negociação de futuros.

img

Obtenha os ativos disponíveis da conta

Obter ativos disponíveis conta é exatamente o mesmo que a negociação de futuros, basta chamar oGetAccountfunção directamente.

Simula a exibição na página de troca:

img

Execute o código para conseguir.

img

Obter informações de posição

Não podemos usar o encapsulado.GetPositionFunçã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:

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
}

Ligue.Log($.GetPosition(exchange))para imprimir as informações de posição.

img

Assim, as operações básicas podem ser implementadas, e o resto pode ser estudado para estratégias de negociação de opções.


Relacionados

Mais.