📝

Draft article

This article is visible to admins and superusers only. Sign in with an authorized account.

← К списку статей
October 8, 2026
5 мин. чтения

Синтетический стакан: сначала проверьте измеритель качества данных

Синтетический стакан: сначала проверьте измеритель качества данных
#стакан
#синтетические-данные
#качество-данных
#микроструктура
#валидация
#python

Допустим, генератор воспроизводит распределение спреда и распределение объемов на каждом ценовом уровне. Траектория лучшей котировки тоже выглядит убедительно. Готов ли синтетический стакан для исследования исполнения?

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

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

Совпадение распределений не восстанавливает совместное движение

Одинаковые блоки ликвидности образуют два стакана с разными связями между глубиной и временем

Обозначим видимые объемы продажи как q1,t,q2,t,q3,tq_{1,t},q_{2,t},q_{3,t}. Гистограмма q1q_1 отвечает, насколько часто встречается каждый размер лучшего предложения. Гистограмма q2q_2 отвечает на тот же вопрос уровнем глубже. Ни одна не сообщает, истончаются ли оба уровня одновременно. Независимая сортировка столбцов стирает это соответствие.

Есть и вторая потеря информации. Даже полное распределение снимков не отличает длинный период низкой ликвидности от чередования тонких и глубоких состояний, если обе последовательности содержат одни и те же снимки. Алгоритму, который решает, стоит ли подождать, нужно описание переходов, а не только набор возможных состояний.

В работе LOB-ID от 13 августа 2026 года Bacalum и соавторы извлекают признаки из окон L2 обученной сетью DeepLOB и сравнивают их распределения. Перестановка глубинной части стакана проходит проверенные статистические оценки и оценки ценового отклика, но обнаруживается MIND. Дискриминатор LOB-Bench в эксперимент не включен. Исследование охватывает пять акций HKEX; атака на совместную структуру использует три бумаги и шесть тестовых дней. Проверяется структура L2, а не исполнение на полном потоке сообщений. LOB-ID, разделы 3, 4.3.2 и 5.

Саму архитектуру мы разобрали в статье о DeepLOB. Здесь инженерный вопрос другой: какие изменения способен заметить измеритель качества.

LOB-Bench уже включает условные статистики, функции отклика и обучаемый дискриминатор; сводить его к набору гистограмм было бы неверно. Дополнительная проверка прогноза сравнивает обучение с синтетическими данными и без них на отложенных реальных наблюдениях. Это отдельные компоненты оценки. LOB-Bench, разделы 4–4.3, версия 2.

Практический вывод уже, чем "статистики не работают": заданный набор статистик устанавливает сходство только в тех свойствах, которые измеряет.

Точная проверка: тот же объем, другая стоимость прохода по стакану

Одинаковые части ликвидности перераспределены между ступенчатыми резервуарами, меняя доступный ордеру путь

Построим восемь снимков стороны продажи с постоянными ценами 100,00, 100,01 и 100,02 USD. Один тик равен 0,01 USD. На третьем уровне всегда четыре единицы. Сторону покупки оставим постоянной, ниже лучшего предложения. У первых двух уровней два варианта расположения объемов:

Снимки Исходный вариант: (q1,q2)(q_1,q_2) Перестановка глубины: (q1,q2)(q_1,q_2)
Первые четыре (1,1)(1,1) (1,3)(1,3)
Последние четыре (3,3)(3,3) (3,1)(3,1)

Распределение каждого отдельного столбца объемов в обоих наборах совпадает точно. Последовательность объема на лучшем предложении тоже не меняется. Меняется сочетание: малому объему наверху в исходном варианте соответствует малый объем глубже, а после перестановки — большой.

Теперь купим четыре единицы из каждого зафиксированного снимка, всякий раз начиная с нетронутого стакана. Это статическая проверка глубины, а не восемь последовательных сделок. Измерим превышение средней цены покупки над лучшим предложением, в тиках на единицу.

