Kot_Begemot
Kot_Begemot личный блог
02 мая 2019, 00:22

Тестирование стратегий - Walk Forward Test vs CV Fold Test

В классических задачах прогнозирования используются в основном различные Fold  тесты. Их логика весьма понятна и прозрачна – защитить алгоритм от переобучения и получить лучшие стационарные параметры регуляризации. Например, такие, как лямбда Тихонова, или, если речь идёт о  бустинге на деревьях решений – минимальное количество листьев.  Однако сообщество Smart Lab настоятельно рекомендовало нам провести Walk Forward тесты, логика которых нам мало понятна.

А если логика не понятна, то можно детально рассмотреть какой-нибудь простой пример.

 

 Тестирование стратегий - Walk Forward Test  vs  CV Fold Test

Пусть в качестве объекта прогнозирования у нас будет выступать простая синусоида с частотой ω и амплитудой А. Без применения сложных математических методов эта задача решается следующим образом:

  1. Берутся исторические данные
  2. На основе данных  подбираются параметры амплитуды, частоты и фазы.
  3. Исходя из полученных «динамических» переменных модели строится прогноз на будущее.

Подбор этих параметров происходит в скользящем окне – по ходу возникновения новых данных, и потому фаза модельного процесса непрерывно  изменяется.

Предположим, теперь, что пользователь не желает пользоваться столь сложным алгоритмом подбора фазы, частоты и амплитуды, которые он решает задать самостоятельно в виде некоторых пользовательских параметров.

Естественно, если он задаёт переменные в виде постоянных параметров (в первую очередь фазу), то его алгоритм начинает обладать  нулевой предсказательной силой.

В итоге, пользователь решает, что некоторые «параметры» всё-таки изменяются во времени и их нужно постоянно «переоптимизировать»  –  чтобы модельный синус всё-таки описывал динамику исследуемого синусоидального процесса.

Эта постоянная «переоптимизация», возникшая из-за того, что пользователь изначально включил в модель изменяющиеся во времени переменные как статичные параметры, и которые по ходу движения окна алгоритм все время переподбирает – называется Идущим Вперёд Тестом — Walk Forward Test .

При описанной выше переоптимизации фаза, подобранная в предыдущем окне как оптимальная (в смысле правильности предсказания на предыдущем шаге), очевидно, будет неправильной в следующем окне – сдвиг окна приводит к новому значению фазы. Потому такой алгоритм пререоптимизации все время будет запаздывать по времени в плане вычисления правильной фазы.

По указанной причине алгоритм вычисления переменных зашивается в модель сразу – в этом и есть суть моделирования.  В этом и состоит сама модель – в предложении, как моделировать переменные, чтобы не происходило запаздывания предсказаний. И в этом смысле Walk Forward Test  теряет всякий смысл как тест  вообще и как тест на переобучаемость модели в частности.

При этом, Walk Forward Test, в нашем примере,  будет показывать намного лучшие результаты чем Back Test, так как в отличие от Back Test’a, в котором фаза процесса в окне принимается одной и той же на всей исторической выборке, Walk Forward модель действительно будет более-менее соответствовать действительности (хотя и с запаздывающей коррекцией фазы).

Существует ещё и другой вариант – когда исследуемый процесс абсолютно случаен (распределён по Гауссу с АКФ =0), а исследователь применяет к нему модель синуса. Тогда на любом ограниченном участке коричневого/белого шума он сможет выделить какой-то тот, или иной синус, возникший в объекте абсолютно случайно, но принимая его за закономерность, по сути, закладывает в модель апостериорно известный ему шум.  В этом случае – полной неадекватности модели – результаты Back Test будут намного лучше результатов Walk Forward Test, но применять такую модель, даже если Walk Forward Test она пройдёт «успешно», всё равно нельзя в силу её полной неадекватности.

Подобное априорно закладываемое знание об апостериорном значении шума — не имеет к классически понимаемому переобучению модели вообще никакого отношения.

Так, в классическом моделировании всегда строится такая модель, которая адаптируется на текущем окне, не зная ничего о будущем. Такая модель изначально удовлетворяет требованию Walk Forward, и смысл проведения для нее Walk Forward теста абсурден изначально. Но каждая модель, «успешно» или «не успешно» прошедшая «Walk Forward» подвергается ещё Fold тестам, чтобы  исключить или ограничить переобучение модели.

Поэтому, в ответ на предложение провести Walk Forward Test мы можем только поблагодарить участников дискуссии за стимул к обсуждению этого вопроса.

 

4 Комментария
  • wrmngr
    02 мая 2019, 01:31
    Вот тут плюсану, волкфорвард практически не даёт никакой информации о качестве модели. Правда и фолд ненамного его превосходит если параметров много.
    • wrmngr
      02 мая 2019, 11:01
      Kot_Begemot, Для меня ставка ЦБ при моделировании динамики облигаций это скорее константа (в моменте) а не параметр. А вот, к примеру,  глубина окна при расчете корреляции — параметр. И каждый дополнительный признак — параметр. Можно сказать более обще, это число степеней свободы при калибровке к данным


Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн