Главная Как я пытался обогнать алгоритмы на Мосбирже и потерпел неудачу: эксперимент с индикатором-поводырем

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

Как я пытался обогнать алгоритмы на Мосбирже и потерпел неудачу: эксперимент с индикатором-поводырем
  • Источник smart-lab Сегодня 01:26
  • 41
  • Нейтральная окраска записи

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

Последние пару недель я исследовал идею так называемого поводыря — это когда существует опережающий или лидирующий индикатор и если он начинает расти или падать, то связанные с ним бумаги с большой вероятностью повторяют это движение. В качестве поводыря я хотел использовать внешний рынок и 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, задержка до меня в город Пермь — несколько секунд (иногда больше).

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

Моя статья преследует две цели:

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

предостеречь новичков от потери времени и денег на похожие схемы.

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

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

Так и в финансах иногда возникает схожая ситуация когда один рынок реагирует быстрее другого и по изменениям цены на первом рынке можно увидеть куда пойдёт цена на втором рынке.

Что такое фьючерс? Если совсем упрощённо, фьючерс — это биржевой контракт на будущую цену какого‑либо актива, но трейдера это просто инструмент для ставки на рост или на падение цены.

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

Получаем котировки мирового рынка.

Видим резкое движение цены.

Покупаем или продаём соответствующий фьючерс на Мосбирже.

Ждём, пока российский рынок догонит мировой.

Закрываем позицию.

То есть фактически это был поиск временного преимущества за счёт более быстрого источника данных.

Для начала я бегло поискал какие вообще могут быть поставщики данных.

В эксперименте мне не очень хотелось тратиться, поэтому решил начать с бесплатного тарифа API TwelveData.

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

А для Московской биржи я выбрал брокера Финам и записывал архив истории стаканов для схожих инструментов. Тут ограничений по количеству понятно не было.

Коннекторы пришлось написать самостоятельно на Python.

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

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

А через API брокера Финам записывал данные биржевого стакана (Order Book). Это давало возможность видеть не просто последнюю цену, а актуальные котировки на покупку и продажу (bid/ask) и рассчитывать спред.

По итогу пришлось написать 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 (по вертикали) — столбики, показывающие силу связи (корреляцию).

Как это так — хвост виляет собакой? Мосбиржа управляет мировым Биткоином? Конечно, нет. Похоже здесь кроется главная причина провала эксперимента — дело не в том, что Мосбиржа опережает мир, в в том что мой мировой поводырь (TwelveData) безбожно тормозит.

Но ведь была прибыль? Формально для BTM6 получилось:

точность определения направления около 53%;

средняя прибыль порядка 1.26 bps (базисных пунктов). А 1.26 базисных пункта — это всего лишь 0.0126% движения цены.

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

Золото (XAUUSD → GDM6 и GNM6): ложный след

Совместных наблюдений: 225,453 (62.6 ч) Период: 2026-06-01 11:42:40+00:00 … 2026-06-06 15:00:05+00:00

Если связь математически значима (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

Аналогично — судя по графикам здесь запаздывание ещё более сильное. Красная линия показывает лучший лаг только для значений от 0 и выше, а самый высокий столбик в минусовой зоне около -30.

Бесплатные данные — слабое звено. Самый простой вывод, который стал вырисовываться ещё до того, как я стал несколько дней записывать данные — минимальная единица времени в API была секунда, а не меньше, хотя реклама утверждала ~170 мс или это только на платном тарифе? К слову TwelveData не американская, а сингапурская компания.

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

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

Эксперимент правда по итогу показал не то, что я хотел проверить. Вместо ответа на вопрос есть ли лаг между мировым рынком и Московской биржей я получил ответ, что бесплатный поставщик данных TwelveData запаздывает на 1–60 секунд относительно реал‑тайм стакана брокера Финама на Московской бирже.

Итого мой сетевой маршрут был: из Перми в Сингапур + бесплатный тариф + КВН.

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

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

Автор: Михаил Шардин 🔗 Моя онлайн‑визитка 📢 Канал «Умный Дом Инвестора» в TG или MAX

9 июня 2026 г.

Вам также может понравиться

Актуальные новости на 09.06

Актуальные новости на 09.06

  • Источник smart-lab
  • Сегодня 00:48
  • 67

НОВОСТНАЯ РАССЫЛКА

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

отписаться