
Уже существует множество бирж фьючерсов на цифровые валюты, но как производный фьючерс, торговля опционами на цифровые валюты, на рынке не так много бирж. Биржи, которые поддерживают торговлю опционами, включают Deribit и BitMEX. В области количественной торговли также существует множество стратегий опционной торговли, например, опционные стратегии, упомянутые в некоторых искомых материалах:
| тип | |||||
|---|---|---|---|---|---|
| Направленная стратегия: | Покупка опциона колл | Продажа опциона пут | Спред «бык-колл» | Спред Bull Put | |
| – | Купить опцион пут | Продажа опциона колл | Медвежий колл-спред | Медвежий пут-спред | |
| Стратегии волатильности: | Продать Стрэддл | Продать Wide Straddle | Купить Стрэддл | Купить Wide Straddle | |
| Стратегии хеджирования: | Покрытый колл | Покрытый пут | Защитные призывы | Защитный пут | |
| – | Длинный двойной лимит | Короткая позиция двойной лимит | – | – |
Цитируется изсоединять
Чтобы написать стратегию торговли опционами, вам все равно сначала нужно заложить прочный фундамент и ознакомиться с основными операциями, такими как размещение ордеров, получение рыночной информации, отмена ордеров и открытие позиций. Для написания стратегий по-прежнему используется платформа количественной торговли Inventor, хотя в настоящее время платформа количественной торговли Inventor в основном поддерживает торговлю валютой в валюте, торговлю контрактами и торговлю с использованием кредитного плеча в области количественной торговли цифровой валютой. Информации о торговле опционами не так много. Ниже мы возьмем биржу «Deribit» в качестве примера, чтобы показать, как использовать платформу количественной торговли Inventor для торговли опционами на цифровые валюты.
Документация 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 KEY и получить API KEY. Настройка количественной торговой платформы Inventor аналогична настройке реального счета.

Для торговли опционами необходимо понимать 4 основные концепции:

Согласно документации API биржи Deribit, рыночный интерфейс Deribit передает данные только для доступа к информации о рынке фьючерсов или опционов.instrument_nameПараметры различаются (instrument_name задается функцией SetContractType), поэтому по сути вы можете использовать интерфейс для получения рыночной информации.GetTickerПолучите расценки на варианты.
Конечно, пакет по умолчанию платформы количественной торговли Inventor — это реальный рынок биржи Deribit. Сначала мы должны перейти на рынок симуляции и использовать следующий код:
exchange.IO("base", "https://test.deribit.com")
Затем мы в настоящее время создаем опционный контрактBTC-27DEC19-7000-P:
Это опцион пут с датой исполнения: 27 декабря 2019 г. и ценой исполнения: 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)
}
Использование инструментов отладки может быть очень удобным для тестирования:
Вы можете видеть, что цена соответствует цене на диске моделирования.

Методы вызова других интерфейсов рынка такие же и не будут здесь повторяться. Следует отметить, что:
Торговля опционами не очень активна. Иногда не будет ордеров на покупку или продажу. В это время нижний уровень платформы количественной торговли Inventor обнаружит значение 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))
Операция размещения ордера очень проста. По сравнению с торговлей фьючерсами, есть только два направления: купить и продать. Также используйтеSell,BuyПорядок функций.
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))
}

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

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

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

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

Для удержания позиций вы не можете напрямую использовать упакованныйGetPositionфункция, поскольку по умолчанию транзакции Deribit являются фьючерсными транзакциями, а не опционными транзакциями, и только эта функция может быть использована для получения фьючерсных позиций.
Поэтому мы должны инкапсулировать функцию получения опционных позиций самостоятельно.
Интерфейс функции получения позиций в документации 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
}
ВызовLog($.GetPosition(exchange))Вы можете распечатать информацию о местоположении.

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