# Vorontsov Indicator ## Trend Recognition Пусть есть последовательность Aggregated Price $$ x_1, x_2, x_3, \ldots, x_t, \ldots $$ Рассчитаем экспоненциальные сглаженные средние цен \begin{align} s_{1} &= x_1 \\ s_{t} &= \alpha x_t + (1 - \alpha) s_{t-1}, \quad t > 1 \end{align} для нескольких значений $\alpha$ (например, $\frac{1}{4}, \frac{1}{8}, \frac{1}{16}, \frac{1}{32}, \frac{1}{64}$). Рассчитаем также экспоненциальные сглаженные средние ошибок предсказаний и их модулей для каждого $\alpha$: \begin{align} \varepsilon_{t} &= \gamma (x_t - s_t) + (1 - \gamma) \varepsilon_{t-1} \\ \tilde{\varepsilon}_{t} &= \gamma \, |x_t - s_t| + (1 - \gamma) \tilde{\varepsilon}_{t-1} \end{align} Где $\gamma$, например $\frac{1}{20}$. Теперь можем определить величину $\large {K_t = \frac{\varepsilon_t}{\tilde{\varepsilon}_t}}$. _Замечание: $K_t$ зависит от $\alpha$, так как $\varepsilon$ и $\tilde{\varepsilon}$ зависят от $s_t$, которое зависит от $\alpha$. То есть, всего у нас будет столько величин $K_t$, сколько мы взяли разных $\alpha$._ В чём её смысл? Если ошибки $\varepsilon_t$ очень часто больше нуля, то эта величина будет близка к единице. А ошибки будут часто больше нуля, если происходит восходящий тренд -- цена растёт, а наша модель предсказывает по сути среднее по нескольким последним наблюдениям, что не учитывает тренд и занижает прогноз. И наоборот, если ошибки часто меньше нуля, то $K_t$ близко к $-1$. Таким образом, $K_t$ работает как trend recognition. ## Mean Reversion Гипотеза, на которую полагаются mean-reversion модели -- цена колеблется, но всегда возвращается к некоторому среднему значению. Считать это среднее можно разными способами -- в прошлом пункте мы уже посчитали несколько экспоненциальных средних $s_t$. Я буду писать их вот так: $s_t^{(\alpha)}$, чтобы подчеркнуть, что они разные и зависят от $\alpha$. Какое из всех усреднений лучше? Мы можем использовать для этого $K_t$. В самом деле -- если $K_t$ близко к 1 или -1, это значит, что наша модель систематически недооценивает или систематически переоценивает цену -- то есть, работает плохо. Если же $K_t$ близко к 0, ошибки модели чередуют знаки, так что скорее всего модель работает лучше. _Замечание: $K_t$ не учитывает, насколько большие ошибки у модели по модулю. То есть, если она ошибается на $+100, -100, +100, -100, \ldots,$ то $K_t$ всё ещё близок к нулю, потому что ошибки хоть и большие, но в среднем равны нулю. Я также думаю над тем, чтобы использовать для выбора моделей $\tilde{\varepsilon}$, потому что он учитывает масштаб ошибок, но готовой идеи ещё нет._ Итоговый mean reversion: 1. Рассчитать экспоненциальные средние $s_t$ для нескольких значений $\alpha$. 2. Рассчитать соответствующие $K_t$ 3. В каждый момент времени $t$ мы выбираем ту модель $s_t$, для которой $|K_t|$ наименьший, и предсказываем mean-reversion к этому среднему. Что считать сигналом? Для лучшей модели $s_t$ у нас есть также оценка среднего модуля отклонения $\tilde{\varepsilon}$. Если $x_t > s_t + 2 \tilde{\varepsilon}$, то цена слишком высока, и модель предсказывает, что она упадёт, так что это сигнал открывать short-позицию. Если $x_t < s_t - 2 \tilde{\varepsilon}$, то цена слишком низкая, и надо вставать в long. _Замечание: здесь я использовал ту же логику, что в Bollinger Bands: сигнал к действию -- слишком большое расхождение в реальной цене и предсказании mean-reversion. Может быть, её надо несколько переработать (как минимум, подобрать другую константу, а не 2): дело в том, что теперь у нас есть несколько моделей, и вряд ли все из них будут сильно расходиться._