
Представьте двух трейдеров. Оба смотрят на один и тот же стакан, оба видят одно и то же движение и оба принимают одинаковое решение в одну и ту же секунду. У одного заявка исполняется по нужной цене. У второго — проскальзывает, а иногда не исполняется вовсе.
Разница не в стратегии и не в опыте. Разница в том, что лежит между решением и биржей.
Про этот слой на рынке говорят мало. Он не виден из терминала, про него не пишут в обучающих курсах по трейдингу, и большинство частных инвесторов вообще не подозревает, что он существует, — пока не столкнется с ним. А называется он торговой инфраструктурой: это протоколы, шлюзы, каналы связи, скорость и надежность доставки поручений.
Это первый материал серии, в которой мы будем разбирать этот слой. Начинаем с первых вопросов: как заявка на самом деле попадает на биржу и что такое DMA — прямой доступ на рынок, о котором все слышали, но почти никто не может внятно объяснить, чем он отличается от «просто API».
Когда вы нажимаете «купить» в приложении или отправляете запрос из скрипта, заявка не попадает на биржу мгновенно. Она проходит цепочку: ваш код → сервер брокера → шлюз → торговое ядро биржи. И обратно тем же путем — подтверждение, статус, отчет о сделке.
Каждое звено в этой цепочке стоит времени. Иногда миллисекунды, иногда микросекунды. Пока ваша стратегия держит позицию часами и днями, это не имеет вообще никакого значения — и любой, кто скажет вам иначе, что-то продает.
Но есть класс стратегий, где значение имеет все. Арбитраж между инструментами. Маркет-мейкинг. Реакция на движение в стакане. Дельта-хеджирование опционной позиции. Там вопрос не в том, правильно ли вы посчитали, — а в том, встали ли вы в очередь раньше того, кто посчитал так же.
DMA (Direct Market Access, прямой доступ на рынок) — это способ убрать из этой цепочки посредников. Ваша программа подключается к шлюзу биржи напрямую, минуя серверы брокера и серверы торгового терминала.
Звучит просто. Дальше начинаются детали, из-за которых люди годами покупают не то.
Полезнее всего думать о подключении не как о выборе «обычно или DMA», а как о лестнице. Каждая следующая ступень — это не «лучше», а «дороже и сложнее в обмен на одно конкретное свойство». Если это свойство вашей стратегии не нужно, вы просто платите за него деньгами и временем.
Ступень 1. Терминал руками
Приложение или QUIK, вы принимаете решения сами. Скорость ограничена вами.
Ступень 2. Trade API
REST и WebSocket, обычный HTTP-запрос из любого языка. Порог входа — те самые 15 минут. Заявки идут через инфраструктуру брокера. Этого достаточно для подавляющего большинства алгоритмов: скользящие средние, сеточные стратегии, ребалансировка портфеля, реакция на события с горизонтом от минут.
Ступень 3. Робот внутри QUIK
Код на LUA исполняется рядом с терминалом. Быстрее, чем ходить по сети из внешнего скрипта, но вы по-прежнему внутри терминальной инфраструктуры и ограничены ее возможностями.
Ступень 4. FIX к серверу QUIK
Промышленный протокол вместо самописных HTTP-запросов, поддержка нескольких счетов, предсказуемая семантика заявок. Важная деталь, о которой ниже: это все еще подключение к брокеру, а не к бирже.
Ступень 5. DMA
Ваше ПО подключается к шлюзу биржи по выделенному логину. Серверов брокера в маршруте заявки больше нет.
Ступень 6. Верхний ярус
Самые быстрые шлюзы (FIFO TWIME), бинарная маркет-дата (SIMBA), собственный сервер в зоне колокации биржи, прямой линк. Здесь борьба идет за микросекунды, и это уже не столько трейдинг, сколько инженерия. Попасть сюда без своего железа в дата-центре биржи технически нельзя.
Между второй и пятой ступенью — пропасть по стоимости и по сложности. Между второй и третьей — почти ничего. Понимание, где именно вы находитесь и куда вам реально надо, экономит очень много денег.
Самая частая формулировка запроса звучит так: «дайте нам FIX». И почти всегда за ней стоит не то, что человек думает.
FIX — это протокол. Стандарт обмена сообщениями между торговыми системами, придуманный в 1990-х и с тех пор ставший общим языком индустрии. Протокол описывает, как разговаривать. Он ничего не говорит о том, с кем.
И вот здесь развилка. Один и тот же FIX может вести в два принципиально разных места:
Разница в маршруте, а не в синтаксисе сообщений. Клиент, который получил FIX-подключение к серверу брокера и считает, что теперь торгует напрямую с биржей, ошибается — и обнаруживает это в самый неподходящий момент.
Отсюда простое практическое правило: спрашивайте не «есть ли у вас FIX», а «куда именно этот FIX подключается».
Вторая по частоте ошибка — считать, что DMA это продукт, который можно купить одной кнопкой и начать торговать. DMA — это мост. По мосту все равно должно что-то ехать, и мост должен куда-то опираться.
Компонентов ровно три, и без любого из них ничего не поедет.
Первый — торговое ПО
Программа, которая умеет «разговаривать» с биржевым шлюзом на его протоколе. Это либо готовое решение, либо ваша собственная разработка. И в обоих случаях софт должен быть сертифицирован биржей: биржа проверяет, что подключаемая система ведет себя корректно и не создает рисков для торгов.
Здесь стоит сразу расставить границы, чтобы не было сюрпризов. Код за вас никто не напишет — разработка вашей торговой системы остается вашей зоной. А вот пройти сертификацию мы помогаем: подсказываем, как устроена процедура, что биржа проверяет и в каком порядке, и берем на себя коммуникацию с биржей. Это ровно та часть, где новички теряют больше всего времени просто потому, что не знают, у кого спросить.
Второй — сетевое подключение
Обычный интернет для DMA не подходит. Нужен либо виртуальный сервер в дата-центре биржи, либо биржевой VPN, либо собственное железо в зоне колокации. Об этом отдельно ниже.
Третье — шлюзовой логин
Собственно доступ к шлюзу оформляется через брокера как участника торгов. И заказывается он на конкретный рынок — почему это важно, разберем в следующем разделе.
Плюс, в зависимости от рынка, — отдельные требования к оформлению счета и статусу инвестора. Это не бюрократия ради бюрократии: прямое подключение меняет схему учета ваших операций, отсюда и требования. Конкретный набор зависит от того, на какой рынок вы идете, — этот список лучше уточнять под свою задачу.
Прежде чем говорить о конкретных шлюзах, нужно понять одну вещь, которая переворачивает картину у большинства новичков.
«Московская биржа» — это не одна торговая система. Это несколько разных платформ, и у каждой свой набор шлюзов, свои протоколы и свое оформление.
Это не разные разделы одного меню — это разные системы, которые исторически развивались отдельно и до сих пор устроены по-разному внутри.
Отсюда следствие, которое стоит усвоить сразу: подключение к одному рынку не дает вам подключения к другому. Свои шлюзовой логин, маркет-дата, оформление, набор требований — на каждый рынок отдельно. Клиент, который завел DMA на срочном рынке и рассчитывает торговать через него же акциями, обнаружит, что это просто не работает.
И это, кстати, одна из причин, почему стратегии, живущие сразу на двух рынках — базис спот против фьючерса, дельта-хедж опционной позиции, — сложнее в подключении, чем кажется на входе. Их приходится собирать из двух подключений сразу.
Выбирают шлюзы не по принципу «какой быстрее», а по принципу «что мне нужно от подключения».
Срочный рынок (SPECTRA)
Фондовый и валютный рынки (ASTS)
Устроено симметрично, названия другие.
То есть картинка одинаковая на обоих рынках: универсальный шлюз, FIX, бинарный TWIME и бинарный TWIME с FIFO. Запомнить проще, чем кажется.
А вот код одинаковым не будет. Протоколы TWIME на двух рынках — одно семейство и одна кодировка, биржа сознательно их сближала, чтобы разработчику не учить два разных мира. Но спецификации отдельные: свои документы, версии, набор полей под специфику рынка. На фондовом есть типы заявок, которых на срочном нет в принципе, — например, работа с провайдерами внешней ликвидности. Переиспользовать получится транспорт и сессионный слой, а логику заявок придется писать под каждый рынок.
И версии живут своей жизнью. Биржа периодически меняет схему сообщений с потерей обратной совместимости: не обновился к дате — просто не подключился. Это не разовая история, а нормальный режим работы, который надо закладывать в сопровождение.
Момент, который стабильно всплывает уже после подключения и портит людям настроение: быстрый торговый шлюз не дает вам быстрых данных.
TWIME и FIX Gate только отправляют поручения. Рыночную информацию нужно получать отдельно — и заказывать отдельно, по каждому рынку.
Вариантов два.
SIMBA биржа прямо позиционирует как пару к транзакционному сервису: на фондовом и валютном рынках — вместе с FIFO TWIME ASTS, на срочном — вместе с TWIME. Это и есть типовая связка верхнего яруса.
И здесь снова работает развилка ASTS/SPECTRA: маркет-дата тоже заказывается отдельно по каждому рынку. Хотите видеть и акции, и фьючерсы — это два подключения к данным, а не одно.
Логика подбора тут простая, но ее постоянно нарушают: скорость системы определяется самым медленным звеном, а не самым быстрым. Поставить самый быстрый транзакционный шлюз и кормить стратегию медленными данными — это потратить деньги на то, что не заработает. Быстрый шлюз имеет смысл ровно в паре с быстрыми данными.
Домашний или офисный интернет дает задержку, которая плавает, и плавает непредсказуемо. Для стратегии, которая держит позицию неделю, это неважно. Для стратегии, которая живет секундами, непредсказуемая задержка хуже, чем стабильно большая: на нее нельзя заложиться.
Три рабочих варианта, по возрастанию:
Метафора грубая, но рабочая: купить самый быстрый шлюз и подключиться к нему через домашний Wi-Fi — это поставить на машину гоночный двигатель и выехать на проселок.
Когда алгоритм торгует без человека, правильный вопрос не «сработает ли стратегия». Правильный вопрос — что произойдет, когда что-то пойдет не так. Оборвется связь. Зависнет процесс. Ошибка в коде начнет отправлять заявки в цикле.
На уровне биржевой инфраструктуры для этого есть три механизма, и знать про них стоит до подключения, а не после.
Cancel on Disconnect
При потере связи с торговой системой открытые заявки снимаются автоматически. Тут есть нюанс, который надо прочитать в документации внимательно: снимаются не все заявки подряд. Например, на срочном рынке механизм не трогает многодневные заявки с установленным сроком действия — они переживут ваш обрыв связи и останутся в стакане. Проверять это стоит заранее, а не в момент аварии.
Kill Switch
Возможность разом остановить активность по логину. Красная кнопка, которая должна быть под рукой до того, как понадобится.
Drop Copy
Отдельная сессия только на чтение: вы получаете копии своих заявок и сделок независимым каналом. Торговать через нее нельзя — она нужна для независимого контроля, сверки и риск-мониторинга. Полезно, когда торговых подключений несколько, а картина позиции нужна одна.
Наличие этих трех вещей в схеме — довольно надежный признак того, что подключение сделано по-взрослому, а не «лишь бы поехало».
Честный способ понять, нужен ли вам DMA, — ответить на несколько вопросов до того, как начинать разговор о подключении.
Если на большую часть ответ «нет» — вам, скорее всего, не нужен DMA. И это нормальный вывод, а не обидный. Огромное количество прибыльных алгоритмов прекрасно живут на второй ступени лестницы и не испытывают от этого никаких неудобств.
А вот если на большую часть ответ «да» — вы упираетесь в потолок текущего подключения, и дальше расти можно только через инфраструктуру.
Не с заказа шлюза. С измерения.
Прежде чем менять канал, стоит понять, где именно теряется время. Разложите путь заявки на участки и замерьте каждый: сколько уходит на решение внутри вашего кода, на сеть и на обработку. В практике довольно часто выясняется, что самое медленное звено — собственный алгоритм, а не канал до биржи, и апгрейд инфраструктуры не дает ничего, кроме счета за инфраструктуру.
Второй шаг — сформулировать, какое именно свойство вам нужно. Меньшая средняя задержка, предсказуемость задержки, больше транзакций в секунду, независимый риск-контроль — это разные требования, которые решаются разными способами.
И только третий шаг — выбор конкретного шлюза, сети и оформление.
Этот материал — карта местности. Дальше будем спускаться в каждый ее квадрат по отдельности.
В ближайших выпусках разберем:
Тема сложная, но не эзотерическая: разбираемся по шагам, без жаргона ради жаргона.
Если что-то из перечисленного хочется разобрать раньше остального — напишите в комментариях, подвинем в очереди.
А если вы уже уперлись в потолок текущего подключения и хотите разобрать свою конкретную конфигурацию — пишите на dma@bcs.ru. Задача в том, чтобы вы получили именно то подключение, которое нужно вашей стратегии, а не самое дорогое из существующих.
БКС Мир инвестиций
Материал носит информационный характер и не является индивидуальной инвестиционной рекомендацией.
Если серъезно, вы бы описали своего клиента: на кого расчитан сервис? Те, кому это нужно, наверняка давно там, хомяков туда не затащить, но есть же какая-то узкая прослойка трейдеров, кому это надо.
Например вы пишете:
Чтобы получить ответ, надо статистически значимое количество времени посветить сбору стакана и своего места на каждом уровне очереди, смоделировать разницу с актуальным местом и расчитать изменение P&L.
Для меня работа очень затратная и с неясными перспективами. Но у вас же есть какая-то обобщенная статистика, так выкладывайте, а мы уже будем думать!
Или еще лучше здесь:
Снова асимметрия информации: у меня есть данные только моих систем. Много это или мало, совершенно не понятно. Но у вас то есть статистика, из которой можно приблизительно предположить уровень, начиная с которого есть смысл в прямом подключении.
Я мог бы теоретически стать клиентом ДМА, но для этого необходима уверенность в существенном повышении доходности систем, иначе количество потенциального геморроя просто пугает.