June 22

HFT: Анатомия скорости. Почему рынок — это не график, а война машин. Часть I из III

Введение. Там, где свечи не живут

Забудьте всё, что вы видели в кино про трейдинг. Забудьте про красивый график, про медитативный взгляд на свечи и про «я чувствую, рынок сейчас пойдёт вверх». Высокочастотная торговля (HFT) начинается там, где человеческий глаз уже не различает движения, а человеческий палец не успевает нажать на кнопку.

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

Ваш график — это просто кладбище. Там похоронены миллионы отменённых заявок, микросекундные задержки, невидимые глазу Iceberg-ордера и сражения алгоритмов за право встать на долю цента впереди конкурента. Чтобы понять HFT, нужно перестать смотреть на последнюю сделку и начать смотреть в бездну стакана.

На этом уровне рынок существует не как последовательность свечей, а как бурлящая плазма сообщений: выставление лимитных заявок, их мгновенная отмена, модификация объёма, агрессивные рыночные ордера, выкупающие ликвидность.

Участники теряют место в очереди, реагируют на исчезновение объёмов, перестраивают котировки. Цена, которую вы видите, — это уже труп события, а не само событие.

Поэтому правильный вопрос для «высокочастотника» звучит не «Куда пойдёт цена?». Фундаментальный вопрос HFT звучит так:

«Что именно происходит внутри книги заявок в тот момент, когда появляется новая информация?» Если на одной площадке цена уже сдвинулась, а на другой — ещё нет, если крупный игрок начинает рвать стакан, если все одновременно снимают свои ордера перед важной новостью, — для HFT-системы критически важна не только сама информация, но и задержка, с которой она получена, и качество её интерпретации.

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

Главная ошибка новичков (и диванных критиков HFT) в том, что они отделяют скорость от структуры рынка. Но голая скорость без понимания не дает преимущества. Быстрая система, не понимающая механику стакана, будет просто быстрее совершать убыточные сделки. Быстрый канал связи без чёткого контроля риска — это не путь к богатству, а скоростной лифт в преисподнюю. Скорость в HFT имеет смысл только тогда, когда она встроена в полную систему: данные, расчёт, риск, заявка, исполнение и молниеносный анализ результата.

Электронный рынок устроен как бездушная машина сопоставления заявок.
Её сердце — движок (мэтчинг), который принимает сообщения, обновляет книгу заявок и решает, кого казнить, а кого миловать. Участник с рыночной заявкой требует исполнения здесь и сейчас, соглашаясь на любую доступную цену. Участник с лимитной заявкой, наоборот, указывает свою цену и объём, вставая в очередь.

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

Но сводить всё к гонке за минимальной задержкой — значит не видеть леса за деревьями. HFT — это ещё и гонка за качеством интерпретации. Видимая ликвидность — насколько она реальна? Не является ли этот объём в стакане фантомом, который исчезнет, как только вы попытаетесь его коснуться? Не является ли текущий поток заявок токсичным? Стоит ли продолжать котировать или лучше уйти в кэш? Высокочастотная система торгует не просто активом. Она торгует вероятностью исполнения, риском ухудшения цены и стоимостью своего присутствия в рынке.

Здесь проходит чёткая граница между HFT и обычным алгоритмическим исполнением. «Алго» может работать с горизонтом в минуты или часы, нарезая крупный ордер по расписанию. HFT живёт в другом измерении. Её горизонт короче, плотность данных выше, цена ошибки драматичнее. Это как сравнивать управление круизным лайнером и пилотирование истребителя в зенитном огне.

Более того, HFT неоднородна. Это зонтичный бренд, под которым скрываются совершенно разные вселенные: маркет-мейкинг (постоянное котирование и заработок на спреде), статистический арбитраж (ловля расхождений), событийные стратегии (реакция на новости) и так далее. Но всех их объединяет тотальная зависимость от качества данных, исполнения и контроля риска.

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

И, наконец, прагматичный вопрос издержек. HFT — это безумно дорогое удовольствие, если делать его по-настоящему. Это не только серверы и код. Это рыночные и исторические данные, колокейшн (размещение серверов рядом с биржей), дорогущие каналы связи, FPGA-карты, армия разработчиков и юристов. Низкая задержка не берётся из воздуха — она покупается за очень большие деньги. Чем ближе вы подбираетесь к профессиональному уровню, тем сильнее растут постоянные расходы. Поэтому для частного исследователя важно разделять изучение HFT и конкуренцию с гигантами. Изучать — необходимо, это даёт рентгеновское зрение рынка. Но пытаться собрать «домашнюю HFT-систему» и воевать с Citadel — это билет в один конец.

Криптовалютный рынок часто манит иллюзией доступности. Порог входа там действительно ниже. Но дьявол кроется в деталях: фрагментация, нестабильные API, неравномерная ликвидность и колоссальный контрагентский риск (самой биржи). Крипто-HFT — это не упрощённая версия классики, а отдельный, дикий и опасный мир со своими законами.

В этой статье мы разложим HFT на атомы. Мы пройдёмся по устройству книги заявок, по типам участников, по архитектуре системы. Мы посчитаем реальную стоимость скорости и разберём алгоритмы: от исполнения до маркет-мейкинга. Мы покажем, что цена — это не цифра, а процесс. Что рынок — это не график, а непрерывная война машин. И даже если вы никогда не будете строить HFT-систему, это понимание навсегда изменит ваш взгляд на ликвидность, спреды и исполнение. Вы поймёте, почему видимый объём в стакане может исчезнуть за наносекунду, почему крупная заявка движет рынок против вас и почему бэктест на свечах — это часто просто красивая сказка. HFT — это увеличительное стекло, через которое видна настоящая, часто пугающая, но невероятно захватывающая механика современного рынка.

Электронный рынок: не график, а мясорубка заявок

Чтобы понять высокочастотную торговлю, выкиньте на помойку свой график. Серьёзно. Любая HFT-стратегия, какой бы гениальной она ни была, упирается в одну и ту же стену: она должна отправить заявку и исполнить её. Эта заявка летит не в абстрактную «цену», а в конкретную бездушную машину — торговую площадку, которая живёт по своим, часто драконовским, правилам.

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

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

Книга заявок: поле боя, а не витрина

Первое, что должен усвоить любой «высокочастотник»: книга заявок (стакан)- это не просто список цен. Это центральная структура электронного рынка. Это поле боя, где встречаются покупатели и продавцы.

Лучший покупатель (бид) показывает максимальную цену, которую кто-то готов заплатить. Лучший продавец (аск) — минимальную цену, по которой кто-то готов расстаться с активом. Разрыв между ними — это спред.

Спред — это не просто «разница». Это плата за немедленность. Хотите войти в рынок прямо сейчас — платите спред. Хотите выйти — опять платите. Это как налог за срочность. Узкий спред (минимальный шаг цены) говорит о том, что рынок ликвидный и конкуренция среди поставщиков ликвидности высокая. Широкий спред — сигнал опасности, страха или отсутствия конкуренции.

Но узкий спред сам по себе может быть ловушкой. Важно не только то, что цена красивая, но и сколько актива реально стоит за этой ценой. Это называется глубиной книги. Если на лучшей цене стоит всего 100 единиц, а вам нужно купить 10 000, то ваша рыночная заявка, словно голодный кабан, проломит несколько уровней и получит исполнение по всё более и более хреновым ценам.

Это называется проскальзыванием, и для HFT это не досадное недоразумение, а фундаментальный фактор.

Именно здесь кроется разница между видимой ценой и исполнимой ценой.

На экране может быть написано «купить по 100,01», но для крупного объёма реальная цена будет средневзвешенной по всей глубине книги, которую сожрала ваша заявка.

Рыночные и лимитные заявки: агрессоры и жертвы

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

Рыночная заявка — это агрессор. Она кричит:
«Исполни меня немедленно, плевать на цену». Её преимущество — скорость и гарантия исполнения (почти всегда). Недостаток — она платит спред и может сожрать книгу, получив отвратительную среднюю цену. Рыночная заявка не стоит в очереди, она просто забирает чужую ликвидность.

Лимитная заявка — это пассивный охотник. Она говорит:
«Я куплю только по 100,00, не дороже». Она выставляет свою цену и встаёт в очередь, ожидая, пока на неё наткнётся агрессор. Её преимущество — контроль над ценой и часто меньшая комиссия. Недостаток — нет гарантии исполнения. Её могут не заметить, её может обогнать другой охотник, вставший в очередь раньше. И, что самое страшное, её могут исполнить в самый неподходящий момент, когда рынок уже пошёл против неё. Это называется неблагоприятным отбором: вы купили, а цена тут же упала.

