Блог им. empenoso

Куда исчезла ликвидность? Визуализируем гигабайты биржевых данных стакана в браузере

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

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

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

Куда исчезла ликвидность? Визуализируем гигабайты биржевых данных стакана в браузере

Знаете Bookmap?

Куда исчезла ликвидность? Визуализируем гигабайты биржевых данных стакана в браузере

Если вы когда‑либо видели 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).

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

Куда исчезла ликвидность? Визуализируем гигабайты биржевых данных стакана в браузереВизуализация высокочастотной торговли в 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 Лиам Воган

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

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

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

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

Куда исчезла ликвидность? Визуализируем гигабайты биржевых данных стакана в браузереКод открыт на 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

5.9К | ★19
33 комментария
Очень крутая работа, но стакан глубиной 50 это далеко не все заявки, которые есть в системе
avatar
Vkt, да, но я частное лицо, а API брокеров дают ограниченную по уровням глубину стакана.

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

Интересно, Мосбиржа тоже глубину 50 продает или вообще все заявки, что есть в стакане?

Кроме как через API, правильную историю никак не накопить?

avatar
Vkt, или купить на мосбирже, но ценники космос — для частного лица неактуально. Вроде это: www.moex.com/ru/orders?orderlogs

Михаил Шардин,  Ну не такой уж и космос. Все сделки и все заявки — Тип А 1 рынок (месяц/год) — 15 000 руб. / 150 000 руб.

Купить весь ФОРТС за месяц всего 15 000. Там копаться и ковыряться на долго хватит.

avatar
Vkt, в статье полгода
Vkt, на Мосбирже вся глубина
Грамотно, структурированно и понятно написано, сразу видно человека с образованием и ученой степенью. Приятно читать. По самой идее подхода — она безусловно интересна — но, фактически это тоже срез постфактум данных торговли, просто в нестандартной форме. Дальше детализировать свою позицию по вопросу не буду. В любом случае — интересная статья и работа.   
Владимиров Владимир, спасибо!
Владимиров Владимир, а почему свою мысль не хотите развивать — не желаете граалем светить?
Михаил Шардин, у меня написано «не буду детализировать» свои мысли по обозначенному в статье подходу обработки данных торговли. Если обсуждать, то будет долгая дискуссия. Использую иной способ обработки данных, основная его концепция ранее была описана в блоге. Перестал писать на эту тему — смысл общаться с пустотой. Это непопулярный подход )))  — прогнозирование значений H, L и преобладающего направления движения цены на следующих интервалах, синтетические объемы, модельное пространство… Короче — заканчиваю «выражаться», пока не набежали «борцы за чистоту торгового сленга» ))) 
Михаил Шардин, :) потому что с LLM и не такое можно… А вот дефицит идей — налицо :)))
Если свеча — это тень прошлого, то стакан — это даже не тень будущего, это просто заявки, которые постоянно преставляются ботами.
Михаил Михалёв, да, в книге про это довольно много — HTF шум
Михаил Михалёв, проблема свечей в их условности и в агрегации.
Все сделки свалены в кучу.
Если были где-то подбиддовки и айсберги, любая свеча всё рисует одним цветом. 
avatar
DrManhattan, И это далеко не единственная проблема свечей.
DrManhattan, можно ведь свечи пересобирать по объёму или по деньгам без учёта таймфреймов
Михаил Шардин, можно.
Но даже такой вид отображения мало у кого популярен.
Но в любом варианте, свечи — это всегда агрегация ленты сделок.
Они не могут показать что, где и кто.
avatar
А какой прикладной смысл данного опуса?
avatar
Тема бозона Хикса не раскрыта…
Кошерные цены, как будто нет связи
Михаил Шардин, выставленные заявки имеют мало пользы. ОИ на фьючах дает больше пользы. Никто не знает будущее, те на каких уровнях будет борьба? Другое дело, что вола просто считается за период. А по вола-ти можно строить сетки от спреда. Это ATR(). Важно знать — откуда берутся уровни и коридоры? Они берутся от постоянных участников тайма.Отскок или пробой уровней и коридоров? Это новые участники из соседних таймов. Мораль — полезно видеть в графике  уровни разных таймов. Даю закон графика.Размах свечей удваивается за 4 тайма в тренде ( тренд = движение без перекрытий фракталов).
Свеча 1 неделя в 2 раза меньше свечи 1 месяц. У тренда=импульс есть и другие законы.
avatar
прикольная визуализация ) а в нашем деле кстати, визуализация и последующая интерпретация результатов имеет очень важную роль

