Содержание статьи

Доказательства и область применения

Cont, Kukanov и Stoikov исследуют OFI и влияние на цену для 50 акций США. Предложенные ниже прогнозная модель и модель исполнения — отдельные эксперименты, не результаты этой работы.

Данные и рынкиКонкретная площадка лимитных ордеров с ценами и объёмами заявок покупки и продажи, временными метками и документированными правилами потока данных. Публичная глубина может не отражать всю ликвидность.
Таймфреймы исследованияВременные интервалы событий или окна 100ms–5s являются примерами исследований. Горизонт выполнения зависит от фактических задержек наблюдения, вычислений и сети.
OFI растёт при уменьшении видимого объёма продажи и падает при уменьшении объёма покупки; после положительного дисбаланса поток может развернуться.Открыть иллюстрацию в полном размере
Условный OFI событий. Линия показывает изменения очередей со знаком; столбцы — независимо придуманный торговый объём. OFI не равен объёму сделок.

Практическая последовательность действий

Порядок действий: Дисбаланс книги ордеров и OFI: глубина, поток и прогноз
Все шаги подробно описаны ниже. На каждом этапе нужно записывать причину отклонения при нехватке данных или невыполнении условий.
  1. Восстановите книгу ордеровПримените правила площадки для снимков и дельт.
  2. Рассчитайте OBI и eОтделяйте видимое состояние книги от потока изменений котировок.
  3. Завершите окно признакаИспользуйте лишь наблюдения, полученные до решения.
  4. Смоделируйте приход ордераПримените предположения о задержке, спреде и очереди.
  5. Оцените чистую будущую доходность.Отделите предсказание от объяснения в рамках одного временного окна.

Моментальный снимок и поток изменений

OBI=(B−A)/(B+A), где B и A — одновременно наблюдаемые объёмы на лучших ценах покупки и продажи. Многоуровневый вариант должен явно выбрать фиксированное число уровней или ценовое расстояние. OBI около +1 означает относительно большую видимую глубину покупки; это не число покупателей, не их намерения и не гарантия сохранения заявки к приходу ордера.

OFI измеряет изменения объёмов очередей и цен котировок. Исходное исследование рассматривает влияние на цену в коротких интервалах и роль глубины [1]. Такая объясняющая связь отличается от стратегии, прогнозирующей и реализующей будущее движение после получения наблюдений.

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

Завершите окно признака до определения будущей цели

При обновлении от n−1 к n обозначим b и a лучшие цены покупки и продажи, а qb и qa — объёмы на них. Код использует определение OFI первого уровня из исследования [1]. При неизменных ценах оно сводится к изменению объёма очереди покупки минус изменение объёма очереди продажи. При смене цен нужно брать соответствующие старые или новые очереди, а не просто вычитать объёмы.

Суммируйте e за завершённое окно W. Возможная нормировка — на предыдущую среднюю глубину либо через z-оценку по обучающим данным. Не стандартизируйте по всему будущему тестовому периоду. OBI на конец окна, OFI внутри окна и спред — отдельные признаки. При B+A=0 или отсутствии любой стороны наблюдение недопустимо.

Один предлагаемый кандидат требует zOFI>1.5, OBI>0.3, spread≤2 тика и свежих данных. Целевой интервал начинается с исполнимой котировки после задержек наблюдения и ордера и заканчивается через H=2 секунды. Пороги и горизонт — исследовательское предложение, не доказанная в работе прибыльная конфигурация.

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

e = I(b>=b_prev)*qb - I(b<=b_prev)*qb_prev
    - I(a<=a_prev)*qa + I(a>=a_prev)*qa_prev
OFI_window = sum(e for quote events in completed_window)
OBI = (qb-qa)/(qb+qa)
features_known_at = local_receive_time_of_last_required_event
order_arrival = features_known_at + compute_delay + network_delay
label = executable_exit_price_after(order_arrival,H) - executable_entry_price
# A price move inside the feature window is not future trading profit.

Восстановление книги ордеров — часть метода

Документация Bybit задаёт замену книги новым снимком и удаление уровня при дельте с нулевым объёмом [2]. Реализуйте реально используемую схему: первый уровень может передаваться только снимками, более глубокие потоки — дельтами. Универсальный парсер, считающий каждое сообщение приращением, может создать неверную книгу.

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

