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

В качестве поводыря я хотел использовать внешний рынок и API американского поставщика данных для того чтобы получать информацию о:
XAU/USD — Gold Spot / US Dollar
EUR/USD — EUR/USD
BTC/USD — Bitcoin to US Dollar (котировки выбранной поставщиком биржи)
А саму торговлю осуществлять на фьючерсах Мосбиржи:
GDM6 — фьючерсный контракт на золото
GNM6 — фьючерсный контракт на золото (мини)
EDM6 — фьючерсный контракт на курс евро‑доллар США
IBM6 — фьючерсный контракт на акции IBIT iShares Bitcoin Trust ETF
BTM6 — фьючерсный контракт на Индекс МосБиржи Биткоина
Сразу уточню что я не пытался строить высокочастотную торговую систему или конкурировать с маркет‑мейкером. Я частное лицо, НЕ представитель фонда или брокера, а работаю через обычный брокерский API, задержка до меня в город Пермь — несколько секунд (иногда больше).
Visual Studio Code с папкой где собран весь проектВ моей идее очень сильно интересовала практическая сторона — существует ли на Мосбирже задержка в секунду или больше, которые можно использовать для алгоритмической торговли через инфраструктуру российского брокера?
Моя статья преследует две цели:
показать процесс исследования торговой идеи;
предостеречь новичков от потери времени и денег на похожие схемы.
А ещё Вы можете приходить с критикой в комментарии — возможно, я где‑то ошибся в интерпретации результатов или упустил важный фактор.
Суть идеи: простыми словами для новичковЧто такое поводырь на финансовом рынке? Если говорить очень упрощённо, то представьте молнию и гром — всегда видят вспышку света, а потом через некоторое время слышат звук раскатов грома. Свет распространяется быстрее и поэтому можно сказать что это своеобразный поводырь для грома.
Молния и громТак и в финансах иногда возникает схожая ситуация когда один рынок реагирует быстрее другого и по изменениям цены на первом рынке можно увидеть куда пойдёт цена на втором рынке.
Что такое фьючерс? Если совсем упрощённо, фьючерс — это биржевой контракт на будущую цену какого‑либо актива, но трейдера это просто инструмент для ставки на рост или на падение цены.
Моя стратегия: арбитраж одной ногой. Вообще классический арбитраж подразумевает одновременную работу на двух площадках, но я думал о более простой схеме:
Получаем котировки мирового рынка.
Видим резкое движение цены.
Покупаем или продаём соответствующий фьючерс на Мосбирже.
Ждём, пока российский рынок догонит мировой.
Закрываем позицию.
То есть фактически это был поиск временного преимущества за счёт более быстрого источника данных.
Техническая реализация: как я это собиралДля начала я бегло поискал какие вообще могут быть поставщики данных.
В эксперименте мне не очень хотелось тратиться, поэтому решил начать с бесплатного тарифа API TwelveData.
WebSocket документация TwelveDataКак оказалось через WebSocket у поставщика можно получать только три инструмента и поэтому я задействовал все три доступных: золото, биткоин, евро.
А для Московской биржи я выбрал брокера Финам и записывал архив истории стаканов для схожих инструментов. Тут ограничений по количеству понятно не было.
Коннекторы пришлось написать самостоятельно на Python.
Коннектор для TwelveData
Коннектор для ФинамКогда по отдельности коннекторы на запись заработали, и потребовалось запускать их одновременно, то обнаружилось что запись данных с TwelveData работают строго с КВН, а брокер передаёт данные только строго без КВН.
Обратите внимание — самая маленькая размерность времени у поставщика данных — это секунды, столбец exchange_ts, а не микросекунды как в локальном времениЕщё можно заметить разницу в собираемых данных. Через внешний API TwelveData я мог получать только историю последних сделок — просто фиксацию факта изменения цены и с минимальной единицой времени 1 секунда.
А через API брокера Финам записывал данные биржевого стакана (Order Book). Это давало возможность видеть не просто последнюю цену, а актуальные котировки на покупку и продажу (bid/ask) и рассчитывать спред.
При записи стакана через API брокера Финам — формат времени микросекунды 6 знаков (.194431) как локально, так и на сервере. А ещё видно что разница между отправкой данных сервером и моим получением — несколько секунд, то есть HFT сразу мимоПо итогу пришлось написать bash скрипт, который запускает две копии python — одна работает через частную сеть, а другая безо всяких обходов напрямую.
Скрипт, который ведёт запись данныхВсё это стало скатываться к программистским штукам, а не к исследованию рынка.
Ограничения эксперимента. Здесь я ещё раз хочу сказать, что у меня нет коллокации или прямого подключения к бирже и изначально высокочастотная торговля не планировалась. Поэтому преимущества на уровне быстрее секунды я просто не рассматривал. Я хотел найти лаги порядка нескольких секунд.
Вообще из моих данных: 2026-06-06T20:29:49.194431 — если после точки, разделяющей секунды и доли:
3 знака (например,.194) — это миллисекунды
6 знаков (.194431) — это микросекунды
9 знаков — это наносекунды
Как работал анализатор. После того, как отладил техническую часть я несколько дней записывал данные, чтобы накопить объем для анализа.
Скрипт для анализа записанных данныхПосле этого я написал ещё один скрипт, который:
синхронизировал котировки по времени вплоть до секунд;
рассчитывал кросс‑корреляции;
искал оптимальную задержку, тот самый лаг;
проверял статистическую значимость результатов;
оценивал потенциальную прибыльность сигналов.
Главный вопрос был простым: насколько мировая цена опережает Московскую биржу?
Разбор результатовБиткоин (BTCUSD → BTM6 и IBM6): миф о задержке на Мосбирже
Совместных наблюдений: 236 980 (65.8 ч). Период: 2026–06-01 11:42:40+00:00 … 2026–06-06 15:00:06+00:00.
Как я уже писал выше логика была простая: раз биткоин торгуется круглосуточно по всему миру то казалось с разумным предположить что российский фьючерс может реагировать с небольшой задержкой и даже две-три секунды уже давали бы интересный результат.
Анализ записанных данных скриптом показал что Best lag = 0 секунд (НО скрипт рассчитывает лучший лаг только для значений от 0 и выше, ведь в прошлое вернуться нельзя), но из графика видно что самый высокий столбик на -1!
Это означает, что цена на Мосбирже дернулась на 1 секунду раньше, чем пришла котировка с мирового рынка (через мой TwelveData API)!
BTC/USD — Bitcoin to US Dollar → BTM6 — фьючерсный контракт на Индекс МосБиржи БиткоинаНа графике столбиковая диаграмма:
по оси X (по горизонтали) идут секунды смещения (от -60 до +60 секунд);
по оси Y (по вертикали) — столбики, показывающие силу связи (корреляцию).
BTC/USD — Bitcoin to US Dollar → IBM6 — фьючерсный контракт на акции IBIT iShares Bitcoin Trust ETFКак это так — хвост виляет собакой? Мосбиржа управляет мировым Биткоином? Конечно, нет. Похоже здесь кроется главная причина провала эксперимента — дело не в том, что Мосбиржа опережает мир, в в том что мой мировой поводырь (TwelveData) безбожно тормозит.
Но ведь была прибыль? Формально для BTM6 получилось:
точность определения направления около 53%;
средняя прибыль порядка 1.26 bps (базисных пунктов). А 1.26 базисных пункта — это всего лишь 0.0126% движения цены.
<code class="1c"> Направленное предсказание (threshold=6.00 bps, horizon=5s) ... N сигналов: 12,050 Accuracy: 53.16% Sharpe: 319.027 (это некорректный расчёт) Mean P&L: 1.2642 bps По часам суток (UTC) ... ПериодNLag Corr Acc 07-10 41,111 0 0.2648 0.4760 10-13 55,119 0 0.2858 0.5322 13-16 50,361 0 0.2954 0.5615 16-19 43,145 0 0.2478 0.5525 19-21 23,298 0 0.2662 0.5852</code>
На бумаге это выглядит как небольшой статистический перевес. На практике всё гораздо хуже. Комиссии, спреды и проскальзывание легко съедят подобную доходность.
Золото (XAUUSD → GDM6 и GNM6): ложный след
Совместных наблюдений: 225,453 (62.6 ч)
Период: 2026-06-01 11:42:40+00:00 … 2026-06-06 15:00:05+00:00
XAU/USD — Gold Spot / US Dollar → GNM6 — фьючерсный контракт на золото (мини)
XAU/USD — Gold Spot / US Dollar → GDM6 — фьючерсный контракт на золотоЕсли связь математически значима (p‑value < 0.05), столбик зеленый. Если это просто рыночный шум — столбик серый.
Но судя по графикам здесь запаздывание ещё более сильное. Красная линия показывает лучший лаг только для значений от 0 и выше, а самый высокий столбик в минусовой зоне около -30 секунд.
Однако для золота есть диаграмма рассеяния — код рисует этот график только если best_lag больше нуля и хотя глазами мы видим что он отрицательный, но скрипт определял значение только для положительных значений и поэтому графики сгенерировались.
Посмотрите на график диаграммы рассеяния он усыпан множеством полупрозрачных синих точек (облако). Каждая точка — это конкретное наблюдение. По оси X — скачок мировой цены из API. По оси Y — скачок нашей цены спустя найденное время задержки (например, через 4 секунды для GDM6).
Красная линия почти горизонтальная — иллюстрация того, что предсказательная сила отсутствует. Как мы сейчас понимаем это из-за большой задержки TwelveData.