Выбор между этими двумя типами заявок — это не техническая мелочь. Это тактическое решение, которое алгоритм принимает сотни раз в секунду. Агрессия или пассивность? Скорость или цена?

Приоритет цены и времени: очередь за смертью

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

Для HFT это создаёт экономику очереди. Место в очереди становится ресурсом. Если вы первым выставили заявку на лучшем уровне, у вас больше шансов получить исполнение. Если вы опоздали на микросекунду — вы в конце, и до вас может просто не дойти очередь, даже если цена совпадает.

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

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

Частичное исполнение и отмена: искусство маневра

Идеальный мир, где каждая заявка исполняется полностью, существует только в фантазиях. В реальности заявку могут исполнить частично. Вы хотели купить 1000, а вам дали только 300. Что делать с остатком? Добивать рынок, рискуя сдвинуть цену? Отменить и переждать?

Частичное исполнение — это полноценное событие, которое должно мгновенно пересчитывать всю логику алгоритма: остаток, среднюю цену, риск. Неправильная обработка таких «осколков» может привести к ошибкам и диким убыткам.

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

Скрытая ликвидность: айсберги и призраки

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

Для HFT это создаёт дополнительную неопределённость. Вы видите в стакане 100 единиц, а на самом деле за ними скрыто 10 000, которые появятся, как только вы попытаетесь их купить. Или наоборот: видимый объём исчезает за мгновение до того, как вы попытаетесь его забрать. Это фантомная ликвидность — мираж, созданный алгоритмами для дезориентации противника.

Фрагментация: рынок-спрут

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

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

Биржа — не труба, а хозяин казино

И последнее. Биржа — это не нейтральный канал передачи данных. Это коммерческая организация, которая пишет правила игры. Она решает, какие типы заявок разрешены, кто получает данные быстрее, сколько стоят комиссии, можно ли поставить свой сервер рядом с её ядром (колокейшн).

Эти правила — не абстрактная бюрократия. Для HFT они значат всё. Разница в комиссиях для «мейкеров» и «тейкеров» может полностью изменить прибыльность стратегии. Возможность или невозможность колокейшена определяет саму возможность конкурировать. Биржа — это не просто поле, это ещё и судья, и часто этот судья продаёт более удобные места на трибунах тем, кто больше заплатит.

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

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

Кто наполняет машину: Хищники, жертвы и их мотивация

Теперь, когда мы знаем, как устроена машина исполнения, пора ответить на главный вопрос: кто, чёрт возьми, наполняет её заявками? Книга заявок не возникает из вакуума. Каждый уровень спроса и предложения — это след чьего-то решения: купить, продать, спрятаться, напасть, отменить, исполниться немедленно или замереть в очереди. Поэтому анализ HFT невозможен без анализа участников и их мотивации. Алгоритм не торгует против пустого графика. Он торгует против совокупности чужих потребностей, ограничений, ошибок, реакций и скоростей.

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

Разные участники приходят на рынок с разными временными горизонтами, ограничениями и целями. Один покупает акции, потому что фонд меняет структуру портфеля. Другой продаёт фьючерс, потому что хеджирует риск физического товара. Третий торгует пару связанных инструментов, ожидая сужения спреда. Четвёртый поддерживает двухсторонние котировки, зарабатывая на спреде. Пятый реагирует на новость быстрее остальных. Шестой исполняет клиентскую заявку и должен минимизировать рыночное воздействие. Седьмой вообще не имеет фундаментального взгляда на актив, но вынужден закрыть риск. Все эти действия попадают в одну книгу заявок и становятся средой, в которой действует HFT-система.

Если не понимать, кто стоит по другую сторону книги, можно неправильно оценить смысл рыночного события. Крупный объём на покупке может быть признаком реального спроса, но может быть и временной заявкой, которая исчезнет при первом изменении цены. Серия продаж может отражать информированное давление, а может быть механическим исполнением крупного портфельного ребалансирования. Расширение спреда может быть паникой, а может быть рациональной защитой маркет-мейкеров от неблагоприятного отбора.

Классификация участников

Классификация участников нужна не для академической формальности. Она помогает понять, какие силы формируют поток заявок. Две одинаковые сделки могут иметь совершенно разный смысл. Допустим, в ленте появляется покупка по лучшему предложению. Это может быть долгосрочный фонд, который начинает набирать позицию. Это может быть алгоритм исполнения, следующий проценту от рыночного объёма. Это может быть арбитражёр, закрывающий расхождение между площадками. Это может быть маркет-мейкер, срочно уменьшающий короткую позицию. Это может быть участник, быстрее всех понявший новость. Сделка выглядит одинаково, но её последствия для будущего движения цены различны.

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

Ликвидные и фундаментальные участники

Первая группа — участники, которые торгуют не потому, что обнаружили краткосрочный сигнал в книге заявок, а потому что у них есть внешняя экономическая причина. Это инвестиционные и пенсионные фонды, корпорации, хеджеры, эмитенты. Такой участник может покупать не потому, что ожидает движения цены в ближайшие секунды, а потому что получил приток капитала, изменил индексную корзину, закрывает риск или хеджирует будущий денежный поток. Его горизонт — дни, недели, месяцы или годы. Для HFT-системы в краткосрочном окне такой участник выглядит как источник «шума» или ликвидного потока: он двигает объём, но его мотивация не связана с ближайшим изменением цены.

Однако называть такой поток неважным было бы ошибкой. Крупный долгосрочный участник может не иметь информационного преимущества, но сам размер его заявки способен изменить рынок. Если фонд покупает значительный объём, его исполнение создаёт устойчивое давление на спрос. Если индексный фонд ребалансирует корзину, поток заявок может быть предсказуемым, но всё равно значимым. Для высокочастотного участника такие потоки важны по двум причинам. Во-первых, они создают возможности для предоставления ликвидности. Во-вторых, они создают риск. Если поток односторонний и устойчивый, стоять против него опасно. Не каждый поток, не основанный на краткосрочной информации, безопасен. Большая заявка может не знать будущую цену, но сама стать причиной её изменения.

Информированные участники

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

Неблагоприятный отбор — одна из центральных проблем маркет-мейкинга. На спокойном рынке можно зарабатывать на спреде. Но если поток становится информированным, спред перестаёт быть доходом и превращается в недостаточную компенсацию за риск. В такой ситуации маркет-мейкер должен расширять котировки (роллировать спред), уменьшать объём, уходить глубже в книгу или временно прекращать котирование. Информированная торговля не обязательно выглядит как агрессивная рыночная заявка. Участник с информационным преимуществом может использовать лимитные заявки, чтобы скрыть намерение.

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

Маркет-мейкеры

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

Второй риск — неблагоприятный отбор, когда его исполняют против более информированного участника. Третий риск — риск задержки, когда рынок меняется быстрее, чем система успевает обновить котировки. Четвёртый — риск очереди, где нужно постоянно выбирать между сохранением места и защитой от неблагоприятного исполнения. Маркет-мейкер не предсказывает рынок, а управляет условиями, при которых готов быть исполненным.

Арбитражёры и алгоритмы исполнения

Арбитражёр ищет расхождения между связанными ценами, используя короткие окна возможностей, но также несёт риски неполного исполнения, комиссий и слома исторических связей. Алгоритмы исполнения решают задачу покупки или продажи заданного объёма с минимальными издержками, постоянно балансируя между срочностью, скрытностью и рыночным воздействием. Для HFT-системы они являются важным источником структуры в потоке заявок, оставляя следы в повторяющихся сделках и устойчивых дисбалансах.

Посредники, тёмные площадки и розничные участники

Брокеры и посредники играют важную роль, влияя на маршрутизацию, скорость и качество исполнения заявок. Тёмные площадки позволяют крупным участникам снижать рыночное воздействие, но создают дополнительную неопределённость для HFT-систем. Розничные участники обычно не конкурируют в скорости, но их поток является ценным ресурсом для поставщиков ликвидности, так как часто считается менее информированным. Понимание поведения всех этих групп позволяет видеть за ценой реальную борьбу мотиваций, а не просто график.

Взаимодействие участников как источник цены

