Обсуждение статьи "Инжиниринг признаков для машинного обучения (Часть 1): Дробное дифференцирование — стационарность без потери памяти"

 

Опубликована статья Инжиниринг признаков для машинного обучения (Часть 1): Дробное дифференцирование — стационарность без потери памяти:

Целочисленное дифференцирование заставляет выбирать между стационарностью и памятью: доходности (d=1) стационарны, но отбрасывают всю информацию об уровне цены; исходные цены (d=0) сохраняют память, но нарушают предположения ML о стационарности. Мы реализуем метод дробного дифференцирования фиксированной ширины (FFD) из главы 5 AFML: get_weights_ffd (итеративная рекурсия с отсечением по порогу), frac_diff_ffd (ограниченное скалярное произведение на каждом баре) и fracdiff_optimal (бинарный поиск минимального стационарного d*).

Каждый пайплайн машинного обучения для финансовых временных рядов сталкивается с решением предварительной обработки, которое большинство практиков принимает автоматически: как преобразовать исходные цены в признаки. Стандартный подход — вычислять лог-доходности как первые разности логарифмов цен. Доходности стационарны, что соответствует предположениям большинства ML-алгоритмов. Но у доходностей есть критический недостаток: они стирают память. Ряд доходностей не содержит информации о том, на каких ценовых уровнях находился актив, насколько он отклонился от своего долгосрочного среднего и как текущий уровень соотносится с историческими зонами поддержки и сопротивления. Каждое значение зависит ровно от одного предшественника, а все, что было до него, отбрасывается.

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

Дробное дифференцирование решает эту дилемму. Вместо дифференцирования целочисленного порядка (0 для цен, 1 для доходностей) мы используем вещественный порядок d между 0 и 1. В результате получается ряд, который является стационарным — удовлетворяет предположениям ML — и при этом сохраняет как можно больше памяти исходного ценового ряда. Лопес де Прадо представил этот метод сообществу финансового ML в Главе 5 AFML, опираясь на фундаментальную работу Хоскинга (1981). В этой статье рассматривается теория, объясняются две стратегии реализации (расширяющееся окно и окно фиксированной ширины) и разбирается реализация промышленного класса на Python в библиотеке afml. Следующая статья серии переносит этот механизм в MQL5 для работы с потоками данных MetaTrader 5 в реальном времени.


Автор: Patrick Murimi Njoroge