Переподгонка. Суть и способы устранения |
15.08.2010 01:00 |
Многие начинающие трейдеры, использующие механические торговые системы, бывают сильно разочарованы: система, показавшая отличные результаты на исторических данных, часто оказывается значительно менее эффективной на практике, а то и вовсе убыточной. В этой заметке я расскажу о том, почему так происходит, и как с этим можно бороться.
Вышеописанное явление хорошо известно в статистике, теории прогнозирования и искусственного интеллекта. Оно получило название «переподгонка» или «переобучение». Опытные трейдеры также о нем знают. Технический анализ построен на предположении, что прошлые ценовые закономерности повторяются в будущем. Обучая систему на истории котировок, трейдер рассчитывает, что она будет прибыльной, в надежде, что «схваченные» закономерности (напр., «сигнальные» периоды скользящих средних) и впредь сохранятся. К сожалению, как правило, ничего не известно о том, что именно эти закономерности из себя представляют: допустим, рассуждая в теханалитических терминах, «истинная» ценовая динамика порождается EMA, а трейдер использует SMA. Это напоминает поиск иголки в стоге сена с одной поправкой: точно неизвестно даже, ищется ли собственно иголка или, быть может, что-то другое. Это самое слабое место во всех теханалитических методах. Поскольку характер и смысл закономерностей изначально неясен, в принципе невозможно отличить «настоящую закономерность» от «ненастоящей», отличить жемчужину от простого камешка. Раз так, система будет обучаться не только полезной информации – «жемчужинам», но и «шуму» – случайным связям, которые не найдут продолжения в будущем. Сразу напрашивается вывод: надо каким-то образом отфильтровать шум, отделив «зерна от плевел»…
Наиболее важный метод – разделение обучающей выборки на несколько частей. Часто это называют «кросс-валидация» (cross-validation). Запомните этот термин, он нередко встречается в литературе и специальных программах, в том числе и ориентированных на трейдинг. Я же буду использовать более простую терминологию. Итак, история котировок разделяется на три части: обучающую, тестовую и контрольную. Напр., для построения дневной системы на EUR/USD можно взять период за три года: первые 450 дней зарезервировать под обучение, следующие 200 – для тестирования и последние 100 – для окончательного контроля. Обучающая выборка используется для подгонки параметров торговой системы, напр., периодов скользящих средних. Тестовая – для мониторинга обобщающей способности системы. Тестовая выборка не используется при настройке параметров, поэтому эффективность системы на тестовой выборке показывает (частично), насколько хорошо она работает на новых данных. Система с хорошими показателями на обучающей выборке и плохими на тестовой отправляется в мусорку, поскольку она не способна извлекать прибыль на незнакомых котировках. Таким образом, производится отбор систем до тех пор, пока не будет найдена система с хорошими показателями как на обучающей, так и на тестовой выборке. К сожалению, такая процедура так же содержит в себе элемент подгонки. Интуитивно понятно, что перебирая всевозможные варианты, довольно высока вероятность чисто случайно подобрать систему с хорошими показателями и на обучающей, и на тестовой выборке. Вот тут-то и вступает в действие третья часть данных – контрольная выборка. После всего отобранная система должна быть прибыльной и на контрольной выборке! На этом перебор систем заканчивается. В том числе и в случае неудачи. Если система не работает на контрольной выборке, скорее всего, в данных нет никаких закономерностей, поэтому поиск должен быть остановлен. Дальнейший перебор с целью найти систему работающую и на контрольной выборке, означал бы лишь еще более изощренную подгонку.
Второй метод – контроль сложности самой системы. Чем сложнее система, чем больше у нее настраиваемых параметров, правил открытия и закрытия позиций и исключений из этих правил, тем более гибкой и мощной она является. Однако чем гибче система, тем больше она подвержена переподгонке, поскольку она всё больше начинает подстраиваться под особенности обучающей выборки, в том числе и случайные. В принципе, необходим некий оптимальный уровень сложности торговой системы: слишком простая система вообще не сможет уловить закономерности, слишком сложная склонна выдавать любую случайность за прибыльную возможность. К сожалению, этот уровень сложности заранее неизвестен, поэтому лучше начинать от простого к сложному: попробовать сначала систему с одним – двумя настраиваемыми параметрами, если она не дает желаемого результата – добавить новые индикаторы, правила и т.п. Если повезет, таким способом можно найти систему с минимально необходимым уровнем сложности. Такая система с большей вероятностью будет хорошо работать на новых данных.
На практике следует сочетать оба метода: разделение выборки и контроль сложности, но первый метод является более важным. Дело в том, что сложные системы, как правило, склонны к переподгонке, но не всегда. Я не буду здесь объяснять, почему это так, поскольку это уведет в плохо проходимые математические дебри. Кроме того, в трейдинге, в отличие от других отраслей, где также используется прогнозирование, как правило, нет проблем с объемом обучающей выборки, особенно на мелких тайм-фреймах, поэтому контроль сложности не столь актуален, – нет нужды высвобождать данные из тестового и контрольного множества для увеличения обучающей выборки, – она и так достаточно велика. К тому же финансовые данные крайне нестабильны, вряд ли есть смысл использовать для обучения данные десятилетней давности, поэтому объем выборки при оптимизации торговой системы – не самоцель. Это, кстати, тоже порождает большую проблему. С одной стороны, чтобы надежно выявить закономерности, нужно использовать как можно больше данных, с другой – слишком старые данные теряют актуальность и могут вовсе не содержать сегодняшних рыночных реалий. Оптимальный размер обучающей выборки следует подбирать опытным путем.
В итоге оптимизация торговой системы должна включать в себя следующие шаги:
Только строгое соблюдение этих правил дает шанс разработать действительно прибыльную и устойчивую торговую систему.
q-trader
|
Комментарии
q-trader
Руслан
EVVA
Харита
q-trader