OFI простыми словами: как на самом деле работает Order Flow Imbalance (модель)

OFI — Order Flow Imbalance в смысле Конта, Куканова и Стойкова — измеряет чистое давление, которое накапливается внутри самого стакана: заявки на покупку копятся, заявки на продажу отходят, очереди растут или тают, уровень за уровнем. Это не тот дисбаланс футпринта, который вы уже знаете: OFI читает рынок совсем с другой стороны — со стороны лежащих в стакане заявок, а не исполненных сделок.

Senzoukria · Руководства · Обновлено: сентябрь 2026


Сначала снимем путаницу в названиях. Если вы пришли из торговли по футпринту, «order flow imbalance» для вас, скорее всего, означает ячейку футпринта, где агрессивные покупатели подавляют продавцов на соседних уровнях — об этом мы пишем в материале дисбаланс потока ордеров на футпринте. Эта страница о другом: о OFI, модели стакана, предложенной Контом, Кукановым и Стойковым — одном из самых цитируемых результатов рыночной микроструктуры. Слова те же, инструмент другой: футпринт читает исполненные сделки, OFI читает лежащие в стакане заявки.

Идея: цена движется, потому что движется стакан

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

  • Сторона бида: если цена бида на уровне поднимается, засчитайте новый объём как давление покупателей (+). Если цена держится, засчитайте изменение объёма. Если бид отступает, засчитайте прежний объём как утраченное давление (−).
  • Сторона аска, зеркально: аск, который приближается или растёт, — это давление продавцов (−); аск, который отходит или уменьшается, снимает давление продавцов (+).

Просуммируйте эти вклады за интервал — и получите OFI: он положителен, когда стакан в нетто загружается со стороны покупки, и отрицателен, когда накапливается предложение. Многоуровневая (интегрированная) версия повторяет расчёт на каждом из N лучших уровней — десять считается стандартом — и складывает результаты. Два снимка одного и того же стакана с разницей в четверть секунды делают эту арифметику наглядной:

Two snapshots of the top of the order book a quarter of a second apart: asks stacking, an offer being lifted and then cancelled, bids being added and bids being pulled — each signed change summing into one order-flow-imbalance number, far larger than the volume that actually traded.BOOK NOWthe resting book250 MS LATERwhat changedSIGNED CHANGEΔ bid size − Δ ask sizeasks · resting supplyaddedremovedbids · resting demand5431.751805431.503005431.251205431.0021024090340150spread60 new asks join the queue−6060 lifted, 150 cancelled+210220 added to the bid+22060 cancelled−60OFIall four rows, added up+310TAPEonly the lift at 5431.50+60Both numbers describe the interval that has just closed — OFI explains the move you arewatching, not the one coming next. That is the honest limit of the model.
OFI counts what happened to the book, not to the tape. Four levels changed here and only one of them printed a trade: 60 contracts lifted, against 310 contracts of net pressure added, pulled and queued. That gap is why the book explains the move you are watching better than trade volume does — and, because both are read over the interval that has already closed, why neither of them is a forecast.

Почему он объясняет движения лучше показателей по сделкам

Вот что стоит запомнить. В последующем исследовании (Cont, Cucuringu & Zhang, 2023) интегрированный десятиуровневый OFI объяснял примерно 87 % одновременной дисперсии цены. Только лучший уровень — около 71 %. Знаковый объём сделок, сырьё для CVD, — лишь около 33 %. Вывод не в том, что CVD бесполезен, а в том, что бóльшая часть того, что двигает цену, никогда не печатается в ленте. Добавленные заявки, снятые заявки, тающие очереди — стакан непрерывно перестраивается между сделками, и OFI — тот инструмент, который это видит.

Честное ограничение: одновременность, а не прогноз