Цена формируется не одним участником и не одной причиной. Она является результатом взаимодействия разных мотиваций. Фонд хочет исполнить объём. Маркет-мейкер готов предоставить ликвидность, но только за компенсацию риска. Информированный участник забирает ликвидность, если считает цену устаревшей. Арбитражёр связывает цену с другими инструментами. Брокер выбираёт маршрут. Розничный поток создаёт дополнительный объём. Биржа задаёт правила исполнения и комиссии. Алгоритмы реагируют на действия друг друга.

В этом взаимодействии нет одного «главного» участника. Даже крупный фонд не полностью контролирует рынок, потому что его исполнение зависит от ликвидности. Даже быстрый HFT-участник не контролирует рынок, потому что его преимущество ограничено конкуренцией, риском и правилами площадки. Даже биржа не определяет цену напрямую, потому что она только задаёт механизм сопоставления. Цена появляется как результат их совместного действия.

Поэтому для анализа HFT важна не только индивидуальная стратегия, но и стратегическая среда. Если маркет-мейкеры одновременно расширяют спред, стоимость немедленного исполнения растёт. Если арбитражёры уходят из связок, расхождения между инструментами могут сохраняться дольше. Если крупные участники дробят заявки, поток становится более сложным для распознавания. Высокочастотная стратегия должна учитывать, что рынок является адаптивной системой. Как только один тип поведения становится заметным, другие участники начинают реагировать.

Неблагоприятный отбор и токсичный поток

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

Также важно понимать, что участник может быть одновременно и поставщиком, и потребителем ликвидности. Маркет-мейкер может агрессивно закрывать позицию, если она стала слишком большой. Информированный участник может использовать лимитные заявки, чтобы скрыть намерение. Нельзя построить устойчивую модель, просто классифицируя заявки по типу. Нужно анализировать поведение: кто появляется в книге, как долго стоит объём, что происходит после исполнения, как быстро восстанавливаются уровни.

Рынок как игра разных горизонтов

Одна из ключевых особенностей рынка состоит в том, что разные участники действуют на разных временных горизонтах. Долгосрочный инвестор может принимать решение на месяцы. Алгоритм исполнения работает в течение дня. Маркет-мейкер пересчитывает котировки за миллисекунды. Событийный алгоритм реагирует на новость за доли секунды. Арбитражёр удерживает позицию секунды или минуты. Все эти горизонты встречаются в одной книге заявок. Это создаёт сложное взаимодействие. Высокочастотная торговля находится на самом коротком конце этой шкалы, но это не означает, что она отделена от долгосрочных процессов. Долгосрочные решения крупных участников часто проявляются как краткосрочный поток заявок.

И что из этого ?

Какой вывод мы можем сделать ? Рынок является не графиком, а взаимодействием участников. Высокочастотная стратегия торгует не «свечу», не «индикатор» и не «последнюю цену». Она торгует против чьей-то срочности, чьей-то информации, чьей-то потребности в ликвидности, чьей-то ошибки, чьего-то риска и чьей-то задержки. Именно поэтому понимание мотивации участников является обязательным этапом перед переходом к инфраструктуре и алгоритмам. Когда мы будем разбирать архитектуру HFT-системы, станет понятно, зачем ей локальная книга заявок, быстрый канал данных, система управления заявками и контроль риска — всё это инструменты для выживания в этой среде.

Архитектура HFT-системы: как собрать гоночный болид

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

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

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

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

HFT — это инженерная система, а не просто алгоритм. Алгоритм — лишь часть контура. До него — данные и нормализация. После него — риск, управление заявками, исполнение, учёт позиции, мониторинг и анализ. Если хотя бы один участок спроектирован плохо, итоговая система окажется непригодной, даже если сама торговая идея разумна.

Общая схема: конвейер смерти

В простом виде архитектуру можно представить как критический путь:
площадка → входной шлюз данных → строитель книги заявок → стратегический модуль → модуль риска → система управления заявками → выходной шлюз → площадка

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

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

Торговая площадка: первое звено

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

Например, система для фьючерсов на регулируемой бирже будет отличаться от системы для валютного рынка. Система для акций США должна учитывать фрагментацию множества площадок. Криптовалютная система столкнётся с большим различием между биржами, неоднородной ликвидностью и отдельным риском самой площадки. Система для опционов будет сложнее из-за множества страйков, сроков и чувствительности к параметрам модели. Поэтому архитектура начинается с ответа: какой рынок, какой инструмент, какая площадка, какой режим данных и тип исполнения.

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

Входной шлюз рыночных данных

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

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

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

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

Нормализация данных: единый язык

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

Но у нормализации есть цена: каждый дополнительный слой обработки увеличивает задержку. В HFT существует постоянный компромисс между универсальностью и скоростью. Универсальная архитектура удобнее для подключения новых площадок. Специализированная — быстрее, потому что меньше преобразует данные. Чем выше требования к скорости, тем чаще система отказывается от избыточной универсальности в пользу специализированного критического пути. В исследовательских системах нормализация обычно важнее скорости. В производственных HFT-системах она должна быть предельно аккуратной: минимум копирований, предсказуемая структура памяти, чёткое разделение между быстрым торговым контуром и аналитической моделью.

Строитель книги заявок: сердце машины

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

Это не просто таблица цен и объёмов. Книга может строиться на разных уровнях детализации: только лучшие цены, агрегированная глубина по уровням или отдельные заявки с идентификаторами. Чем подробнее данные, тем точнее можно оценивать очередь, отмены и поведение участников, но тем выше поток сообщений и сложность обработки.

Построитель должен одновременно обновлять уровни цены, учитывать добавления и отмены, обрабатывать сделки, контролировать последовательность сообщений, исправлять состояние при сбоях и предоставлять стратегии быстрый доступ к согласованной картине рынка. Для стратегий, основанных на верхнем уровне книги (L2-L3-L5-L20), может быть достаточно лучших цен и объёмов. Для маркет-мейкинга нужна более глубокая информация: где крупные уровни, как быстро они исчезают, как меняется очередь, насколько устойчивы заявки рядом с лучшими ценами. Для алгоритмов исполнения важна глубина и вероятность частичного исполнения.

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

Расчёт признаков: что такое сжатие реальности?

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

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

Например, если изменился объём на лучшем спросе, не нужно пересчитывать всю книгу. Нужно обновить соответствующий уровень и связанные признаки. Если прошла сделка, обновляется поток агрессивных сделок и оценка воздействия на цену. В HFT важны не только значения, но и скорость изменений. Дисбаланс книги может быть менее важен, чем его резкое возникновение. Широкий спред может быть нормой для одного инструмента и тревожным сигналом для другого. Признаки должны интерпретироваться в контексте инструмента, площадки и рыночного режима.

Стратегический модуль: мозг системы.

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

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

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

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

Модуль риска

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

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

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

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

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

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

Система управления заявками: диспетчер системы.

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

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

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

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

Для маркет-мейкинга это особенно важно: стратегия одновременно держит множество заявок, постоянно отменяет и переставляет котировки, получает частичные исполнения и меняет объёмы в зависимости от позиции. Без точного учёта она не знает своего реального риска, может удвоить объём, остаться с нежелательной позицией или продолжить котировать устаревший уровень. Система должна быть связана с учётом позиции: каждое исполнение меняет позицию, среднюю цену, результат, доступный лимит и дальнейшую логику.

Выходной шлюз заявок: рука системы.

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

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

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

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

Учёт позиции и результата.

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

В HFT позиция меняется очень быстро. Маркет-мейкер получает серию частичных исполнений. Арбитражёр открывает одну сторону связки и ждёт вторую. Алгоритм исполнения постепенно набирает объём. Система должна немедленно обновлять риск.

Позиция должна учитываться не только после сделки, но и до неё. Активные заявки создают потенциальный риск. Если стоят заявки на покупку, они могут исполниться и увеличить длинную позицию; на продажу — короткую. Модуль риска должен учитывать не только уже исполненные сделки, но и возможное исполнение активных заявок. Иначе стратегия может выставить несколько заявок, каждая по отдельности допустима, но их одновременное исполнение нарушит лимит.

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

Журналирование: память системы.

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

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

Но журналирование создаёт противоречие. Чем подробнее запись, тем лучше анализ. Но чем тяжелее запись в критическом пути, тем выше задержка. Архитектура должна отделять быстрое журналирование от последующей обработки. В критическом пути запись должна быть минимально затратной и предсказуемой. Тяжёлый анализ и запись в долговременное хранилище выполняются отдельно.

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

Мониторинг