Публичные котировки — лишь наблюдаемая часть ожидающих заявок. Выборка или пакетирование могут скрыть последовательность отмен и добавлений между сообщениями. Называйте результат наблюдаемым OFI на частоте этого потока. Сравнивая его с дельтой сделок, используйте правила агрессора и временных меток отдельного канала сделок [3].

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

Синтетические вычисления и результаты, реализуемые на практике.

Пусть лучшая покупка — 100.00 с объёмом 80, лучшая продажа — 100.01 с объёмом 20. OBI=0.60. Объём продажи снижается с 20 до 5, объём покупки и цены неизменны: e=+15. Если это отмена заявок, дельта сделок нулевая. Затем объём покупки падает с 80 до 70 при неизменном объёме продажи: e=−10. OFI двух событий равен +5, итоговый OBI=65/75, примерно 0.867.

Положительный признак ещё не прибыль. В отдельном условном выигрышном сценарии купите по доступной цене продажи 100.01 и продайте по цене покупки 100.04 через выбранный горизонт. Валовая прибыль — 0.03 за единицу. Если комиссии за вход и выход вместе с проскальзыванием составляют 0.01, чистая прибыль — 0.02. Середина котировок 100.005 не обязательно доступна для покупки.

В неудачном сценарии большая заявка покупки исчезает до прихода ордера, котировки смещаются к 99.96/99.98. Покупка исполняется по 99.98, выход — по цене покупки 99.94 с валовым убытком 0.04. Пассивный лимит на 100.00 мог бы исполниться как раз при начале падения. Нельзя помечать неблагоприятные касания как неисполнение, гарантируя исполнение выгодных.

Задержка и выбор типа ордера определяют результат

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

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

При устаревшем потоке, пересечённых ценах покупки и продажи вопреки правилам рынка или пересинхронизации прекратите новые входы. Для открытых позиций нужен заранее определённый ответ системы риска. Отсутствие данных не означает остановку цены.

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

Регрессия внутри одного окна не доказывает будущую альфу

Разделяйте три задачи: объяснение изменения середины котировок за W, прогноз изменения после W и измерение P&L с реалистичной задержкой. Высокий R-квадрат в первой задаче не доказывает результат третьей. Цена могла отреагировать до получения данных системой.

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

Показывайте качество прогноза вместе с оборотом, долей исполнений, чистым P&L, экстремальными убытками и чувствительностью к задержке и размеру. Оценивайте режимы ликвидности и площадки отдельно. Доказательства по акциям из этой работы нельзя переносить на бессрочные криптоконтракты с тем же порогом и предполагаемой одинаковой структурой издержек.

Частые ошибки

Исполнение всех ордеров по середине котировок

Это устраняет спред и завышает ожидаемую доходность.

Видимая стена заявок якобы доказывает устойчивый спрос

Котировки могут быть отозваны, а намерения участников не наблюдаются.

Назвать одновременную подгонку прогнозом

Целевой интервал должен начинаться после доступности полного признака.

Список проверки перед использованием метода

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

0/7 пунктов

Частые вопросы

Может ли значение OBI быть положительным, если цена падает?

Да. Видимая глубина временна; новый поток ордеров, отмены и другие площадки могут немедленно изменить рынок.

Может ли стандартный OHLCV восстановить OFI?

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

Источники исследования

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

  1. The price impact of order book eventsCont, Kukanov and Stoikov. Прочитаны аннотация и определение OFI; исследованы 50 акций США, это не бэктест данной стратегии. Проверено: .
  2. OrderbookBybit. Изучены снимки и дельты, временные метки и ограничения публичного потока данных. Проверено: .
  3. Public TradeBybit. Изучены поля канала сделок для различения агрессивных исполнений и изменений котировок. Проверено: .

Связанные методы

Примечание о рисках

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

Проверьте правила, прежде чем рисковать реальным капиталом

Проверьте возможности приложения, данные и каждую смоделированную сделку; сложные детекторы могут потребовать отдельной реализации.

Скачать Backtest в App Store