В процессе загрузки ресурсов... загрузка...

Реформа фьючерсного API Deribit для адаптации к количественной торговле опционами

Автор:FMZ~Lydia, Создано: 2022-12-28 10:02:51, Обновлено: 2023-09-20 09:15:09

img

Реформа фьючерсного API Deribit для адаптации к количественной торговле опционами

В настоящее время существует множество фьючерсных бирж цифровой валюты. Однако, как фьючерсный производный продукт, на рынке для торговли опционами на цифровую валюту существует мало бирж. Deribit и BitMEX поддерживают торговлю опционами. В области количественной торговли торговля опционами также имеет различные стратегии, такие как стратегии опционов, упомянутые в некоторых материалах, которые были поисканы:

Тип
Направленная стратегия:
Стратегия волатильности:
Стратегия хеджирования:

Цитирую:ссылка

Чтобы подготовить стратегию торговли опционами, вам сначала нужно заложить прочную основу и быть знакомым с базовыми операциями, такими как размещение заказа, получение тикера, отмена заказа и получение позиций. В написании стратегии все еще используется платформа FMZ Quant Trading, хотя платформа FMZ Quant Trading в настоящее время поддерживает торговлю валютами, контрактную торговлю и рычаг торговли в области цифровой валютной количественной торговли. Нет много информации о торговле опционами. Давайте возьмем биржу Deribit в качестве примера, чтобы представить, как использовать платформу FMZ Quant Trading для ознакомления с торговлей опционами цифровой валюты.

Материалы, связанные с Deribit

Документ API:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentБот-симулятор:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

Вы можете зарегистрировать учетную запись на сайте бота-симулятора, открыть ключ API и получить ключ API.

img

Существует четыре основных понятия для понимания о торговле опционами:

- Дата осуществления: длинные и короткие стороны опциона завершают поставку опционного контракта на эту дату. -Цена осуществления: на дату осуществления долговые и короткие стороны опциона завершают поставку контракта опциона по цене осуществления. -Премия: это цена опционов. Как и спот и фьючерсы, он котируется по цене покупки и цене покупки. Стоит отметить, что поскольку ликвидность опционов, как правило, ниже, чем у фьючерсов и спота, разница в цене между предложением и запросом может быть большой, поэтому здесь следует уделять большое внимание! После сделки цена сделки - это стоимость опционов длинных позиций, при этом длинные позиции получают право (право на осуществление опциона); короткий опцион, как сторона, получающая премию, добавляет обязательство. Как только длинный опцион запрашивает осуществление своих прав, короткий опцион должен сотрудничать. -Опции продажи: Так называемый опцион покупок означает, что опционные длинные позиции имеют право попросить опционные короткие позиции купить данный Биткойн по определенной цене на определенную дату проведения, а короткие позиции имеют обязательство сотрудничать с длинными позициями; так называемый опцион пута означает, что длинная сторона опциона имеет право попросить короткую сторону продать данный Биткойн по определенной цене проведения на определенную дату проведения, а короткая сторона имеет обязательство сотрудничать с длинной стороной.

Приобретение тикера

После прочтения API документа Deribit Exchange мы можем видеть, что интерфейс тикера Deribit для доступа к фьючерсам или опционов тикеров просто вопрос прохождения в различныхinstrument_nameпараметры (instrument_name устанавливается функцией SetContractType), так что в основном, вы можете следовать интерфейсGetTickerчтобы получить информацию об опционах.

Конечно, платформа FMZ Quant Trading по умолчанию инкапсулирует реальный бот Deribit Exchange.

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

Тогда мы создадим опционный контрактBTC-27DEC19-7000-PСейчас. Это опцион на продажу с датой исполнения: 27DEC19 и ценой исполнения: 7000.

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

Тогда, давайте напишем это вместе и позволим коду запустить, чтобы проверить получение тикера для этого контракта опциона.

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

Это легко проверить с помощью инструмента отладки:

img

Можно увидеть, что цена соответствует цене на симуляторе бота.

img

Другие интерфейсы тикеров называются таким же образом, что не будет повторяться здесь. Торговля опционами не очень активна. Иногда нет заказа на покупку или продажу. В это время платформа FMZ Quant Trading обнаружит значение 0 внизу и сообщит об ошибке. Вы можете использоватьSetErrorFilter("Invalid ticker")чтобы игнорировать эту ошибку, и использовать функциюGetRawJSONЗдесь я пишу пример для достижения аналогичных функций:

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
}

Когда звонят, мы пишем:Log($.GetTicker(exchange))

Заказать

Операция размещения заказа очень проста, по сравнению с торговлей фьючерсами, есть только два направления покупки и продажи.

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

Заказ, который только что был сделан, также отображается на симуляторе бота.

img

И...exchange.GetOrder(id)можно посмотреть информацию о заказе.

Отмена заказов

То же самое.CancelOrderФункция используется для отмены ордера, так же как отмена ордера для торговли фьючерсами.

img

Получить доступные активы счета

Получение аккаунта доступных активов точно так же, как торговля фьючерсами, просто позвонитеGetAccountФункционирует непосредственно.

Симулировать отображение на странице обмена:

img

Запусти код, чтобы получить.

img

Получить информацию о положении

Мы не можем использовать капсулированныйGetPositionфункция напрямую для позиций, потому что по умолчанию сделка Deribit является сделкой фьючерсов, а не сделкой опционов, мы можем использовать эту функцию только для получения позиций фьючерсов. Это должна быть наша собственная функция, чтобы получить опционную позицию.

Функциональный интерфейс для получения позиций в документе 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
}

Позвони.Log($.GetPosition(exchange))чтобы распечатать информацию о местоположении.

img

Таким образом, основные операции могут быть реализованы, а остальные могут быть изучены для стратегий торговли опционами.


Связанные

Больше