В исходном снимке (1,1,4)(1,1,4) одна единица покупается без дополнительного тика, одна — на тик дороже, две — на два тика дороже. Превышение равно (0+1+2+2)/4=1,25(0+1+2+2)/4=1{,}25 тика. Для (3,3,4)(3,3,4) оно составляет 0,250{,}25 тика. При одинаковых весах получаем 0,75 тика.

После перестановки глубины (1,3,4)(1,3,4) дает 0,750{,}75 тика, а (3,1,4)(3,1,4) — 0,250{,}25. Среднее снижается до 0,50 тика. До третьего уровня покупка раньше доходила в четырех снимках из восьми, теперь — ни в одном. Ни одна гистограмма отдельного объема не обнаружит разницу: по построению эти гистограммы одинаковы.

Отдельная перестановка чередует исходные снимки целиком: тонкий, глубокий, тонкий, глубокий и так далее. Она сохраняет распределение снимков и распределение стоимости статической покупки. Но объем лучшего предложения теперь меняется на всех семи переходах между соседними снимками, тогда как в исходном варианте — на одном.

Проверка Исходный вариант Перестановка глубины Перестановка времени
Распределения объемов по уровням Совпадают Совпадают Совпадают
Среднее превышение, тиков на единицу 0,75 0,50 0,75
Доля покупок, достигающих уровня 3 1/2 0 1/2
Доля соседних переходов с изменением q1q_1 1/7 1/7 1

Скачиваемый пример на стандартной библиотеке Python проверяет равенства с помощью точных дробей. В нем нет исторических наблюдений, реконструкции очереди, комиссий, задержек или моделирования реакции рынка. Контрпример доказывает недостаточность выбранных проверок отдельных распределений; он не измеряет ошибку конкретного коммерческого генератора.

Почему сравнение средних и ковариаций тоже можно обмануть

Уравновешенные стеклянные конструкции имеют общий центр, но проекции света показывают разное расположение элементов

Обученное представление само по себе не определяет, как сравнивать его распределение. FID сопоставляет гауссовы приближения по средним и ковариациям. MIND усредняет квадраты расстояний Вассерштейна по случайным одномерным проекциям векторов признаков. Это различие задано в исходной статье MIND; результат относится к выбранному представлению и не гарантирует сохранения всех свойств исходных данных. MIND, разделы 2–3.

Независимый одномерный пример явно показывает ограничение совпадения моментов. Припишем одинаковую вероятность каждому элементу:

A=(−1,−1,1,1),B=(−2,0,0,2).A=(-1,-1,1,1),\qquad B=(-\sqrt{2},0,0,\sqrt{2}).

Оба средних равны нулю, обе дисперсии распределений — единице. Их гауссовы приближения совпадают, поэтому расстояние по гауссовым моментам равно нулю. Однако половина массы BB находится в нуле, а у AA массы в этой точке нет.

Для одномерных выборок с одинаковыми весами отсортируем оба массива и усредним квадраты попарных разностей:

W22(A,B)=14∑i=14(A(i)−B(i))2=2−2≈0,585786.W_2^2(A,B)=\frac{1}{4}\sum_{i=1}^{4}(A_{(i)}-B_{(i)})^2 =2-\sqrt{2}\approx0{,}585786.

Скрипт проверяет и этот расчет. Это одномерный учебный пример, а не реализация многомерного конвейера LOB-ID. Точный ноль относится к построенным распределениям, а не к эмпирической атаке из статьи.

Есть еще одно, логически отдельное ограничение. Представим извлекатель признаков, который всегда возвращает только спред. У наших двух вариантов глубины спред одинаков, следовательно, одинаковы и векторы признаков. Никакое расстояние, примененное после этого, не восстановит пропущенную связь объемов. Более точное сравнение распределений не компенсирует представление, которое удаляет нужную информацию.

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

Сначала испытайте измеритель, затем оценивайте генератор

Оптический стенд сравнивает целый модуль последовательности с образцами, в которые намеренно внесены изменения

Следующий порядок приемки — инженерное предложение на основе контрпримеров выше, а не воспроизведение экспериментов авторов.

