Цифровой слепок трейдера: как идентифицировать маркетмейкера по его поведению в ордербуке
Поведенческий отпечаток торгового алгоритма: уникальные паттерны timing, sizing и placement
Каждый алгоритм оставляет уникальный отпечаток. Научитесь его читать — и вы будете знать, кто стоит по другую сторону сделки.
Введение: ордербук как место преступления
Когда криминалист приезжает на место происшествия, он ищет отпечатки пальцев, следы обуви, ДНК — всё, что связывает событие с конкретным человеком. Ордербук — это место, где каждую секунду сотни участников оставляют свои «отпечатки»: ордера определённого размера, с определённой частотой, на определённом расстоянии от цены, с определённым временем жизни.
На централизованных биржах (CEX) эти отпечатки анонимны — вы видите только агрегированный объём на каждом ценовом уровне. Но даже по агрегированным данным можно многое понять. А на DEX-биржах с on-chain ордербуком — таких как Hyperliquid — каждый ордер привязан к конкретному адресу кошелька, и «отпечатки» становятся персональными.
В этой статье мы разберём, как построить систему «цифровых слепков» (behavioral fingerprints) для идентификации типов участников и конкретных алгоритмов маркетмейкеров.
Часть 1: Что такое поведенческий отпечаток
Радарная диаграмма: пять ключевых измерений поведенческого отпечатка трейдера
Каждый алгоритм — это набор правил
Маркетмейкерский бот — это программа, которая принимает решения по жёстким (или обучаемым) правилам:
- На каком расстоянии от mid-price выставлять ордера? У каждого MM свой «спред-профиль».
- Какого размера? Round lots (100, 500, 1000)? Случайные числа? Фиксированный размер с шумом ±5%?
- Как часто обновлять котировки? Каждые 50мс? Только при изменении mid-price? По таймеру?
- Как реагировать на исполнение? Мгновенное перевыставление? Пауза? Смещение оставшейся стороны?
- Как реагировать на волатильность? Расширение спреда? Снятие котировок? Уменьшение размера?
- Как управлять инвентарём? Скос котировок (skew) при накоплении позиции?
Каждый набор ответов на эти вопросы — это уникальная «подпись» алгоритма.
Пять измерений «слепка»
┌─────────────────────────────────────────────────────────────────┐
│ ЦИФРОВОЙ СЛЕПОК ТРЕЙДЕРА │
│ │
│ 1. TIMING │ Интервалы между ордерами, реакция │
│ │ на события, суточные паттерны │
│──────────────────┼───────────────────────────────────────────── │
│ 2. SIZING │ Распределение размеров ордеров, │
│ │ кратность, дисперсия │
│──────────────────┼───────────────────────────────────────────── │
│ 3. PLACEMENT │ Расстояние от mid-price, │
│ │ симметрия bid/ask, привязка к уровням │
│──────────────────┼───────────────────────────────────────────── │
│ 4. REACTION │ Ответ на fills, cancels, price jumps, │
│ │ изменение волатильности │
│──────────────────┼───────────────────────────────────────────── │
│ 5. LIFECYCLE │ Средний lifetime ордера, │
│ │ условия отмены, modify vs cancel+new │
│──────────────────┴───────────────────────────────────────────── │
└─────────────────────────────────────────────────────────────────┘
Часть 2: Извлечение признаков
Hawkes-процесс с самовозбуждением: кластеры событий с экспоненциальным затуханием
Timing: когда и как часто
Timing-паттерн — самый трудноподделываемый элемент слепка. Он определяется архитектурой алгоритма, задержкой сети, hardware и даже часовым поясом разработчиков.
Ключевые метрики:
-
Inter-order interval (IOI) — время между последовательными ордерами одного участника. У HFT-бота IOI = 50-500 микросекунд. У ручного трейдера — секунды-минуты.
-
Reaction time to trade — задержка между исполнением ордера и следующим действием. Отражает внутреннюю архитектуру бота.
-
Circadian pattern — суточный профиль активности. Институциональный MM работает во время торговых сессий. Крипто-бот — 24/7.
-
Self-excitation (Hawkes intensity) — насколько текущий ордер «провоцирует» следующий. Маркетмейкеры демонстрируют сильную self-excitation.
Для моделирования timing-паттернов идеально подходят Hawkes-процессы — точечные процессы с самовозбуждением. Параметры Hawkes-процесса (базовая интенсивность μ, коэффициент возбуждения α, скорость затухания β) формируют компактный «хронологический отпечаток» участника.
Sizing: сколько и как
- Size distribution — распределение размеров ордеров. Профессиональные MM часто используют round lots с шумом: 100 ± 5, 500 ± 10.
- Size-depth correlation — зависит ли размер ордера от текущей глубины стакана?
- Bid-ask size asymmetry — соотношение размеров на bid и ask. Паттерн скоса — «почерк» inventory management.
- Size autocorrelation — повторяемость размеров во времени.
Placement: где в стакане
- Spread offset — расстояние от mid-price в тиках или bps
- Level preference — привязка к определённым уровням (round numbers?)
- Quoting symmetry — насколько симметричны bid и ask ордера
- Multi-level footprint — сколько уровней одновременно котируется
Reaction: как отвечает на события
- Post-fill behavior — что происходит после исполнения ордера
- Volatility response — как меняется поведение при росте волатильности
- Quote-to-trade ratio (QTR) — соотношение обновлений ордеров к исполнениям
- Adverse selection response — реакция на движение цены против позиции
Lifecycle: жизненный цикл ордера
- Order lifetime distribution — среднее время жизни ордера
- Modify vs Cancel+New — обновляет через modify или cancel+new?
- Cancel clustering — отменяет поодиночке или пакетами?
Часть 3: Классификация участников
Таксономия рыночных участников: маркетмейкеры, HFT, оппортунисты, фундаментальные и шумовые трейдеры
Таксономия участников рынка
На основе поведенческих признаков можно классифицировать участников на устойчивые категории. Исследование CFTC (Kirilenko et al., 2011):
1. Market Makers (маркетмейкеры)
- Двухсторонние котировки (bid + ask) в >80% времени
- Нулевая или близкая к нулю чистая позиция к концу дня
- Высокий QTR (>100:1)
- Реагируют на волатильность расширением спреда
2. High-Frequency Traders (HFT)
- Сверхвысокая частота сообщений (>1000 events/минута)
- Очень короткий holding period (секунды)
- Sub-millisecond reaction times
3. Opportunistic Traders (оппортунисты)
- Умеренная частота
- Реагируют на конкретные рыночные условия
- Нерегулярный timing, кластеризованный вокруг событий
4. Fundamental Traders (фундаментальные)
- Набирают долгосрочные позиции
- Низкая частота, большие размеры ордеров
- TWAP/VWAP алгоритмы для исполнения
5. Noise Traders (шумовые/ритейл)
- Маленькие размеры, нерегулярный timing
- Реактивные: торгуют после движения, не до
- Market orders в момент пика волатильности
Методы классификации
Supervised Learning: Для DEX-данных (Hyperliquid) можно собрать обучающую выборку из адресов известных маркетмейкеров. RNN-модели достигают accuracy >85%.
Unsupervised Learning:
- Spectral Clustering (Cont et al., 2023) — кластеризация по матрице сходства order flow patterns
- FIDR-SCAN (2024) — feature interpolation + dimension reduction + density-based clustering
- Inverse Reinforcement Learning (CFTC, 2014) — восстановление reward function каждого трейдера
Часть 4: Идентификация конкретных маркетмейкеров
От классификации к идентификации
Классификация отвечает на вопрос «это маркетмейкер?». Идентификация отвечает на вопрос «это тот самый маркетмейкер?».
Построение вектора слепка
Из пяти измерений мы извлекаем числовой вектор — embedding участника:
Fingerprint Vector (пример):
┌──────────────────────────────────────────────────────────┐
│ Timing: │
│ hawkes_mu: 0.3 (базовая интенсивность)│
│ hawkes_alpha: 0.7 (self-excitation) │
│ hawkes_beta: 1.2 (decay rate) │
│ median_IOI_ms: 240 (мс между ордерами) │
│ circadian_peak_utc: 14.5 (пик активности) │
│ │
│ Sizing: │
│ median_size: 500 │
│ size_cv: 0.08 (коэфф. вариации) │
│ round_lot_ratio: 0.92 (доля круглых лотов) │
│ bid_ask_size_ratio: 0.97 │
│ │
│ Placement: │
│ median_offset_bps: 3.2 (от mid-price) │
│ quoting_symmetry: 0.94 (0=асимметрия,1=симм) │
│ num_levels: 5 (котируемых уровней) │
│ │
│ Reaction: │
│ post_fill_delay_ms: 12 │
│ vol_spread_elasticity: 2.1 (спред/σ) │
│ qtr: 850 (quote-to-trade ratio) │
│ │
│ Lifecycle: │
│ median_lifetime_ms: 1200 │
│ modify_ratio: 0.85 (modify vs cancel+new) │
│ batch_cancel_rate: 0.60 (доля пакетных отмен) │
└──────────────────────────────────────────────────────────┘
Кластеризация адресов: «один оператор — N кошельков»
Граф кластеров адресов: один оператор — множество кошельков, объединённых по поведенческому сходству
На Hyperliquid один маркетмейкер может оперировать через десятки или сотни адресов.
Алгоритм объединения:
- Для каждого активного адреса — строим fingerprint vector по окну N часов
- Hierarchical clustering — объединяем адреса с расстоянием < threshold
- Temporal validation — проверяем стабильность кластера во времени
- Cross-pair validation — если два адреса торгуют разные пары, но fingerprint совпадает — сильный сигнал
Кластер #7 (предположительно: Wintermute)
├── 0x3a1f...2e8c — BTC/USDT, 45% активности
├── 0x7b2d...9f1a — ETH/USDT, 30% активности
├── 0xc4e8...5d3b — SOL/USDT, 15% активности
└── 0x91fa...0c7e — ARB/USDT, 10% активности
Общий паттерн: symmetric quoting, 5 levels, median_IOI=240ms,
median_size=500±8%, batch cancel 60%, presence 95%
Часть 5: Сценарии манипуляций и их отпечатки
Spoofing: слепок фальшивой стены
Отпечаток спуфера:
cancel_rate: > 95%
lifetime: < 2 секунд
placement: 1-3 тика от mid-price
size: аномально большой (>10x median depth)
reaction_to_approach: отмена при приближении цены
cyclicity: повторение >3 раз / минута
Squeeze: ловушка ликвидности
Четыре фазы: тихое накопление → удаление ликвидности → каскад стоп-ордеров → фиксация прибыли. Обнаружение в реальном времени возможно по переходу из Фазы 1 в Фазу 2.
Iceberg / Hidden accumulation: тихий набор
Отпечаток тихого накопления:
visible_size: маленький (10-50 лотов)
refill_speed: мгновенный (< 100ms после fill)
refill_count: > 20 на одном уровне за сессию
price_reaction: цена не двигается несмотря на объём
Wash Trading: самосделки
Два или более адреса из одного кластера одновременно стоят на bid и ask и исполняют друг друга. Цель: накрутка объёма.
Часть 6: Реализация в Marketmaker.cc
Архитектура системы Behavioral Fingerprint
┌─────────────────────────────────────────────────────────────┐
│ DATA LAYER │
│ ├── Hyperliquid Node → L3 order-by-order + wallet IDs │
│ ├── CEX WebSocket → L2 depth + trades │
│ └── Historical Store → QuestDB / Parquet │
├─────────────────────────────────────────────────────────────┤
│ FEATURE EXTRACTION │
│ ├── Timing Engine → Hawkes fit, IOI distribution │
│ ├── Sizing Engine → Size stats, round-lot detection │
│ ├── Placement Engine → Offset calc, symmetry analysis │
│ ├── Reaction Engine → Post-fill tracker, vol response │
│ └── Lifecycle Engine → Lifetime stats, cancel patterns │
├─────────────────────────────────────────────────────────────┤
│ CLASSIFICATION / IDENTIFICATION │
│ ├── Online Classifier → Real-time participant tagging │
│ ├── Cluster Engine → Address clustering (DEX) │
│ ├── Similarity Search → Fingerprint matching │
│ └── Anomaly Detector → Spoof / squeeze / wash detection │
├─────────────────────────────────────────────────────────────┤
│ VISUALIZATION │
│ ├── Queue Position + Participant Labels │
│ ├── Cluster Graph (known MM clusters) │
│ ├── Alert System (manipulation detected) │
│ └── Historical Fingerprint Browser │
└─────────────────────────────────────────────────────────────┘
Что видит трейдер в терминале
╔═══════════════════════════════════════════════════════════════════════════╗
║ 10000 USDT │ Total: 3,200 ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ Breakdown: │ 🤖 MM (cluster#7, ~Wintermute): 800 лотов [5 levels] ║
║ │ 🤖 MM (cluster#12, unknown): 400 лотов [3 levels] ║
║ │ ⚠️ Suspicious (spoof score 87): 500 лотов [lifetime<2s]║
║ │ 🟡 @pro_scalper: 100 лотов ║
║ │ 🔴 МОЙ: 10 лотов ║
║ │ 👤 Retail / unclassified: 1,390 лотов ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ Queue ahead │ Реальных: ~1,200 (excl. spoof) Nominal: 1,800 ║
║ «Чистый»ETA │ 6.7s (vs nominal 10s) ║
║ Wall type: │ MM-backed (65% MM volume) — likely to hold ║
╚═══════════════════════════════════════════════════════════════════════════╝
Алерты
- 🔴 Spoof detected at your price level — перед вашим ордером выявлен подозрительный блок
- 🟡 MM withdrawal — маркетмейкер снял котировки, ликвидность упала
- 🟡 Squeeze setup detected — кластер адресов набирает позицию и удаляет ликвидность
- 🟢 Wall reinforced — на вашем уровне добавился объём от известного MM
Часть 7: Этика и ограничения
Что можно, а что нельзя
Можно и нужно:
- Классифицировать анонимных участников по типу для собственных торговых решений
- Детектировать манипуляции для защиты от adverse selection
- Кластеризовать адреса на DEX для понимания структуры рынка
Нельзя:
- Деанонимизация физических лиц по адресам кошельков
- Продажа идентифицированных паттернов без согласия
- Использование для market manipulation
Ограничения
- Адаптивные алгоритмы — продвинутые MM добавляют рандомизацию
- Режимные переключения — один бот может менять поведение в зависимости от рыночного режима
- False positives — два участника могут случайно иметь похожие параметры
- CEX opacity — на CEX L3-данные недоступны
Заключение: от чтения стакана к чтению участников
Традиционный трейдер видит: 2,400 лотов на уровне 10000. Продвинутый трейдер видит: «мой ордер стоит 1,800-м в очереди, ETA — 15 секунд». А трейдер с behavioral fingerprinting видит:
«800 из этих 2,400 — маркетмейкер (вероятно, Wintermute), стена надёжная. 500 — подозрение на spoof, реальная очередь передо мной — 1,300, а не 1,800. Adjusted ETA — 10 секунд. Маркетмейкер не снимает котировки — значит, крупного движения пока не ждёт.»
Каждый новый слой информации — это преимущество. И в отличие от скорости, качество интерпретации стакана — это территория, где розничный трейдер может конкурировать.
В Marketmaker.cc мы строим эту систему — от queue position до behavioral fingerprinting — как единый продукт.
Предыдущая статья серии: «Очередь внутри стенки: анализ позиции ордера в плотности ордербука»
Источники и дальнейшее чтение
- Kirilenko A., Kyle A., Samadi M., Tuzun T. — «The Flash Crash: High-Frequency Trading in an Electronic Market» (CFTC, 2011)
- Paddrik M., Hayes R., Scherer W., Beling P. — «Gaussian Process-Based Algorithmic Trading Strategy Identification» (CFTC / OFR, 2014)
- Cont R. et al. — «Unsupervised spectral clustering of trader order flow» (2023)
- FIDR-SCAN — «Explainable Machine Learning for HFT Dynamics Discovery» (2024)
- Do B.L., Putniņš T.J. — «Detecting Layering and Spoofing in Markets» (SSRN, 2023)
- Hawkes A.G. — «Spectra of Some Self-Exciting and Mutually Exciting Point Processes» (Biometrika, 1971)
- Avellaneda M., Stoikov S. — «High-Frequency Trading in a Limit Order Book» (Quantitative Finance, 2008)
MarketMaker.cc Team
Количественные исследования и стратегии