вторник, 26 января 2016 г.

Как решить проблему переоптимизации советников

Материал Как решить проблему переоптимизации советников

Довольно часто можно встретить печальные рассказы начинающего алготрейдера о том, как он нашел отличные сет файлы для советника, а, поставив их в работу на реальный счет, потерпел потери. И вроде бы делал все верно, даже форвард тестирование проводил, а все равно деньги потерял. Почему же так происходит? Как же так выходит, что отличные по результатам тестирования настройки «льют» при работе реал-тайм? Ситуация, подобная этой называется среди трейдеров переоптимизация или подстройка параметров. О ней и о том, как же ее избежать, мы сегодня и поговорим. 

Что такое переоптимизация? 

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

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

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

Еще один способ определить подстройку системы – сравнить среднегодовую доходность на периоде форварда с реальной. Она должна быть примерно такой же и если это не так, то вы имеете дело с переоптимизацией. Тем не менее, если набор настроек прошел форвард тест, то скорее всего он работоспособен. Работоспособный сет вполне может быть немного подстроенным, когда возникают небольшие расхождения в результатах реала и теста, но тем не менее он может долгое время все равно приносить прибыль. 

Причины переоптимизации 

Как я уже говорил, причины кроются в нарушении правил оптимизации. Из практики могу назвать шесть примеров таких нарушений: 

Слишком много правил и условий, ограничивающих число степеней свободы. 

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

Слишком мала выборка данных, непрезентативный отрезок исторических данных для оптимизации. 

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

Ошибки в процессе создания самой системы. 

Часто разработчик системы изначально закладывает в систему возможность переоптимизации. Вот пара таких возможностей: 

— Поочередное добавление правил для наблюдения повышения эффективности и исключение неработающих правил. Например, добавление стохастика, затем добавление RSI, потом удаление еще какого-нибудь индикатора. 

— Тестирование многих вариантов одного и того же правила. Например, вход в зону перекупленности/перепроданности и выход из нее. 

В целях получения от советника максимальной эффективности вышеназванные приемы вполне оправданы, но стоит быть очень внимательным при доводке эксперта. 

Слишком маленькое количество совершенных сделок. 

Я уже рассказывал вам, что такое стандартная ошибка и зачем она нужна. Чем больше было совершено сделок, тем меньше вероятность ошибки. Скорость торговли у всех систем разная, некоторые скальперы наберут 300 сделок по одной паре за месяц, а некоторые не наберут и 50 сделок за год. Поэтому также важно выбрать период оптимизации исходя и из «темперамента» советника. 

Неверная оценка результатов сета. 

Хотя неверный выбор сета и не является прямой причиной переоптимизации, все же это распространенная причина неудач. Прежде всего, необходимо проводить анализ сделок сета. Прибыли и убытки должны быть распределены чем плавнее и равномернее, тем лучше. Ни в коем случае не должно быть единичных сделок, приносящих по 30% всей прибыли. Проигрышные сделки также должны быть распределены равномерно. 

При оптимизации двух параметров мы получаем график оптимизации, подобный этому: 


Чем более глубокий зеленый цвет, тем более прибыльны настройки. Всегда стоит выбирать из тех наборов параметров, которые кучкуются вместе, из тех параметров, которые окружены параметрами тех же цветов. В таком случае при несущественных изменениях рынка доходность эксперта не сильно изменится. 

Всплеск прибыли. 

Это частный случай неверно выбранного участка для оптимизации. В данном случае по стечению обстоятельств на выбранном участке оптимизации рынок имеет максимально подходящие для советника условия. В результате получаются шикарные сеты, которые в реальном времени начинают лить. Либо наоборот, выбирается период с наихудшей для советника рыночной ситуацией, например, период затяжного флета для бота-трендовика. Оптимизация дает слабый результат и робот незаслуженно откладывается в архив. 

Чрезмерное сканирование. 

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

Кто виноват и что делать? 

Как видите, половина ошибок при оптимизации связана с неверным алгоритмом ее проведения и вторая половина с маленькой выборкой данных. Старайтесь не спешить и тщательно соблюдать технологию оптимизации советников. Никогда не жалейте куска истории под оптимизацию и не забывайте о форвард тесте (желательно еще и про бэквард-тест помнить) и тогда, надеюсь, вы избежите ловушек оптимизации и ваша алготорговля будет прибыльной и приятной.