Сначала определите объект приемки. Набор независимых снимков, последовательность в событийном времени, последовательность в обычном времени и интерактивный симулятор — разные продукты. Зафиксируйте глубину, правило выборки, инструмент и решение, для которого нужны данные. Иначе у выражения "реалистичные синтетические данные" нет проверяемых границ.

Затем создайте намеренные искажения с явными инвариантами:

Изменение Что сохранить Что должен обнаружить измеритель
Переставить снимки целиком Все статистики снимков Другие переходы и длительности эпизодов
Переставить наблюдения глубинных объемов Распределения по уровням, лучшие котировки Другую зависимость между уровнями
Изменить только интервалы времени Порядок состояний стакана Другую динамику в обычном времени
Повторять небольшой набор целых окон Правдоподобные отдельные окна Потерю разнообразия и повторение траекторий

Это диагностические конструкции, а не утверждение, что любую переставленную последовательность можно получить допустимыми биржевыми событиями. Структурные ограничения проверяйте отдельно. Нарушение порядка цен полезно для проверки инвариантов, но не должно становиться простой подсказкой, по которой временной измеритель якобы обнаруживает сложный дефект зависимостей.

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

Перед сравнением версий генератора зафиксируйте извлекатель признаков, предобработку, число образцов, построение окон и параметры проекций. Иначе у изменения оценки две возможные причины: изменились данные или изменилась процедура измерения. Сохраняйте версии обоих компонентов, чтобы сравнение можно было повторить.

Наконец, оставьте часть искажений для более поздней проверки. Если постоянно настраивать измеритель под одни и те же испорченные образцы, прохождение этих образцов становится еще одной целью разработки. Полезный отчет сообщает, какие дефекты обнаружены, какие пропущены и какие вообще не проверялись. "Измеритель отверг перестановку глубины, но пропустил искажение интервалов времени" дает направление работы; "качество 0,9" без определенной шкалы его не дает.

Допуск к исполнению требует отдельной проверки

Заявки проходят из синтетической структуры ликвидности через отдельные контрольные ворота в механическую систему сопоставления

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

Более новый препринт от 15 сентября 2026 года проводит полезное различие. Linna и соавторы сравнивают прогнозы до и после добавления механически допустимых сообщений, затем проверяют их в контролируемой симуляции и сопоставляют с историческими событиями. Результат прямо трактуется как подразумеваемое моделью воздействие в заданном сценарии, а не неограниченный причинный эффект на рынок. Моделирование рыночного воздействия по сценариям, разделы 3.1, 4.5 и 6.

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

Измеряйте величины, связанные с задачей: полноту исполнения, время до завершения, распределение затрат и реакцию на разные размеры заявки. Сопоставляйте одинаковые начальные условия и отделяйте обычные состояния от низкой ликвидности, при которой решения политики действительно существенны. Статья об implementation shortfall объясняет измерение затрат; здесь эти измерения служат дополнительными критериями приемки синтетической среды.

Практическое решение о допуске может звучать так: "Принято для статических стресс-тестов глубины в пределах проверенных инструментов и размеров; поведение при ожидании пока не проверено". У такого утверждения есть применимая область. Ее расширение до пассивного или адаптивного исполнения требует свидетельств для дополнительных механизмов.

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

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

Авторы

Eugen Soloviov
Eugen Soloviov

Инженер торговых систем

Разработка торговых ботов с 2017 года: межбиржевой арбитраж (подключал до 30 бирж), парный арбитраж на коинтеграции между спотом и фьючерсами, скальпинг, фронтраннинг, торговля по новостям, сентиментный анализ, трендовые алгоритмы, а также алгоритмы управления и балансировки портфелей. Делает выставление ордеров до 1 мс, warehouse для big data, бэктестинг-движки, AI-агентов и интерфейсы для ботов (в т.ч. open-source profitmaker.cc). Стек: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, архитектура.

Newsletter

Будьте в курсе событий

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

Мы уважаем вашу конфиденциальность. Отписаться можно в любой момент.