БКС Мир Инвестиций
БКС Мир Инвестиций личный блог
Сегодня в 13:09

Робот на рынке фьючерсов: что он должен уметь и как его подключать

Большинство разговоров о торговых роботах упирается в скорость. При этом значительная часть работающих стратегий скоростью не пользуется: решение принимается раз в сутки, а на исполнение остаются часы.

Такие задачи не требуют дорогой инфраструктуры. И на них же легко ошибиться —использовать прямое подключение к бирже там, где достаточно программного интерфейса брокера.

Разберем на конкретном примере: робот, который одновременно держит две встречные позиции — в вечном и квартальном фьючерсе на одну валютную пару.

Что делает робот

На срочном рынке есть два разных фьючерса на один и тот же курс доллара.

Первый — привычный квартальный: у него есть дата исполнения, и в этот день он рассчитывается по официальному курсу Банка России. Второй — вечный: даты исполнения у него нет, каждый вечер он автоматически продлевается на следующий день.

У вечного контракта нет того, что удерживает обычный фьючерс возле реального курса, — приближения даты расчета. Биржа заменила это деньгами. Если вечный контракт торгуется дороже официального курса, те, кто его купил, ежедневно платят тем, кто продал. Если дешевле — наоборот. Платеж называется фандингом, считается по формуле, которую биржа публикует, и списывается раз в сутки.

Дальше возникает естественная мысль: раз сумму платежа можно посчитать заранее, достаточно встать на сторону получателя и забрать деньги. Так не выходит. Формулу видят все, поэтому ожидаемый платеж заранее заложен в цену контракта: получает его тот, кто взял на себя риск изменения курса, и этот риск стоит примерно столько же, сколько сам платеж. Исторически цена отыгрывает большую часть начисления уже к утру следующего дня.

Работает другой ход — убрать из позиции курс доллара. Для этого одновременно с вечным контрактом открывается противоположная позиция в квартальном: продали вечный — купили квартальный, и наоборот. Эти две встречные позиции на профессиональном жаргоне называют ногами. Что бы теперь ни делал курс, сколько потеряет одна позиция — столько заработает вторая.

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

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

В виде алгоритма это выглядит так:

раз в день, после публикации официального курса Банка России: получить курс   рассчитать сегодняшний фандинг по формуле биржи снять цены вечного и квартального контрактов посчитать, сколько платит фандинг и сколько стоит страховка решить, как должна выглядеть позиция сегодня: продан вечный / куплен вечный / позиции нет если это отличается от того, что стоит сейчас — переставить обе ноги

Ни прогноза, ни индикаторов, ни реакции на движение цены. Робот считает и приводит позицию к результату расчета. По нашим расчетам на исторических данных, нужное состояние меняется в среднем примерно раз в два дня — то есть большинство дней сделок нет вообще.

Почему это удобная задача для первого робота

Одно решение в сутки. Между публикацией курса и клиринговой сессией, в которую проходит переоценка позиций, остается несколько часов. Задержка в десятки миллисекунд на результат не влияет.

Нет конкуренции за исполнение. Робот не соревнуется за место в очереди заявок. Есть время выставить лимитную заявку и дождаться исполнения — а это прямо влияет на результат.

Решение проверяемо. Рассчитанное значение сверяется с опубликованным биржей. Встроенный ежедневный контроль качества: расхождение означает проблему в данных или в коде, и торговать в этот день не следует.

Небольшой объем кода. Сложность не в логике, а в аккуратности исполнения и учета.

Из чего состоит приложениеРобот на рынке фьючерсов: что он должен уметь и как его подключать4 главных риска

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

Рабочая схема: сначала выставляем ту ногу, которая торгуется хуже, вторую — сразу после того, как первая исполнилась. И жесткий лимит по времени: если вторая не встала за отведенные минуты, робот закрывает первую по рынку и фиксирует небольшой убыток, вместо того чтобы остаться с открытым риском.