Мониторинг — наблюдение за системой в реальном времени. Отличается от журналирования. Журнал отвечает на вопрос «что произошло и как это восстановить». Мониторинг — на вопрос «что происходит сейчас и нужно ли вмешательство».

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

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

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

Аварийный выключатель

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

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

Важно различать мягкую и жёсткую остановку. Мягкая — прекращение отправки новых заявок при сохранении обработки данных и управлении уже активными заявками. Жёсткая — немедленная отмена всех заявок и прекращение активности. Иногда нужно не просто остановиться, а безопасно уменьшить позицию. Аварийный механизм — часть заранее продуманной процедуры.

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

Хранилище данных: Фундамент любой HFT фирмы.

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

Для HFT хранилище должно учитывать объём и структуру информации. Высокочастотные данные очень объёмны. Один ликвидный инструмент в активный день генерирует огромное количество сообщений. Если система работает с множеством инструментов и площадок, объём быстро растёт. Нужно заранее продумывать формат хранения, сжатие, индексацию, доступ по времени, восстановление срезов книги и быстрое чтение для симулятора.

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

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

Воспроизведение событий: Машина времени для алгоритма.

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

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

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

Симулятор: Полигон для бомбардировок.

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

Если симулятор считает, что лимитная заявка всегда исполняется при касании цены, он будет завышать результат. В реальности перед ней может быть большая очередь. Цена может коснуться уровня, но объёма не хватит. Заявка могла прийти слишком поздно. Другие участники могли отменить ликвидность. Сама стратегия могла изменить очередь своим присутствием. Модель исполнения — центральная часть симулятора.

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

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

Исследовательская и производственная среда.

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

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

Опасность — в переносе исследовательской логики в производство без адаптации. Модель может работать быстро в исследовании, но не успевать в реальном потоке. Бэктест может использовать данные, недоступные в момент торговли. Стратегия может считать исполнение гарантированным, хотя в реальности её заявка стояла бы в конце очереди.

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

Командный контур и управление системой

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

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

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

Разделение критических и некритических компонентов.

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

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

Некритические: пользовательские панели, подробные отчёты, долговременное хранилище, исследовательские запросы, визуализация, агрегированная аналитика, постторговые отчёты, долгие расчёты качества стратегии.

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

Почему класс актива меняет архитектуру?

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

Класс актива влияет на всё: формат данных, количество инструментов, структуру книги, частоту сообщений, типы заявок, комиссию, риск, модель позиции, симулятор и требования к оборудованию. Проектирование начинается не с выбора языка, а с описания рыночной задачи: какие инструменты, сколько их, на каких площадках, какой поток данных, глубина книги, горизонт реакции, объём заявок, риск позиции, комиссии, ограничения площадки.

Языки и технологические уровни.

Выбор языка подчинён архитектурной задаче. В критическом пути важны предсказуемость, скорость, контроль памяти и минимальные задержки — обычно C++ или другие низкоуровневые языки. В некоторых системах Java с тщательной настройкой памяти и сборки мусора(GC-1, GC-2 etc). Python — в исследовании, анализе, прототипировании и вспомогательных задачах, но обычно не в микросекундном торговом контуре.

Это не означает, что один язык «хороший», другой «плохой». У каждого своя область. Python удобен для гипотез, работы с данными, статистики и визуализации. C++ — там, где важен контроль памяти, задержка и предсказуемость. FPGA и специализированное оборудование — где логику нужно перенести ближе к железу.

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

Архитектура как защита от самообмана.

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

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

Архитектура — не просто способ «запустить алгоритм», а способ проверить, может ли алгоритм существовать в реальном рынке. Если идея не проходит через данные, риск, заявки, исполнение и журналирование, она остаётся исследовательской гипотезой, а не торговой системой.

Итоговая логика архитектуры

В конечном счёте архитектура HFT-системы должна ответить на несколько вопросов. Что система видит? Она видит рыночные данные, книгу заявок, сделки, собственные заявки, позицию, риск и состояние инфраструктуры. Как система понимает рынок? Она строит локальную книгу, рассчитывает признаки, оценивает ликвидность, спред, дисбаланс, поток, задержку и собственное положение. Как система принимает решение? Стратегический модуль выбирает действие на основании состояния рынка, модели, позиции и параметров риска. Как система защищает себя? Модуль риска проверяет каждую заявку, контролирует позицию, активность, данные, задержку и инфраструктурные условия. Как система действует? Система управления заявками и выходной шлюз отправляют заявки, отменяют их, получают подтверждения и обновляют жизненный цикл. Как система помнит? Журналирование и хранилище сохраняют события для анализа, воспроизведения и регуляторной прозрачности. Как система наблюдает за собой? Мониторинг показывает состояние, предупреждения, задержки, ошибки, позиции и результат. Как система останавливается? Аварийный выключатель прекращает торговлю или переводит систему в защитный режим при нарушении условий безопасности.

Эти вопросы показывают, что HFT является не «быстрым роботом», а системой управления взаимодействием с электронным рынком. Скорость важна, но не существует отдельно от корректности. Данные важны, но бесполезны без построителя книги. Стратегия важна, но опасна без риска. Заявки важны, но бессмысленны без системы управления жизненным циклом. Журналы важны, но должны быть спроектированы так, чтобы не разрушать задержку. Мониторинг важен, но должен наблюдать, а не тормозить.

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

Задержка: Тихий убийца вашей стратегии

После того как мы собрали архитектуру — эту многоуровневую машину смерти, — пора поговорить о крови, которая в ней течёт. О времени. В HFT задержка (latency) — это не просто техническая характеристика, которую стыдливо пишут в спецификации. Это часть экономической модели. Это плата за существование. Это фактор, который определяет, будете ли вы первым в очереди или станете чьим-то обедом.

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

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

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

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

Tick-to-trade: гонка от события до заявки

Центральная метрика в этом аду — tick-to-trade. Время от получения рыночного события («тика») до отправки вашего ответа («трейда»). Тик — это не просто цена. Это изменение книги, сделка, исчезновение объёма — любой сигнал.
Трейд — это не только новая заявка, но и отмена, и модификация.

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

Tick-to-trade — это не просто инженерная метрика. Это приговор. Если ваша стратегия пытается играть на событиях, живущих сотни микросекунд, а сама реагирует за миллисекунды, вы торгуете не сигнал, а его эхо. Вы опоздали. Если вы пытаетесь держать место в очереди, но отменяете устаревшие заявки слишком медленно — вы не маркет-мейкер, а спонсор. Если вы арбитражите расхождение между биржами, но ваша задержка больше срока жизни этого расхождения — ваша стратегия живёт только в бэктесте.

Первый вопрос к любой HFT-идее: соответствует ли скорость системы горизонту сигнала? Если нет — идея мертва.

Откуда берётся задержка: путь данных

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

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

Формат данных тоже ворует время. Бинарный протокол быстрее и компактнее, чем тяжёлый текстовый JSON. Но выбор формата часто диктует биржа. Либо вы принимаете её правила игры, либо не получаете данных. В профи-среде критический поток обрабатывают максимально близко к исходному формату, избегая лишних преобразований. Полнота данных — тоже палка о двух концах. Полный лог заявок (order-by-order) даёт больше информации для анализа очереди, но создаёт дикий поток сообщений. Система, справляющаяся с верхним уровнем книги, может захлебнуться на полных данных. Качество информации всегда связано с архитектурной способностью её переварить.

Сетевая карта и вход в сервер: первый рубеж обороны

Когда пакет достигает вашей машины, он упирается в сетевую карту. Казалось бы, просто железка. Но для HFT это часть критического пути. От того, как пакет перейдёт от сетевой карты к вашему коду, зависит всё.

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

В HFT задача обратная: убрать всё лишнее. Используют настройку сетевых карт, привязку потоков к ядрам, уменьшение копирований, управление прерываниями. В критических системах идут дальше — Kernel Bypass, обход ядра ОС. Пакет напрямую, с сетевой карты в пользовательское приложение, минуя всех посредников. Это даёт минимальную и предсказуемую задержку. Но это адски сложно в разработке и диагностике. Это не волшебная процедура по экстракту денег и излечению от всех болезней, а хирургический инструмент для тех, кто понимает, на что идёт.

Операционная система: друг или враг?

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

Переключение контекста — ещё один нож в спину. Процессор сохраняет состояние одного потока, загружает другой. Это занимает время. Кроме того, данные из кэша вымываются, и последующая работа замедляется. Системные вызовы — когда приложение просит ОС что-то сделать (записать на диск, выделить память) — это переход через границу между пользовательским режимом и ядром. В критическом пути их сводят к минимуму. Прерывания — когда устройства сигналят процессору о событиях — тоже требуют аккуратной настройки, чтобы не мешать торговле.

ОС не враг. Но это среда, которую нужно контролировать. Нельзя просто запустить код на обычном сервере и ждать чуда.

Процессор, ядра и кэш: где ваши данные?

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

Поэтому в критическом пути используют компактные структуры данных, предсказуемый доступ к памяти и минимум лишних объектов. Сложные фрагментированные структуры удобны для разработчика, но убивают кэш. Потоки привязывают к конкретным ядрам, чтобы данные не мотались туда-сюда по процессору и оставались в кэше. Взаимодействие с сетевой картой тоже завязано на архитектуру: если пакет пришёл на один процессорный узел, а обработчик работает на другом, данные идут лишний путь внутри сервера. Мелочь? Для HFT — нет.

Память и выделение объектов.

Динамическое выделение памяти — удобная вещь. В обычном коде объекты создаются и умирают постоянно. В HFT это смертельно опасно. Выделение памяти может быть быстрым, а может вызвать обращение к ОС, блокировку, фрагментацию или, в управляемых языках, включение сборщика мусора. Даже если среднее время мало, редкие выбросы в самые неподходящие моменты убьют всю стратегию.

Выход — предварительное выделение памяти. Буферы, структуры, очереди, элементы книги создаются заранее. В критическом пути — только переиспользование. Но это требует дисциплины: нужно знать максимальную нагрузку, количество инструментов, уровней, заявок, чтобы не уйти в переполнение и не тратить память зря. В языках со сборщиком мусора задача усложняется: нужно минимизировать создание объектов, настраивать среду, прогревать систему. Удобство разработки против предсказуемости — в HFT выбор очевиден.

Блокировки и конкуренция потоков: когда вы ждёте сами себя.

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

Решение — безблокировочные структуры данных, однопоточные модели для критического пути, очереди с заранее известной структурой. Но это сложнее, и «безблокировочная» не значит «автоматически быстрая». Это архитектурный выбор. Задержка может рождаться внутри вашего кода, когда потоки ждут друг друга. Иногда стратегия проигрывает не рынку, а собственному дизайну.

Очереди сообщений внутри системы: молчаливый убийца.

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

Скрытая очередь особенно коварна. Если вы не измеряете её глубину и время ожидания, система может думать, что работает в реальном времени, а на самом деле переваривает прошлое. Входной шлюз быстр, но книга отстаёт. Стратегия быстра, но шлюз не шлёт. Решения принимаются на устаревшей картине. Каждая внутренняя очередь должна быть измерима. Нужно знать, сколько событий внутри, сколько времени они ждут, и что делать при переполнении. Иногда правильнее не пытаться разгрести старые сообщения, а остановиться, синхронизироваться и начать заново. Обработка устаревших данных опаснее временной остановки.

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

Задержка стратегии: когда мозг стратегии тупит.

Часто все силы бросают на сеть и железо, забывая о самом коде стратегии. Это ошибка. Стратегия может быть главным тормозом, если выполняет сложные расчёты на каждом тике. В исследовательской среде модель может крутить регрессии, деревья, нейросети. В производстве так нельзя. Тяжёлые модели обучаются и калибруются заранее. В реальном времени работает компактная форма: предрассчитанные параметры, простые формулы, инкрементальные обновления.

Это не значит, что стратегии примитивны. Они могут быть математически сложными, но сложность должна жить вне критического пути. Справедливая цена может строиться на большом исследовании, а в реальном времени обновляться через несколько признаков. Риск может учитывать сотни сценариев, а проверка заявки — идти по быстрым лимитам. Алгоритм исполнения может иметь сложную оптимизацию, но конкретное действие готовится заранее. Код должен избегать непредсказуемых ветвлений. Редкий сценарий, вызывающий сложный расчёт, проявится именно в момент паники на рынке — и убьёт вас. Задержка стратегии должна измеряться отдельно, иначе можно оптимизировать сеть, пока основное время жрёт сама логика.

Задержка модуля риска.

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

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

Задержка отправки заявки.

Когда решение принято и риск пройден, заявка формируется и летит на биржу. Здесь свои источники задержки: кодирование сообщения, доступ к соединению, исходящая очередь, сетевой стек, сетевая карта, путь до площадки и обработка на стороне биржи. Формирование должно быть мгновенным и однозначным: все параметры известны заранее. Исходящая очередь должна контролироваться: если заявки генерируются быстрее, чем отправляются, они устаревают ещё до выхода. Система должна знать, когда заявку лучше отменить до отправки, когда остановить стратегию из-за перегрузки.

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

Задержка отмены: Что такое скорость защиты?

В HFT отмена часто важнее новой заявки. Если котировка устарела, быстрая отмена спасает от неблагоприятного исполнения. Но и здесь есть задержка. Стратегия должна понять, что заявка опасна, сформировать отмену, пройти проверки, отправить и дождаться подтверждения. До подтверждения заявка всё ещё активна и может быть исполнена. Нельзя считать её отменённой в момент отправки команды.

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

Co-location и география задержки.

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

География критична для межрыночных стратегий. Если возможность возникает между биржами в разных городах, нужно оптимизировать связь между ними. В истории HFT были войны за прямые линии, микроволновые каналы и скоростные маршруты. Но колокейшн убирает лишь часть задержки. Внутренняя архитектура всё равно должна быть быстрой. Близость к бирже с медленным кодом — это как гоночный болид с велосипедными тормозами.

Средняя задержка и хвостовая задержка

Средняя задержка — опасный показатель. Система может иметь средние 20 микросекунд, но с выбросами до 500. Какая лучше — первая, которая почти никогда не выходит за 30, или вторая, быстрая в среднем, но с дикими хвостами? Для HFT — первая. Предсказуемость важнее среднего. Редкие выбросы приходят в моменты пиковой активности и вызывают катастрофу.

Хвостовая задержка рождается из сборки мусора, системных вызовов, блокировок, промахов кэша, прерываний. Её трудно обнаружить в обычном тесте. Поэтому измерение задержки должно быть непрерывным, по каждому участку, с гистограммами и перцентилями. Стратегия должна знать, что в редких случаях её реакция намного медленнее, и учитывать это в размере котировок, спреде, правилах отмены. Нельзя строить систему так, будто она всегда идеальна.

Пропускная способность и задержка: дуэт или дуэль?

Пропускная способность (сколько сообщений в секунду) и задержка (время обработки одного) — разные вещи. Можно быстро обрабатывать много, но пакетами, создавая задержку. Можно быстро реагировать на одиночное сообщение, но захлебнуться при лавине. Для HFT нужно и то, и другое. Тестирование должно включать обычную нагрузку, пиковую, новостной шторм, открытие и закрытие, резкие движения, массовые отмены. Частая ошибка — тестировать на спокойном рынке. Именно в пиковые моменты очереди растут, кэш флудится, блокировки проявляются. Если система не рассчитана на бурю, она утонет в самый важный момент.

Измерение времени: Истина в наносекундах.

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

Задержка и качество исполнения , когда деньги на кону.

Задержка прямо влияет на результат. Для лимитной заявки — на место в очереди. Опоздал — оказался в конце, не получил объём, хотя цена была правильной. Для рыночной заявки — на доступную ликвидность: пока летит, объём съели. Для отмены — на риск: не успел снять — исполнился по старой цене. Для арбитража — на срок жизни возможности. Если расхождение между площадками живёт короче вашей реакции, стратегия — труп. Задержка входит в экономику стратегии. Она влияет на вероятность, цену, комиссию, риск. Её нельзя прикручивать потом. Она — часть ДНК стратегии с первого дня.

Скорость как защита, а не только атака

В поп-культуре HFT — это про «обогнать лохов». Но профи используют скорость для защиты. Маркет-мейкер — чтобы снять опасные котировки. Алгоритм исполнения — чтобы остановить поток дочерних заявок в изменившемся рынке. Арбитражёр — чтобы закрыть вторую сторону. Риск-модуль — чтобы заблокировать стратегию до накопления смертельной позиции. Мониторинг — чтобы заметить отказ до того, как он превратится в град ошибок. Иногда лучшая сделка — это вовремя отменённая заявка. Иногда лучший результат — отказ от торговли при скачке задержки. Быстрый риск-контроль важнее быстрого сигнала. Нужно измерять не только время атаки, но и время защиты.

Когда низкая задержка не помогает?

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

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

Задержка в крипте как на диком западе.

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

Практическая карта задержек

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

Если стратегия учитывает только один уровень — она слепа. Co-location не исправит кривую книгу. Быстрый код не спасёт медленный выходной шлюз. Хорошая сеть не компенсирует дырявый риск-модуль. HFT требует оптимизации всей цепочки.

FPGA: Когда софт становится железом

Всё, что мы обсуждали до этого — процессоры, ядра, кэш, операционка, — всё это про софт. Но есть в HFT уровень, где код перестаёт быть кодом. Где он превращается в кремний, в физическую схему. Это уровень FPGA — программируемых вентильных матриц. И это не просто «ещё один способ ускориться». Это другая философия вычислений.

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

Для HFT это меняет правила игры по трём причинам. Во-первых, FPGA размещается прямо у входа в сервер, рядом с сетевым интерфейсом. Она может перехватывать и разбирать рыночные пакеты на лету, ещё до того, как они увидят операционную систему и ваш софт. Это как иметь таможенника, который проверяет груз, пока пароход ещё швартуется. Во-вторых, на FPGA можно реализовать простейшие, но критически важные торговые автоматы. Увидел сигнал — выставил заявку. Цена изменилась — отменил. И всё это за десятки, а не сотни или тысячи наносекунд. В-третьих, FPGA убирает главный источник непредсказуемости — саму операционку. Ей не нужны планировщик, системные вызовы, переключения контекста. Она просто выполняет зашитую в неё логику с тактовой частотой, предсказуемо, как швейцарские часы.

Но дьявол, как всегда, в деталях. FPGA — это не «ускоренный сервер».
Обычная программа говорит: «сделай А, потом Б, потом В». Проектирование под FPGA — это описание аппаратной схемы: «вот блок, который принимает пакет, вот блок, который выкусывает из него цену, вот блок, который сравнивает с порогом, вот блок, который формирует ответ». Всё это должно работать параллельно, как оркестр без дирижёра. Разработка под FPGA — это ад для программиста. Изменить стратегию — значит переписать схему и заново пройти процесс синтеза, который может длиться часы. Быстро проверить гипотезу или добавить сложный алгоритм машинного обучения — практически невозможно. Это территория, где работают инженеры-электронщики, а не кванты с Python'ом.

Поэтому FPGA — это не для любой логики. Это оружие для хорошо формализованных, стабильных задач. Классика жанра — парсинг биржевых протоколов вроде ITCH или OUCH, построение книги заявок в железе, сверхбыстрые фильтры и межрыночные арбитражные гейты. Там, где сигнал простой, а цена ошибки измеряется наносекундами. Если ваша стратегия требует ежедневной перекалибровки сложной модели или анализа новостей, FPGA вам не друг.

В архитектурном смысле FPGA — это мост между сетью и вашим софтом. Она сокращает критический путь до физического предела. Но она не отменяет всё остальное. Вам всё ещё нужны корректные данные, система управления заявками, контроль позиции, журналирование, мониторинг и аварийный выключатель. Аппаратное ускорение не починит кривую модель и не заменит риск-менеджмент. Оно лишь бескомпромиссно, на уровне кремния, реализует ту логику, которую вы в неё заложили. И если вы заложили туда чушь, она будет исполнять эту чушь с околосветовой скоростью.

FPGA — это не стартовый набор юного HFT-шника. Это вершина инженерной мысли, профессиональный уровень, который имеет смысл только тогда, когда вы уже уткнулись в потолок оптимизации софта и когда выигрыш от каждой выигранной наносекунды перекрывает колоссальные затраты на разработку и сопровождение этой кремниевой железяки. Это последний рубеж в войне за скорость. Дальше — только физика.

Стоимость HFT: почему скорость покупается деньгами?

После того как мы разобрали задержку и поняли, что это главный ресурс, пора задать неудобный вопрос: сколько стоит само право дышать в этом разреженном воздухе? Без этого блока HFT остаётся абстрактной фантазией. Кажется, что достаточно написать гениальный алгоритм, подключить его к рынку и наблюдать, как капает профит. На практике всё иначе. Высокочастотная торговля — это промышленная инфраструктура, которая пожирает деньги ещё до того, как совершена первая сделка. Скорость — это покупаемый ресурс. За неё платят данными, железом, каналами, серверами, командами и постоянной поддержкой.

Поэтому идиотский вопрос «сколько стоит написать HFT-бота?» нужно выбросить этот вопрос мусорку. Сам алгоритм может быть самой дешёвой частью проекта. Настоящая стоимость начинается там, где исследовательская идея должна стать производственной системой, способной выдерживать поток сообщений, контролировать риск, переживать сбои и не разваливаться при смене рыночного режима. Сервер бесполезен без данных. Данные бесполезны без обработки. Обработка бесполезна без подключения. Подключение бесполезно без управления заявками. А всё вместе — опасно без контроля риска и мониторинга. В итоге стоимость возникает на каждом уровне цепочки.

Почему издержки — это часть стратегии?

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

Издержки — это не бухгалтерская формальность, а часть торговой модели. Стратегия должна знать: какой поток данных она покупает, какова стоимость доступа к нему, какая задержка у подключения, какие комиссии применяются к пассивному и активному исполнению, какова вероятность частичного исполнения, сколько стоят отмены и поток сообщений, какой капитал нужен под позицию, какие расходы несёт инфраструктура даже в дни без прибыли. Если стратегия приносит валовую прибыль 50 тысяч долларов в месяц, а инфраструктура, данные, команда и капитал стоят 120 тысяч, это не бизнес, а убыточное хобби. HFT нужно оценивать не по красивой кривой до издержек, а по чистому результату после всех расходов.

Три уровня затрат

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

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

Третий уровень — профессиональный низкозадерживающий HFT. Здесь появляются колокейшн, прямые каналы связи, специализированное железо, платные рыночные потоки, резервирование, команда инженеров, исследователей, специалистов по риску и операционной поддержке. Ежемесячные расходы измеряются десятками и сотнями тысяч долларов, а для мультиплощадочной инфраструктуры — значительно выше.

Эти уровни нельзя смешивать. Исследователь на ноутбуке изучает HFT, но не участвует в профессиональной гонке задержки. Команда, торгующая через обычный API, строит алгоритмическую торговлю, но не обязательно HFT в строгом смысле. Профессиональный HFT начинается там, где рыночная идея неотделима от инфраструктуры доступа.

Рыночные данные: сырьё стратегии

Первая значимая статья расходов — данные. Без них нет HFT. Речь не о свечах и не о задержанных котировках. Для высокочастотного анализа нужны тиковые данные, обновления книги заявок, глубина рынка, сделки, отмены, изменения объёмов, временные метки и иногда отдельные идентификаторы заявок.

Данные верхнего уровня книги показывают лучшие бид и аск, иногда с объёмом. Это полезно для базовой оценки спреда, но недостаточно для серьёзного моделирования очереди и глубины. Данные глубины рынка показывают несколько уровней книги — для маркет-мейкинга и анализа ликвидности это значительно важнее. Полные или почти полные данные книги заявок включают детальные изменения, добавления, отмены и сделки; они особенно ценны для симулятора, но создают большой объём хранения и требуют сложной обработки.

Исторические данные нужны для исследования и бэктестинга. Причём исторические свечи почти бесполезны для HFT. Нужна история рыночных сообщений или качественная реконструкция книги. Данные для недисплейного использования — это особая категория. Если данные используются не для отображения человеку на экране, а внутри алгоритма, риск-системы или маршрутизатора заявок, биржи применяют другие тарифы. Данные «посмотреть график» и данные «торговать алгоритмом» стоят по-разному. Если фирма ещё и передаёт данные клиентам или партнёрам, возникают отдельные лицензионные расходы.

В результате стоимость данных начинается с нескольких долларов в месяц для непрофессионального пользователя и доходит до тысяч или десятков тысяч долларов для профессионального использования, нескольких площадок, недисплейных лицензий и исторических архивов. Дешёвые данные не плохи сами по себе — они достаточны для обучения. Но они не заменят профессиональные потоки, если стратегия зависит от глубины книги, очереди, скорости обновлений и точных временных меток.

Данные для частного исследования и профессиональной системы

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

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

