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

Google Maps для биржевого стакана: пишем визуализатор данных Московской биржи на Python

2025/12/16 05:23

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

Проблема в том, что историю стакана почти нигде не увидеть: розничные терминалы для частных клиентов дают лишь текущую таблицу DOM ( Depth of Market ) и это статичный срез без прошлого.

Чтобы увидеть то, на что обычный трейдер не обращает внимание я собрал инструмент, который превращает исторические данные L2 Order Book (стакан заданной глубиной) и Trades Stream (обезличенные сделки) в тепловые карты и позволяет изучать эволюцию заявок на Московской бирже через браузер с Deep Zoom — плавно, как в Google Maps.

Знаете Bookmap?

29273b08722bf4e241e5dabb4892bb71.png

Если вы когда‑либо видели Bookmap, то идея проекта вам покажется знакомой. Bookmap — это профессиональный инструмент, который рисует тепловую карту ликвидности стакана и сделок в реальном времени: где стоят крупные заявки, как они двигаются, исчезают или наоборот «притягивают» цену. Но Bookmap дорог, закрыт и не работает с Московской биржей.

Что мы на самом деле видим?

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

Когда‑то впервые открыть глаза на это помогли работы Nanex. Их система NxCore показала, что HFT‑алгоритмы оставляют следы — характерные узоры, вспышки ликвидности, провалы, которые на свечном графике просто растворяются. В их визуализации «Disturbing Liquidity» исчезновение 80% заявок за одну секунду выглядело как цифровой обвал — видимый только тем, кто смотрит внутрь книги ордеров, а не на результат на графике.

Nanex ~ 14-Sep-2012 ~ Disturbing Liquidity. Prices and depth of book (top). Size map (bottom).
Nanex ~ 14-Sep-2012 ~ Disturbing Liquidity. Prices and depth of book (top). Size map (bottom).

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

Визуализация высокочастотной торговли в Bitcoin. Источник: parasec.net
Визуализация высокочастотной торговли в Bitcoin. Источник: parasec.net
Визуализация высокочастотной торговли в Bitcoin. Источник: parasec.net
Визуализация высокочастотной торговли в Bitcoin. Источник: parasec.net

В моей реализации я пытаюсь сделать так же. Код берет L2 Order Book (стакан глубиной 50) и Trades Stream (обезличенные сделки) и проходит путь от «хаоса массивов» до карты эволюции рынка.

Мой код представлен на GitHub: empenoso/MOEX-OrderBook-DeepZoom

Сначала все события объединяются во временные блоки, чтобы уместить недели данных в шаблон по горизонтали — без потери структуры. Далее строятся две тепловые карты: верхняя показывает абсолютные уровни цен и ликвидности, нижняя — относительное смещение вокруг mid‑price, чтобы видеть деформации книги ордеров независимо от тренда. Яркость пикселей кодирует объём (после логарифмической нормализации), а цвет — насыщенность ликвидности. Сделки накладываются поверх — как тонкая линия и серия точек разных размеров, привязанных к реальным объёмам.

Мой черновик реализации. Большой пример с увеличением есть в репозитории
Мой черновик реализации. Большой пример с увеличением есть в репозитории

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

Мой черновик реализации. Все данные которые у меня были - в этом черновике сервиса
Мой черновик реализации. Все данные которые у меня были - в этом черновике сервиса

Зачем это нужно?

Например для поиска аномалий:

Flash Crashes. Когда цена внезапно проваливается, трейдеры ищут виноватых в свечах или новостях. Но иногда причина банальна: на стороне bid просто исчез слой ликвидности, и рынок провалился в пустоту. Визуализация показывает это мгновенно — пустые коридоры, резкие «дыры» в глубине, которые на обычном графике не видны.

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

Отличная книга издана на русском на обе эти темы и написана относительно недавно в 2020 году: Flash Crash. История о трейдере‑самоучке, обвалившем финансовый рынок на 1 трлн $ (Лиам Воган).

Отличная книга на русском на обе эти темы -  Flash Crash Лиам Воган
Отличная книга на русском на обе эти темы — Flash Crash Лиам Воган