Покупка по рынку вместо лимитной заявки. На срочном рынке комиссию платит только тот, кто бьет по чужой заявке. Кто ставит свою и ждет, пока ее исполнят, не платит бирже ничего: по валютным фьючерсам 0,00462% против нуля. Добавьте сюда половину разницы между ценами покупки и продажи — и получится ощутимая сумма, ведь позиция перекладывается почти каждый день. Времени на спокойную лимитную заявку у нас часы, и это надо использовать.

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

В «нервные» дни клиринговый центр повышает требования сразу по обоим контрактам, и закрыть позицию могут именно поэтому. Свободных денег нужно держать заметно больше, чем занято под позицию.

Паузы и обрывы. С 23 марта 2026 г. промежуточный клиринг отменен, а переоценка позиций и начисление фандинга проходят в клиринговую сессию в конце дня. Робот не должен принимать ее за сбой. Сюда же — срок жизни ключа доступа к API, который надо перевыпускать, и отказ брокера принять заявку: он проверяет ее до отправки на биржу и может вернуть, если не хватает обеспечения или цена слишком далека от рынка. И то, и другое — обычная ситуация, ее нужно обработать.

Как подключатьсяРобот на рынке фьючерсов: что он должен уметь и как его подключать

Для описанной задачи достаточно Trade API. Это программный интерфейс брокера: котировки, состояние счета, выставление и снятие заявок. Собственная сертификация торгового ПО для него не требуется, робот пишется на удобном языке и работает с любой машины.

Скрипт на Lua подойдет, если вы не хотите выносить логику за пределы терминала. Но робот окажется привязан к запущенному QUIK на конкретной машине и к возможностям встроенного языка — для задачи с ежедневной сверкой и контролем двух ног это скорее ограничение.

FIX к серверу QUIK имеет смысл, если у вас уже есть ПО, работающее по FIX: подключить модуль дешевле, чем переписывать его под другой интерфейс.

О прямом доступе

DMA означает, что заявки идут на отдельный шлюз биржи, минуя торговые системы брокера. Это требует торгового ПО, сертифицированного биржей, шлюзового логина и отдельного сетевого подключения — VPN, виртуального сервера или размещения оборудования в дата-центре биржи. Оформление занимает недели.

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

Прямой доступ оправдан в других случаях:

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

Переход с программного интерфейса на прямой доступ не требует переписывания стратегии — меняется только способ отправки заявок. Разумный порядок: начать с того, что закрывает задачу сегодня, и двигаться дальше, когда для этого появится измеримое основание.

Порядок запуска

Неделя-две на ключе доступа только для чтения. Ключ, которым робот авторизуется в API, выпускается в двух вариантах: с правом торговать и без него. Второй дает данные, но поручения с ним не уходят. Робот работает на живом рынке в полном цикле и пишет в лог, что сделал бы, по каким ценам и в какой момент — отдельная тестовая среда для этого не нужна, обкатка идет на реальных котировках. За это время видно главное: сходится ли расчет с опубликованным биржей значением, надежны ли источники данных и какие цены реально стояли в стакане в момент решения.

Затем рабочий ключ и один контракт. Через пару недель с минимальным размером можно ответить на вопросы, которые вхолостую не проверишь: получается ли исполняться лимитом, как часто не встает вторая нога, совпадают ли комиссии с расчетными, как ведет себя обеспечение.

Дальше — размер. Увеличивать до уровня, где результат перекрывает расходы, и останавливаться там, где собственные заявки начинают двигать цену.

Коротко

Для стратегии, принимающей одно решение в сутки, сложность лежит не в скорости, а в аккуратности: две ноги, ежедневная сверка, корректное поведение в клиринговую сессию и при обрывах связи. Программный интерфейс брокера такую задачу закрывает. Прямой доступ к бирже — следующий этап, и переходить к нему имеет смысл тогда, когда появится измеримое основание.

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн