Сканирование трендов поддерживает как окна, направленные в будущее, так и окна, направленные в прошлое, а режим разметки по умолчанию небезопасен для вычисления признаков: он использует будущие данные и на случайных блужданиях повышает долю совпадений с направлением следующего бара значительно выше случайного уровня. Мы предлагаем специальную функцию-обертку get_trend_scanning_features, которая принудительно задает каузальный режим вычислений и возвращает только window, slope, t_value и rsquared. Во втором анализе количественно оцениваются ошибки, возникающие при применении используемого по умолчанию логарифмического преобразования к рядам, допускающим отрицательные значения.
В серии статей «Схема применения машинного обучения в MetaTrader 5» было представлено сканирование трендов как метод разметки: для нескольких проверяемых длин окна оцениваются регрессии методом наименьших квадратов (МНК), выбирается окно с наибольшим абсолютным значением t-статистики, а знак этой статистики используется в качестве метки. Эта функция, trend_scanning_labels, находится в модуле afml.labeling.trend_scanning и с тех пор не менялась. В этой статье меняется вопрос, на который должна ответить эта функция. Метка отвечает на вопрос «что произошло после этого бара». Признак должен отвечать на вопрос «что можно было знать на этом баре», а одна и та же функция может отвечать на любой из этих вопросов, поскольку позволяет выбирать оба направления с помощью одного аргумента.
Это иной тип ошибки, чем те, которые до сих пор рассматривались в этой серии. В части 11 была обнаружена утечка будущих данных, заложенная в центрированное скользящее окно, причем каузальный режим вообще не был предусмотрен, а в части 12 исправленные каузальные фрактальные признаки были перенесены в реализацию на MQL5. Здесь каузальный вариант уже предусмотрен: lookforward=False — это полноценный, протестированный вариант выполнения кода. Риск заключается в использовании значения по умолчанию, подходящего для разметки, при построении матрицы признаков. Ничто в сигнатуре функции не препятствует успешному выполнению вызова. Она возвращает корректно сформированный DataFrame, который выглядит правильно.
В этой статье функция trend_scanning_labels обёрнута в интерфейс исключительно для вычисления признаков, который устраняет саму возможность выбора, а не просто документирует её. Она измеряет утечку будущих данных, вызванную неправильным выбором, и описывает второй, не связанный с ней дефект, который возникает при применении функции к входному ряду, допускающему отрицательные значения, а не к исходным ценам.
Опубликована статья Конструирование признаков для машинного обучения (Часть 13): Признаки на основе сканирования трендов в Python:
В серии статей «Схема применения машинного обучения в MetaTrader 5» было представлено сканирование трендов как метод разметки: для нескольких проверяемых длин окна оцениваются регрессии методом наименьших квадратов (МНК), выбирается окно с наибольшим абсолютным значением t-статистики, а знак этой статистики используется в качестве метки. Эта функция, trend_scanning_labels, находится в модуле afml.labeling.trend_scanning и с тех пор не менялась. В этой статье меняется вопрос, на который должна ответить эта функция. Метка отвечает на вопрос «что произошло после этого бара». Признак должен отвечать на вопрос «что можно было знать на этом баре», а одна и та же функция может отвечать на любой из этих вопросов, поскольку позволяет выбирать оба направления с помощью одного аргумента.
Это иной тип ошибки, чем те, которые до сих пор рассматривались в этой серии. В части 11 была обнаружена утечка будущих данных, заложенная в центрированное скользящее окно, причем каузальный режим вообще не был предусмотрен, а в части 12 исправленные каузальные фрактальные признаки были перенесены в реализацию на MQL5. Здесь каузальный вариант уже предусмотрен: lookforward=False — это полноценный, протестированный вариант выполнения кода. Риск заключается в использовании значения по умолчанию, подходящего для разметки, при построении матрицы признаков. Ничто в сигнатуре функции не препятствует успешному выполнению вызова. Она возвращает корректно сформированный DataFrame, который выглядит правильно.
В этой статье функция trend_scanning_labels обёрнута в интерфейс исключительно для вычисления признаков, который устраняет саму возможность выбора, а не просто документирует её. Она измеряет утечку будущих данных, вызванную неправильным выбором, и описывает второй, не связанный с ней дефект, который возникает при применении функции к входному ряду, допускающему отрицательные значения, а не к исходным ценам.
Автор: Patrick Murimi Njoroge