Исторические данные и стоимость бэктестинга

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

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

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

Подключение к площадке

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

На регулируемых рынках подключение стоит тысячи или десятки тысяч долларов в месяц. Для крупных фьючерсных площадок существуют тарифы на каналы 1 Гбит/с и 10 Гбит/с. Прямые каналы часто имеют минимальный срок обязательств — фирма платит не только за использование, но и за саму готовность канала. Подключение требует резервирования. Одна линия — это риск. Если она падает, система теряет данные или возможность отправлять заявки. Поэтому профессиональная инфраструктура использует несколько каналов, резервные маршруты и серверы, отдельные контуры восстановления. Это удваивает или существенно увеличивает расходы. Важны не только внешние каналы, но и внутренние соединения: кросс-соединения внутри дата-центра, соединения с поставщиками данных, брокерами, облаком, резервным дата-центром. Каждое имеет отдельную плату.

Co-location: Место под солнцем

Совместное размещение серверов — один из самых известных расходов в HFT. Это снижает физическую задержку. Но колокейшн — не просто аренда места. Он включает: стойку или шкаф, питание, охлаждение, физическую безопасность, доступ персонала, кросс-соединения, каналы к бирже и поставщикам данных, резервные линии, удалённые операции и сопровождение. Даже небольшой блок может стоить сотни долларов в месяц, а полноценный шкаф с питанием и каналами — тысячи или десятки тысяч. Само место не даёт торговой системы — оно лишь создаёт физическую возможность поставить оборудование ближе к рынку.

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

Питание, охлаждение и серверы

Питание часто недооценивают. В дата-центрах оно оплачивается отдельно. Чем мощнее серверы и сетевое оборудование, тем выше потребление и дороже питание и охлаждение. Если требуется резервное питание, несколько цепей, высокая плотность или FPGA, расходы растут. Питание связано с надёжностью — нужно знать, какие цепи доступны, есть ли резервирование, как организовано охлаждение, что будет при отказе. Простой оборудования в HFT означает не только потерю дохода, но и невозможность управлять активными заявками.

Сервер для HFT отличается от обычной машины. Важна не суммарная мощность, а минимальная и предсказуемая задержка. Это влияет на выбор процессора, памяти, сетевых карт, дисков, BIOS-настроек и охлаждения. Исследовательская среда может использовать обычные серверы или облако. Производственный контур требует строгого подхода: стабильная обработка потока, достаточная пропускная способность, правильная привязка потоков к ядрам, предсказуемая работа памяти. Учебная система стоит несколько тысяч долларов, производственный сервер с качественными компонентами и низкозадерживающей сетевой картой — десятки тысяч. Учитывайте жизненный цикл: купить, доставить, установить, настроить, тестировать, поддерживать, обновлять, заменять. Ошибка в конфигурации может стоить недель задержки.

Сетевые карты, коммутаторы и внутренняя сеть

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

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

FPGA и аппаратное ускорение

FPGA — это специализированный уровень, где логика переносится ближе к аппаратному исполнению. С точки зрения стоимости это сразу несколько расходов. Само оборудование: карты FPGA и сетевые устройства с FPGA-логикой существенно дороже обычных компонентов. Разработка: программировать FPGA сложнее, нужны специалисты по аппаратной логике, верификации и интеграции с торговой системой. Сопровождение: изменять FPGA-логику медленнее и дороже, чем обычный код. Тестирование: ошибка на аппаратном уровне трудноуловима и дорога. FPGA имеет смысл только там, где выигрыш от сокращения задержки оправдывает сложность — обработка пакетов, фильтрация, простые признаки, аппаратные проверки. Для гибкой исследовательской модели FPGA избыточна. Это не «секретная кнопка прибыли», а дорогой и сложный инструмент для узкого класса задач. Если стратегия не доказала, что ограничена именно задержкой, аппаратное ускорение станет дорогостоящим украшением.

Облачная инфраструктура

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

Программное обеспечение

ПО создаёт несколько видов расходов. Собственная разработка: входные шлюзы, строитель книги, стратегия, риск-модуль, система управления заявками, выходной шлюз, журналирование, мониторинг, симулятор, хранилище и исследовательские инструменты. Для серьёзной системы это годы работы. Лицензии: коммерческие библиотеки, платформы данных, системы мониторинга, базы данных, среды моделирования, FPGA-инструменты. Поддержка: биржи меняют протоколы, площадки вводят новые типы заявок, меняются тарифы и требования. Код нужно сопровождать постоянно. Тестовая среда: профессиональная команда имеет отдельные контуры — исследование, симуляция, тестовая торговля, предварительное производство и реальная торговля. Если всё тестируется на живом рынке, риск слишком высок.
ПО в HFT — не разовая разработка, а постоянно поддерживаемая инфраструктура.

Команда

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

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

Комиссии, сборы и клиринг

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

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

Капитал, маржа и финансирование

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

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

Капитал является расходом не только потому, что может быть потерян. У него есть альтернативная стоимость. Деньги, размещённые под HFT-стратегию, могли работать иначе. Стратегия должна покрывать не только прямые расходы, но и стоимость капитала.

Резервирование и отказоустойчивость

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

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

Юридические и регуляторные расходы

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

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

Стоимость ошибок

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

Каждая такая ошибка ведёт к убыткам, штрафам, остановке торговли или необходимости переписать систему. Стоимость HFT включает цену предотвращения ошибок: тестирование, мониторинг, журналирование, аудит, резервирование и контроль.

Криптовалютная инфраструктура: ниже порог, не ниже риск

Крипторынок кажется доступнее. Не всегда нужны классические биржевые договоры, дорогие дата-центры и сложная институциональная структура. Но это не означает, что крипто-HFT дешёвый или простой. Просто структура расходов другая: серверы или облако рядом с нужными регионами, исторические данные по нескольким биржам, нормализация разных API, мониторинг задержек и отказов, резервные соединения, капитал на нескольких биржах, риск вывода средств и самой площадки, комиссии maker/taker, проскальзывание, ограничения API, сверка балансов, защита ключей, кибербезопасность, учёт финансирования по бессрочным контрактам и расходы на перенос капитала.

Крипторынок может иметь больше неэффективностей, но они сопровождаются инфраструктурным риском. Биржа задерживает ответы, API нестабилен, ликвидность исчезает, правила меняются, капитал застревает. Меньший входной порог не означает меньшую сложность.

Примерная карта бюджетов

Чтобы показать порядок величин: учебное исследование — десятки-сотни долларов в месяц (исторические данные, облако, простой симулятор). Серьёзное исследование — сотни-несколько тысяч (тиковые данные, хранение, облачные вычисления, несколько источников). Алгоритмическая торговля без колокейшена — тысячи-десятки тысяч (брокерский API, сервер, данные, риск-модуль, мониторинг, журналирование). Криптовалютная мультибиржевая система — несколько тысяч-десятки тысяч (несколько бирж, облако или серверы, нормализация, капитал на площадках). Профессиональная система на одной крупной площадке — десятки-сотни тысяч (прямые данные, выделенное подключение, размещение, серверы, риск, команда, поддержка). Мультиплощадочный HFT — сотни тысяч-миллионы (несколько дата-центров, каналов, потоков данных, резервирование, юридическая инфраструктура).

Условная смета профессиональной системы

Для одной крупной площадки. Единовременно: покупка серверов, сетевых карт, коммутаторов, возможно FPGA; установка в дата-центре; настройка каналов; сертификация подключения; разработка первой версии системы; создание симулятора; юридическое оформление; первичное тестирование. Ежемесячно: рыночные и исторические данные, место в дата-центре, питание, кросс-соединения, каналы к бирже и поставщикам, резервные соединения, серверная поддержка, облачное хранение и исследовательские вычисления, комиссии за сделки, клиринговые и брокерские сборы, зарплаты команды, юридическое и регуляторное сопровождение, мониторинг, резервное копирование, операционный резерв. Переменные: комиссии от объёма, плата за сообщения или превышение лимитов, дополнительные данные, расширение хранения, новые каналы и инструменты, исправление аварий, замена оборудования.

Такую систему нельзя оценивать только по подписке на данные. Реальная стоимость — совокупная стоимость владения.

Когда стратегия должна покрывать расходы?

