Руководство по интеграции
### Введение
На крипторынках HFT-алгоритмы и поставщики ликвидности постоянно сталкиваются с риском **неблагоприятного отбора** (adverse selection) — ситуацией, когда они исполняют ордера информированных участников рынка, обладающих краткосрочным информационным преимуществом. Метрика **VPIN** (Volume-Synchronized Probability of Toxicity) позволяет измерять вероятность токсичности потока ордеров в реальном времени.
### Механика VPIN и Volume Clock
В отличие от стандартных временных срезов (1-минутные или 5-минутные свечи), VPIN использует **объемные часы** (Volume Clock). Торговый поток делится на корзины равного объема (например, каждые 50 BTC объема торгов формируют одну корзину). Это нормирует сигналы:
1. В периоды высокой активности корзины заполняются быстро (высокая частота выборки).
2. В периоды затишья корзины заполняются медленно.
### Bulk Volume Classification (BVC)
Поскольку точная инициализация сделки (покупка по рынку или продажа по рынку) не всегда доступна или чиста в исторических агрегированных тиках, применяется метод BVC:
\[ V_B = V \cdot \Phi \left( \frac{\Delta P}{\sigma_P} \right) \]
\[ V_S = V - V_B \]
Где \(V\) — общий объем корзины, \(\Delta P\) — изменение цены внутри корзины, \(\sigma_P\) — стандартное отклонение цены, а \(\Phi\) — кумулятивная функция стандартного нормального распределения.
### Расчет VPIN
VPIN рассчитывается по скользящему окну из \(N\) корзин:
\[ VPIN = \frac{\sum_{\tau=1}^{N} |V_B^\tau - V_S^\tau|}{N \cdot V} \]
Значение VPIN колеблется от 0 до 1. Значение выше `0.70` указывает на то, что поток ордеров критически односторонен и агрессивен, что обычно предшествует резким выносам ликвидности (volatility spikes) и проскальзыванию цен.
### Практическое применение в breakout-боте
Для локальных breakout-стратегий вычисление полного VPIN на ходу может быть затратным. Внедряется упрощенный **Trade Flow Imbalance (TFI)** фильтр в окне времени \(T\):
\[ TFI = \frac{Q_{buy} - Q_{sell}}{Q_{buy} + Q_{sell}} \]
При пробое уровня вверх бот требует, чтобы \(TFI > \text{min\_flow\_imbalance}\) (например, `+0.05`), подтверждая, что в пробой бьют агрессивные покупатели. При пробое вниз — наоборот. Это отсекает ложные пробои, совершаемые на низком или встречном объеме.
На крипторынках HFT-алгоритмы и поставщики ликвидности постоянно сталкиваются с риском **неблагоприятного отбора** (adverse selection) — ситуацией, когда они исполняют ордера информированных участников рынка, обладающих краткосрочным информационным преимуществом. Метрика **VPIN** (Volume-Synchronized Probability of Toxicity) позволяет измерять вероятность токсичности потока ордеров в реальном времени.
### Механика VPIN и Volume Clock
В отличие от стандартных временных срезов (1-минутные или 5-минутные свечи), VPIN использует **объемные часы** (Volume Clock). Торговый поток делится на корзины равного объема (например, каждые 50 BTC объема торгов формируют одну корзину). Это нормирует сигналы:
1. В периоды высокой активности корзины заполняются быстро (высокая частота выборки).
2. В периоды затишья корзины заполняются медленно.
### Bulk Volume Classification (BVC)
Поскольку точная инициализация сделки (покупка по рынку или продажа по рынку) не всегда доступна или чиста в исторических агрегированных тиках, применяется метод BVC:
\[ V_B = V \cdot \Phi \left( \frac{\Delta P}{\sigma_P} \right) \]
\[ V_S = V - V_B \]
Где \(V\) — общий объем корзины, \(\Delta P\) — изменение цены внутри корзины, \(\sigma_P\) — стандартное отклонение цены, а \(\Phi\) — кумулятивная функция стандартного нормального распределения.
### Расчет VPIN
VPIN рассчитывается по скользящему окну из \(N\) корзин:
\[ VPIN = \frac{\sum_{\tau=1}^{N} |V_B^\tau - V_S^\tau|}{N \cdot V} \]
Значение VPIN колеблется от 0 до 1. Значение выше `0.70` указывает на то, что поток ордеров критически односторонен и агрессивен, что обычно предшествует резким выносам ликвидности (volatility spikes) и проскальзыванию цен.
### Практическое применение в breakout-боте
Для локальных breakout-стратегий вычисление полного VPIN на ходу может быть затратным. Внедряется упрощенный **Trade Flow Imbalance (TFI)** фильтр в окне времени \(T\):
\[ TFI = \frac{Q_{buy} - Q_{sell}}{Q_{buy} + Q_{sell}} \]
При пробое уровня вверх бот требует, чтобы \(TFI > \text{min\_flow\_imbalance}\) (например, `+0.05`), подтверждая, что в пробой бьют агрессивные покупатели. При пробое вниз — наоборот. Это отсекает ложные пробои, совершаемые на низком или встречном объеме.