Анализ микроструктуры. Стакан показывает, как именно цена проходит путь от уровня к уровню. Когда рынок упирается в крупную «плиту» заявок, визуализация помогает понять: это реальный интерес или просто бутафория? Цена отскакивает от плотных уровней, если там стоит живой спрос, и наоборот — легко «проедает» их, когда объёмы фиктивны. Дисбаланс bid/ask перед импульсом становится заметен как изменение наклона и плотности тепловой карты.

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

Техническая часть

Стек: NumPy и Matplotlib для чисел и генерации PNG, Pillow (PIL) для оптимизации графики и, наконец, OpenSeadragon для работы в браузере. Эта комбинация позволяет эффективно обрабатывать гигабайты потенциальных данных.

Код открыт на https://github.com/empenoso/MOEX-OrderBook-DeepZoom
Код открыт на https://github.com/empenoso/MOEX-OrderBook-DeepZoom

Формат и структура

Данные хранятся в.npz — это бинарные архивы NumPy, идеальные для хранения огромных многомерных массивов. Структура проста и быстра: A/B — 50 уровней цен Ask/Bid (цены спроса и предложения), vA/vB — соответствующие им объемы. Такая структура, близкая к матрице, максимально эффективна для Data Engineering и скоростного анализа.

Временный сервис работает и с телефона
Временный сервис работает и с телефона

Пайплайн: от тика до тепловой карты

  1. Биннинг (агрегация). Чтобы стабилизировать визуальное разрешение (ось X = 12 000px) и справиться с хаосом необработанных тиков (событий), мы агрегируем данные в фиксированные временные слоты. Это позволяет уместить неделю биржевой активности в HD карту без потери общей структуры и видимых аномалий.

  2. Математика объемов (np.log1p). Ключевая деталь: логарифмирование объемов. Разница между ритейл‑заявкой и крупным фондом может достигать 4-х порядков. Линейная шкала убивает детали, делая мелкие, но важные намерения невидимыми. Функция np.log1p() сжимает этот разброс, позволяя на одной тепловой карте видеть как «бумажные» ордера, так и реальные ликвидные «плиты».

  3. Генерация и Тайлинг. Мы создаем огромный PNG (до 12 000 пикселей в ширину), который затем Pillow нарезает на пирамиду мелких (256px) тайлов с манифестом.dzi. Это суть Deep Zoom: браузер загружает только видимые плитки, обеспечивая плавный, Google Maps‑подобный скроллинг и масштабирование (через OpenSeadragon) без необходимости загружать весь гигабайтный файл.

Примеры

Акции Газпром GAZP в августе на MOEX (TQBR)
Акции Газпром GAZP в августе на MOEX (TQBR)
МКПАО "Т-Технологии" (T) – котировки на MOEX (TQBR) в декабре
МКПАО «Т‑Технологии» (T) — котировки на MOEX (TQBR) в декабре
ПАО "Татнефть" им. В.Д. Шашина (TATN) – в декабре
ПАО «Татнефть» им. В.Д. Шашина (TATN) — в декабре

Как запустить у себя?

Процесс максимально прост и понятен для любого разработчика:

  1. Клонируйте репозиторий и установите зависимости: git clone ..., затем pip install -r requirements.txt.

  2. Поместите файлы с историей стакана (ваши .npz) в папку npz_data/.

  3. Запустите оркестратор: python main.py (он нарежет данные, создаст Ultra‑HD карты и Deep Zoom тайлы).

  4. Запустите локальный сервер и откройте http://localhost:8000.

Важный дисклеймер: мой код — это «плеер» (визуализатор), который умеет работать с готовым форматом. «Кассета» (исторические данные Московской Биржи) является платной. Скрипт ждет готовые .npz файлы, которые вы должны предоставить самостоятельно. Если нет доступа к платным данным, то можно самостоятельно накопить историю через API брокера — это бесплатно и доступно для частного лица.

Заключение

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

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

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

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

16 декабря 2025

Источник

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