Вот чего вам не скажут продавцы «сигналов по потоку ордеров»: эти 87 % — одновременные. OFI объясняет движение, происходящее в том же интервале. Возьмите прошлый OFI, чтобы предсказать следующую минуту, — и R² вне выборки уйдёт в минус. OFI — это чтение состояния («стакан прямо сейчас загружается со стороны бида»), а не предсказание. Ценность от этого остаётся вполне реальной: как подтверждение на уровне, который вас уже интересует (зона поглощения, гамма-стена, полоса VWAP), устойчивый толчок OFI показывает, согласен ли стакан с вашим прочтением.

Нормировка — шаг, который все пропускают

Сырой OFI измеряется в контрактах, поэтому его масштаб целиком зависит от плотности стакана. Одни и те же +400 — это толчок на тонком ночном стакане и ошибка округления на открытии Лондона. Разделите на среднюю глубину уровня (медленную скользящую среднюю) — и число станет сопоставимым между сессиями и инструментами. Senzoukria применяет эту нормировку по умолчанию: OFI, который вы видите в индикаторе QI · OFI, нормирован по глубине, а не сырой.

Как читать OFI в Senzoukria

Индикатор Микроструктура (quant) показывает три связанных значения: линию микроцены (справедливую цену внутри спреда, взвешенную по очередям), дисбаланс очереди (QI, от −1 до +1, только лучший уровень) и нормированный многоуровневый OFI, сглаженный по настраиваемому числу событий стакана. Практичный способ применения: сначала выберите уровни — по профилю объёма, по зонам поглощения или по стенам GEX — а затем позвольте QI и OFI сказать, поддерживает ли стакан сделку в момент входа. Это конфлюэнция, а не пророчество.

OFI на фоне остального инструментария

  • OFI против CVD: CVD — это лента (что торговалось), OFI — это стакан (что ждёт, появляется, исчезает). Расхождения между ними информативны: цена растёт, CVD растёт, но OFI стоит на месте — значит, движение съедает стакан, который не восполняется.
  • OFI против DOM: DOM показывает состояние стакана; OFI сжимает его изменения в один знаковый поток, который можно отслеживать, не вглядываясь в сорок строк цифр.
  • OFI против дисбалансов футпринта: дисбалансы футпринта — это подтверждённая агрессия по конкретным ценам; OFI — это давление, которое нарастает до и между этими отпечатками.

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

OFI — это то же самое, что дисбаланс футпринта?
Нет. Дисбаланс футпринта сравнивает исполненный агрессивный объём на соседних уровнях цены — сделки, которые уже произошли. OFI измеряет изменения лежащих в стакане заявок: добавленные заявки на покупку, снятые заявки на продажу, рост или опустошение очередей. Один читает сделки, другой — стакан. Они дополняют друг друга.
Является ли OFI прогнозным показателем?
Честно: нет, не в том смысле, на который рассчитывают. OFI одновременен с движением — он объясняет происходящее прямо сейчас движение цены гораздо лучше, чем показатели на основе объёма. Но запаздывающий OFI, применённый для прогноза следующей минуты, даёт отрицательный R² вне выборки в опубликованных исследованиях. Считайте его чтением состояния стакана, а не хрустальным шаром.
Чем OFI отличается от CVD (накопленной дельты)?
CVD суммирует исполненный объём со знаком — он видит только сделки. OFI видит и то, что никогда не торгуется: заявки, добавленные на бид, заявки, снятые с аска, истощение очередей. В исследовании Конта, Кукурингу и Чжана интегрированный многоуровневый OFI объяснял около 87 % одновременных доходностей против примерно 33 % у знакового объёма сделок. Стакан двигает цену сильнее, чем лента.
Зачем нормировать OFI по глубине?
OFI в +500 означает совершенно разное на плотном и на тонком стакане. Деление на среднюю глубину уровня делает число сопоставимым между инструментами и между часами одной сессии. Без нормировки сравнение двух значений OFI лишено смысла.
Сколько уровней должен использовать OFI?
Лучший уровень сам по себе уже несёт бóльшую часть сигнала, но исследование однозначно: интеграция более глубоких уровней помогает. Около 87 % одновременного R² на десяти уровнях против 71 % только на лучшем уровне. Десять уровней — стандартная конфигурация и значение по умолчанию в Senzoukria.