Евро/доллар (EURUSD → EDM6): полный рассинхрон
Совместных наблюдений: 197,128 (54.8 ч)
Период: 2026-06-01 11:42:40+00:00 … 2026-06-06 14:59:20+00:00
EUR/USD — EUR/USD → EDM6 — фьючерсный контракт на курс евро‑доллар СШААналогично — судя по графикам здесь запаздывание ещё более сильное. Красная линия показывает лучший лаг только для значений от 0 и выше, а самый высокий столбик в минусовой зоне около -30.
Почему не получилось?Бесплатные данные — слабое звено. Самый простой вывод, который стал вырисовываться ещё до того, как я стал несколько дней записывать данные — минимальная единица времени в API была секунда, а не меньше, хотя реклама утверждала ~170 мс или это только на платном тарифе? К слову TwelveData не американская, а сингапурская компания.
Рекламное описание Twelve DataРынок стал гораздо эффективнее. Я изначально не искал преимущества на уровне миллисекунд, потому что находясь в Перми в реальной жизни их не получить.
Профессиональные участники никуда не делись. Хотя эксперимент не был ориентирован на высокочастотную торговлю, нельзя забывать о существовании крупных участников рынка. Маркет-мейкеры и алгоритмические фонды постоянно отслеживают связанные инструменты на разных площадках.
Эксперимент правда по итогу показал не то, что я хотел проверить. Вместо ответа на вопрос есть ли лаг между мировым рынком и Московской биржей я получил ответ, что бесплатный поставщик данных TwelveData запаздывает на 1–60 секунд относительно реал‑тайм стакана брокера Финама на Московской бирже.
Итого мой сетевой маршрут был: из Перми в Сингапур + бесплатный тариф + КВН.
Похоже я сравнивал не рынки, а два разных канала доставки данных с заведомо разной скоростью. Если хотите проверить мои данные — напишите мне, сброшу архив + скрипт.
После того, как я написал этот текст и дал почитать его LLM с синим логотипом — она мне дала ответ что это не история неудачи, а практическое руководством по тому, как НЕ надо исследовать рынок :) Так что не будь как нейросеть — напиши в комментриях — получится ли на ваш взгляд эта идея без аренды серверов или нет? Как уменьшить сетевую задержку? С позиции частного лица.
Автор: Михаил Шардин
🔗 Моя онлайн‑визитка
📢 Канал «Умный Дом Инвестора» в TG или MAX
9 июня 2026 г.
Публичные рыночные данные можно получать без открытия счета и создания API-ключей и без всяких искусственных задержек ( ну кроме задержек на расстояние).
В трейдинге главное — понимание и использование принципов трейдинга, основных рыночных законов. Всё остальное (всякие там неэффективности, врЕменные взаимосвязи разных рынков) — это шелуха!
Это преходяще, а рынок вечен и доказывает это 2 века вроде...
Даже если выдумаете вне законов что-то хорошее, оно не будет жить века и даже, скорей всего, годы.
И про миллисекунды забыли бы, и про АПИ.
Хотите? Можем вместе поработать,
могу предложить несколько идей на ваш выбор.
Мой выбор только по терминалу — или Метатрейдер, или ТСЛаб.
Автор реально не понимает что игра на мммвб идёт строго в одни ворота а именно против вас?
Вы можете использовать какие угодно индикаторы но повторяю там идёт игра на деньги а денег становится все меньше!!!
Их везде уже не то что уже нет, а тупо не хватает
Посмотрите на долги госконтор. Это триллионы.
А как вам прецендент с одной нефтяной конторой которая для выплаты дивидендов хочет взять кредит?
Да я под столом!!!
И в таких условиях на бирже что вы хотите словить то? Это они вытаскивают из вас деньги.
1. На бирже вы пришли за деньгами?
Но там же за деньгами и эмитент (история ВТБ как вам ?) и брокер и даже я с Мартыном.
Я прав?
2. Денег становится меньше.
3. Не забывайте что Коррупция бьёт рекорды и повторяю биржа притягивает к себе всех. Тут я не про наивняков а про проф. Аферистов.
Поймите — Никому не нужны акции умирающих предприятий, просто то что они умирают поймут не все и сразу
Помянем РТМ
А теперь о грустном. Такая постановка и реализация задачи могли бы иметь смысл, если бы: используется hft + маркетмейкеры на ФОРТС не используют hft и не имеют высокоскоростное получение данных с зарубежных торгов. А в вашей постановке вы пытаетесь отхватить кусок хлебы маркетмейкера заведомо проигрывая ему в скорости как реакции на событие, так и ее реализации в заявку.
..
но топикстартер не учел одно что анализ на историях цен бессмысленно, искать надо причину изменения.
анализировать бы не мешало объемы в денежном виде и колличестве сделок, присмотритесь к «стакану» любого эмитента и увидите как маркетмакеры и «машино-торговые-системы» двигают цену и определяют направление..
… цена сделок по-сути это уже свершенная манипуляция,
… против трейдера играет вся мощь вычислительных систем и алгоритмы ну и конечно денежная величина
..
оцените, когда вы продаете позицию по «рыночной цене» выша продажа будет ниже рынка!
когда «крупняк» кроется по рынку ожидаемо он своим объемом вылит на планки и кто там их покупает (?)
так же и в обратную сторону «купить по рынку» откуда-то появляется объем ..
… то что брокеры и маркетмакеры манипулируют тут известно было всегда!
..
это очень математически емко и не тривиально!
..
решения очень неожиданные и «случайные» тк много еще не решенных типа коллизий.
..
если кто-то найдет способ решений то многие сферы техники упростятся в том числе и в трейдинге.
- VPS и колокейшн. Сервер нужно размещать в том же дата-центре, что и биржу (для Мосбиржи — DataSpace/MT-1, для Binance — AWS Tokyo). 1000 руб./мес. — реалистичный бюджет (Selectel, Timeweb, базовые тарифы AWS). Бесплатные уровни (Oracle, AWS Free Tier) подойдут для теста кода, но могут иметь сетевые ограничения.
- Посредники — это зло. Для поиска лагов (арбитража) брать данные через агрегаторы (вроде TwelveData) бессмысленно. Они добавляют задержку на маршрутизацию и агрегацию. Нужен только прямой WebSocket от биржи или брокера.
- Источник данных (Binance).
- Крипта (BTC): Отличная идея, прямой коннект даст минимальный пинг.
- Золото и EUR/USD: Тут есть нюанс. На Binance нет классического спот-золота или межбанковского форекс EUR/USD. Там торгуются токенизированное золото (PAXG) и стейблкоины (EUR/USDT). Их цена и ликвидность могут отличаться от традиционных рынков, что внесет свою погрешность в арбитраж.
Резюме: Автор действительно протестировал не связку рынков, а задержки разных каналов доставки данных. Если он арендует VPS в ДЦ Мосбиржи и подключится к API брокера напрямую, лаг упадет до миллисекунд, и тест станет валидным. Плюс это важно иметь понимание это у нас технический задерг в нашем балоте на фьючерсах или на другой бирже тоже это + к риск менеджменту.а такие задерги бывают...
даже если денег не принесет.
но зато и подтверждение движения будет.
С тех пор, как узнал, что все быстрые сидят в коллокации и FPGA, я оставил затею быть быстрее, искать лаги, гэпы между биржами или парами.
Перешёл на более высокие тайм фреймы, тренды, классические стратегии и управление портфелем. Автоматизация действительно помогает делать ручные действия эффективными.
-У Вас столько детей, наверное, Вы их любите?
-Нет, я люблю сам процесс.
И вообще все акции на ММВБ были более коррелированными, и можно было тупо арбитражить свои синтетический индекс против ришки, а ришка могла запаздывать до 2-3 секунд!
Вообще было нормой когда к примеру фьюч на сбер обгонял сам сбер.
Тут не будет нужды в прямом доступе на биржу и прочим, т.к. это разные продукты и есть риск того, что оно вообще никуда не пойдёт из-за внутренних факторов.
Да никак.
Что нужно.
- Использование арендованных волоконно‑оптических линий между дата‑центрами. Провайдеры дают SLA на задержку и джиттер, резервируют маршруты и обеспечивают приоритетную коммутацию.
- Коммутаторы с режимом «cut‑through» (пересылка кадра сразу после чтения адреса, без ожидания полного приёма), 10/25/100 Gbps Ethernet, аппаратные тайм‑стемпы (PTP/IEEE 1588) для синхронизации времени с точностью до микросекунд.
— Применение UDP‑подобных протоколов или специализированных транспортных слоев, отключение лишних проверок, использование kernel bypass (DPDK, Solarflare OpenOnload), чтобы пакеты не проходили через ядро ОС.
- Серверы в ключевых IXP (например, Frankfurt, London, New York, Tokyo), чтобы сократить число «хопов» до бирж и контрагентов.
Что не нужно.
— Публичный интернет.
— Программные ускорители и обычные VPN.
- Wi‑Fi и бытовые роутеры.
Есть похожий опыт. Правда проверял на истории. Считал автокорреляцию цен в ленте сделок на ОKX. На бумаге все выходило очень красиво, даже с учетом комсы. В реальности вся доходность была получена в высоко волатильные моменты где среднее время на круг оказалось меньше 10мс.
Опыт получили, выводы сделали — это уже отлично и лучше, чем у многих!
Спасибо, что поделились![]()
Комменты почитать — так все всё знают: и как лучше сделать, и как надо было. Даннинг–Крюгер?
Изначально в скрипте не было понятно, что например на биткоине секундная задержка