вижу от поста к посту некоторое шатание ) без обид. Сегодня настроение давать советы. Я примерно подобное проживал в 11-14 годах, то это, то то. А где зерно и куда идти хрен его знает. В такие моменты важно, чтобы тебя кто то прибрал к рукам и твою энергию направил в верное русло )

как то я писал пост (я на эту тему много вообще писал), как найти работу трейдером. Ну или алгосом. Ну или аналитиком (к нему вы тоже тяготеете). Рекомендую изучить или начать изучать вакансии на том же hh, станет понятно, что в текущий момент нужно рынку. Появится в голове ядро, вокруг которого придется крутить свои знания. 

и можно наверное уже выходить на контакты к потенциальным работодателям ) Обломов будет дохрена, но опыт будет неописуемый и очень нужный. Я в 15 году разослал как то порядка 350 резюме (плохо помню точную цифру).
Андрей К, расскажите про свой путь если это возможно
И как пользоваться визуальными результатами для выигрыша?
К примеру, в последний месяц на биткоине повадились давать ложные импульсы, через несколько минут сопровождаемые тремя истинными, в противоположную сторону.
Увидел пользователь на карте первый импульс, какие его действия?
avatar
svgr, как Вы и написали, после ложного импульса открываться в сторону истинного.
svgr, полезно сравнивать углы импульсов. Идеальный угол 45 гр. Чем сильнее, резче движение тем более это геп, который будет закрыт. Меньше тайм = больше гепов, манипуляций. Мораль — торгуем ровные графики… без гепов.
avatar

👍👍👍

Стакан это всего лишь намерения, есть спуфинг, как блеф в покере и есть айсберги, бесконечность ресурса которых вам неведома, вы никогда 100% ничего не поймете. И только лента сделок дает 100% факт. Впрочем… даже она не всегда истинна, к примеру часть криптобирж выдает фейковые сделки в ленте, лишь бы привлечь новых трейдеров.
avatar
chizhan, верно. Есть сделки в рынок… без предварительного предупреждения типа — осторожно! Я щас с волью!!! Лента сделок это факт. Средний размер сделки за период — это факт.Торгуем фактом.Но кукел может использовать средства с разных счетов? Чем выше тайм, тем этого меньше.
avatar
Михаил, очень интересно. Но скажите, вот это утверждение «настоящая динамика рождается в глубине торгового стакана — Limit Order Book, где борьба заявок определяет будущий импульс.» откуда?

UPD. Вам удалось сделать какие-то применимые для торговли выводы, основанные на полученной тепловой карте?
avatar
Михаил, 
ничего там не рождается.

Читайте на SMART-LAB:
Фото
Нововведение на долговом рынке 📈
С 1 января запускается маркетинговая программа, по которой комиссия листинга будет рассчитываться от фактического объема размещенных структурных...
Nasdaq готовится к переходу на круглосуточный режим работы
Оператор биржи Nasdaq планирует подать документы в Комиссию по ценным бумагам и биржам США для запуска почти круглосуточной торговли акциями,...
Фото
Как зарабатывать на остатке счёта: робот для ночной покупки TMON.
Деньги на счёте должны работать, даже каждую ночь принося вам прибыль. Именно это делают банки – и именно так должен действовать каждый уважающий...

теги блога Михаил Шардин

....все тэги



UPDONW
Новый дизайн