Система стоимостью 100 тысяч долларов в месяц требует, чтобы стратегия стабильно зарабатывала больше этой суммы после всех издержек. Если в хороший месяц она делает 120 тысяч, а в плохой теряет 80 — экономика сомнительна. Если зарабатывает 300 тысяч, но требует 50 миллионов капитала с риском редкого крупного убытка — нужно считать доходность на капитал и хвостовой риск. Для HFT важна не только прибыль, но и устойчивость. Возможность может исчезнуть, конкуренты ускориться, биржа изменить тарифы, волатильность упасть, спреды сузиться. Стратегия должна иметь запас прочности. Если она прибыльна только при идеальных условиях и тонком комиссионном преимуществе, она уязвима.

Почему розничный участник не конкурирует?

Теперь очевидно, почему розничный трейдер почти не конкурирует в классическом HFT. Дело не только в «медленном интернете». У него нет прямого доступа к биржевой инфраструктуре, профессионального рыночного потока, колокейшена, низкозадерживающего оборудования, команды инженеров, собственного строителя книги, реалистичного симулятора очереди, недисплейных лицензий, промышленной системы управления заявками, многоуровневого риск-контроля, резервных каналов, юридической инфраструктуры и достаточного капитала.

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

Сухой остаток: Во что реально влетает HFT?

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

Давайте отбросим эвфемизмы. Даже если ты не Citadel Securities и не Jump Trading, а просто хочешь создать минимально серьёзный механизм на одной-двух площадках (Tier-2), забудь про цифры из интернет-магазинов. Первоначальный чек — это не покупка ПК, это инвестиция в создание торгового мини-завода. Ты платишь за серверы с низкой задержкой, сетевое оборудование, разработку боевого контура, построитель книги, систему управления заявками, риск-модуль, симулятор и первичную закупку исторических данных. Всё это выливается в диапазон от $250,000 до $1,500,000. Да, это только чтобы включить свет и проверить, не падает ли твой код в ад.

А теперь самое весёлое — ежемесячный налог на существование. Пока ты спишь, твоя HFT-инфраструктура жрёт деньги. Рыночные данные, колокейшн, аренда каналов, облачные вычисления для исследований, поддержка системы, комиссии биржи, зарплата инженерам, которые не дают этому монстру развалиться. Это постоянное кровотечение из бюджета в размере от $50,000 до $250,000 ежемесячно. И это только Tier-2. Если твоя стратегия работает на нескольких инструментах или ты решил добавить резервирование — умножай на полтора.

Теперь переходим в высшую лигу. Tier-1 — это не просто торговля, это промышленная империя. Несколько площадок, прямые каналы, резервные контуры, профессиональные потоки данных, специализированные серверы, FPGA-карты и отдельные команды разработки, исследования, риска и операционного контроля. Вход в этот клуб стоит от $2 до $10 миллионов и выше. И это только на старте.

Месяц жизни такого механизма — это чек на $300,000 — $2,000,000. Для мультиплощадочной машины с аппаратным ускорением и тонной дорогих лицензий на данные цифры могут быть кратно выше. Это не траты на сервер, это бюджет на содержание армии.

И да, чуть не забыл самое главное. Всё это — цена за право стоять у станка, а не за сам товар. Сверху нужен торговый капитал. Живые деньги под позиции, обеспечение, просадки и ошибки. Так что HFT-проект с месячным расходом в 200 тысяч долларов может требовать капитала на порядок больше, просто чтобы иметь экономический смысл.

Главный вывод простой: HFT начинается не со строчки кода, а с холодного расчёта. Сколько стоит получить данные? Сколько стоит быть рядом с биржей? Сколько стоит команда? Сколько стоит одна ошибка? И самый важный вопрос: сколько, чёрт возьми, должна зарабатывать твоя стратегия после комиссий, задержки и проскальзывания, чтобы окупить всю эту машину?

Если у тебя нет ответа на этот вопрос — у тебя не HFT-бизнес. У тебя просто очень дорогое хобби.

Дисклеймер

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

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

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

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

инвестиционная рекомендация;

персональный финансовый совет;

торговый сигнал;

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

предложение финансовых услуг;

обещание доходности;

гарантия результата;

инструкция по запуску торгового алгоритма;

инструкция по созданию HFT-системы для реального рынка;

руководство по подключению к биржам, брокерам, поставщикам данных или торговым площадкам;

рекомендация использовать кредитное плечо, маржинальную торговлю, деривативы, криптовалютные биржи, API, автоматические торговые системы или иные высокорисковые инструменты;

совет по управлению капиталом, построению портфеля, выбору брокера, выбору биржи, выбору торгового протокола, выбору оборудования или размещению серверов.

Любые решения, принятые читателем на основании настоящего материала, включая инвестиционные, торговые, исследовательские, технологические, юридические, налоговые, образовательные, управленческие или иные решения, принимаются исключительно на его собственный риск и под его личную ответственность. Финансовые рынки, включая рынки акций, фьючерсов, опционов, валют, криптоактивов, деривативов и иных инструментов, связаны с высоким уровнем неопределённости, операционного риска, рыночного риска, риска ликвидности, риска проскальзывания, риска исполнения, риска потери капитала и риска технических сбоев.

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

Если в тексте рассматриваются HFT, алгоритмическая торговля, маркет-мейкинг, статистический арбитраж, событийные стратегии, межплощадочные расхождения, дисбаланс книги заявок, управление очередью, совместное размещение серверов, kernel bypass, FPGA, биржевые протоколы, рыночные данные, симуляторы исполнения или иные технические элементы, это делается исключительно в образовательных и аналитических целях. Настоящий материал не является инструкцией по практическому запуску таких систем, не призывает читателя создавать торговых роботов, подключаться к торговым площадкам, обходить правила бирж, нарушать ограничения брокеров, получать несанкционированный доступ к данным, злоупотреблять API, манипулировать заявками или совершать действия, противоречащие законодательству, правилам торговых площадок, брокерским соглашениям или нормам добросовестного поведения на рынке.

Особо следует отметить, что такие практики, как spoofing, layering, front-running, фиктивное размещение заявок без намерения исполнения, создание ложного представления о спросе или предложении, манипулятивные отмены, злоупотребление рыночными данными, нарушение правил торговой площадки, обход технических ограничений, использование непубличной информации или иные формы рыночного злоупотребления, не рассматриваются в настоящем материале как допустимые стратегии. Их возможное упоминание допускается только в критическом, историческом, регуляторном или образовательном контексте и не является рекомендацией, инструкцией или оправданием подобных действий.

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

наличия у автора внутренней непубличной информации;

аффилированности автора с соответствующими организациями;

рекомендации пользоваться их услугами;

утверждения о превосходстве или непригодности конкретной площадки, брокера, поставщика данных, оборудования или программного решения;

обвинения каких-либо лиц или организаций в противоправном поведении;

приписывания конкретным лицам, компаниям, биржам, фондам, брокерам или участникам рынка мотивов, не подтверждённых документально;

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

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

Любые математические модели, схемы архитектуры, причинно-следственные рассуждения, примеры работы книги заявок, описания задержки, упрощённые формулы, технические аналогии, оценки рыночного воздействия, рассуждения о спреде, ликвидности, неблагоприятном отборе, токсичном потоке, очереди заявок, вероятности исполнения, стоимости инфраструктуры, симуляции и бэктестинга приводятся исключительно в иллюстративных, образовательных и объяснительных целях. Они не являются доказательством того, что конкретные участники рынка применяют именно такие модели, процедуры, алгоритмы, методы оценки риска, инфраструктурные решения или способы принятия решений.

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

потерей капитала;

убытками от сделок;

упущенной выгодой;

ошибками в интерпретации материала;

ошибками в самостоятельных расчётах;

неверным использованием терминов, моделей, схем, графиков или технических описаний;

убытками от автоматической, алгоритмической или ручной торговли;

ошибками программного кода, торговых роботов, симуляторов, риск-модулей или систем управления заявками;

проблемами с брокерами, биржами, поставщиками данных, API, дата-центрами, облачными сервисами или торговыми площадками;

потерей доступа к аккаунтам, ключам, серверам, данным, капиталу или иным ресурсам;

действиями третьих лиц, совершёнными после ознакомления с материалом;

использованием текста вне его исходного образовательного, аналитического и дискуссионного контекста.

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

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

Настоящий материал не требует от читателя согласия с автором. Его задача — показать, что высокочастотная торговля является не “быстрым ботом”, а сложной инженерно-рыночной системой, где цена формируется через поток заявок, ликвидность, задержку, очередь, стоимость доступа, управление риском и качество исполнения.