Дробное дифференцирование временных рядов
Материал из MachineLearning.
| | Статья написана с использованием LLM Gemini 3.1 Pro Preview и проверена участником Polina Khadralinova |
Промпт приводится полностью в Обсуждение:Дробное дифференцирование временных рядов
Дробное дифференцирование временных рядов (от англ. Fractional differentiation) — это метод математической трансформации и предварительной обработки последовательных данных, позволяющий достичь их стационарности без полной потери информации о долгосрочной памяти (паттернах прошлого). В контексте финансового машинного обучения этот метод был фундаментально переосмыслен и популяризован профессором Маркосом Лопесом де Прадо в качестве решения проблемы потери ценовых уровней при обучении предсказательных моделей.
Содержание |
Дилемма «Стационарность против Памяти»
Чтобы понять ценность дробного дифференцирования, необходимо рассмотреть фундаментальное противоречие, с которым сталкивается любой исследователь при подготовке финансовых данных для алгоритмов машинного обучения. Это противоречие удобно описать как конфликт между математическими требованиями моделей и информационной ценностью самого сигнала.
Абсолютное большинство алгоритмов машинного обучения (от линейной регрессии до глубоких нейронных сетей) опирается на предположение о том, что поступающие на вход данные распределены стационарно. Грубо говоря, статистические свойства ряда (математическое ожидание, дисперсия) не должны меняться во времени. Однако сырые финансовые ряды (например, графики цен акций) являются нестационарными — они хаотичны, подвержены долгим трендам и резким сменам режимов. В эконометрике сырые цены называют рядами с порядком интеграции 1, или .
Традиционный подход к этой проблеме — вычисление «первой разности» (целочисленное дифференцирование с порядком ). Исследователь переходит от самих цен к их изменениям (доходностям), вычитая из текущей цены вчерашнюю:
Этот шаг делает ряд стационарным — . Ряд начинает колебаться вокруг нуля, и алгоритм теперь может стабильно обучаться. Однако здесь возникает критический изъян: первая разность полностью стирает память временного ряда. Доходность сообщает модели лишь о том, как актив изменился за последний день, но ничего не говорит о том, находится ли актив на историческом максимуме или на дне глубокой просадки. Модель страдает от искусственно вызванной «амнезии», теряя важнейший контекст ценового уровня.
Дилемма заключается в следующем: сырые цены () сохраняют всю память, но непригодны для предсказательного моделирования из-за нестационарности; доходности (
) идеально стационарны, но полностью лишены предиктивной памяти. Дробное дифференцирование решает эту проблему, позволяя найти компромиссный (дробный) порядок дифференцирования
(где
). Этот порядок делает ряд достаточно стационарным для алгоритма, но при этом сохраняет максимально возможный объем исторической памяти.
Математический аппарат: оператор сдвига и биномиальный ряд
Для строгого понимания механики метода необходимо обратиться к операционному исчислению временных рядов. Пусть — временной ряд, а
— его значение в момент времени
.
Введем линейный оператор сдвига назад (backshift operator), обозначаемый как . Его действие на элемент ряда определяется предельно просто:
Соответственно, применение оператора раз возвращает нас на
шагов в прошлое:
.
Классическая первая разность, описанная выше, теперь может быть элегантно записана через оператор :
А вторая разность примет вид .
Инновация дробного подхода состоит в том, чтобы отказаться от ограничения степени целыми числами и возвести бином в вещественную (дробную) степень
. Опираясь на разложение в биномиальный ряд (ряд Тейлора для дробной степени), мы получаем бесконечную сумму:
Где — это веса, с которыми прошлые наблюдения
входят в текущее значение трансформированного ряда. Эти веса вычисляются по следующей формуле:
Для компьютерных вычислений и понимания динамики затухания гораздо удобнее использовать рекуррентную форму записи весов:
Взглянув на эту рекурсию, можно заметить важнейший эффект механизма затухания весов. Если (классическая доходность), то
,
, а для всех
вес
строго равен
. Память обрывается мгновенно. Но если
находится в интервале
, веса
никогда не обращаются в абсолютный
. Они асимптотически стремятся к нулю по мере роста
. Это означает, что каждое новое значение продифференцированного ряда
содержит в себе взвешенную сумму всей доступной истории актива:
Практическое применение: метод FFD и порог отсечения
Несмотря на математическую красоту формулы бесконечного ряда, при её реализации на реальных данных возникает серьёзный алгоритмический изъян — проблема расширяющегося окна (Expanding Window).
Поскольку на практике мы располагаем конечной выборкой данных, для самого первого наблюдения мы можем использовать только вес
. Для наблюдения
мы используем уже 101 вес, и так далее. Это означает, что степень дифференцирования (и дисперсия ряда) будет нестабильной: ранние точки будут дифференцироваться иначе, чем поздние. Временной ряд с изменяющейся дисперсией не может считаться стационарным, что разрушает всю первоначальную цель процедуры.
Чтобы обойти это ограничение, Лопес де Прадо ввёл метод FFD (Fixed-Window Fractional Differentiation — дробное дифференцирование с фиксированным окном).
Суть FFD заключается во введении порога отсечения (cutoff threshold). Поскольку веса при
монотонно убывают по модулю, мы можем искусственно обрубить хвост бесконечного ряда, отбросив те исторические значения, чей вес
становится меньше пренебрежимо малой величины
(на практике часто используют значение
).
Это задает строго фиксированную длину окна , такую что для всех
выполняется условие
. Теперь рабочая формула шага вычислений принимает законченный вычислимый вид:
- Для вычисления каждого нового значения всегда используется ровно
прошлых точек.
- Вектор весов
остаётся неизменным на всём протяжении вычислений, гарантируя постоянство дисперсии и отсутствие паразитного дрифта (смещения).
- Значения временного ряда до индекса
отбрасываются (процесс «прогрева» фильтра).
В практическом пайплайне машинного обучения подбор параметра превращается в задачу оптимизации. Исследователь итерирует значение
от
до
с малым шагом, на каждом шаге применяя тест Дики — Фуллера (ADF) к полученному ряду
. Оптимальным считается минимально возможное значение
, при котором p-value теста ADF падает ниже критического уровня (например,
). Таким образом, ряд едва пересекает границу стационарности, сохраняя при этом максимальную корреляцию (память) с исходным ценовым уровнем
.
См. также
Литература
- Lopez de Prado M. Advances in Financial Machine Learning. — John Wiley & Sons, 2018. — 400 с.
- Hosking J. R. M. Fractional differencing. — Biometrika. — 1981 T. 68. — С. 165-176.

