Как оптимизировать торговые системы форекс?
! Внимание !
Статья ориентирована, в первую очередь, на платформы Метатрейдер 4 (и МТ 5). Но изложенные общие принципы применимы для тестинга на любых торговых терминалах.
После того как выявленная торговая закономерность алгоритмизирована и запрограммирована время приступить к оптимизации нашей торговой системы форекс.
Процесс оптимизации не имеет строгих классических правил, особенно применительно к Форексу или любому другому рынку, поскольку пока нет такой науки. Есть разрозненные мнения отдельных людей, специализирующихся на разработке торговых систем.
Соответственно каждый из них строит свою систему правил оптимизации исходя из личных предпочтений, которые, в свою очередь, могут существенно разниться. Каждый подход к оптимизации будет иметь свои достоинства и свои недостатки, обусловленные, в том числе, личными психологическими свойствами автора.
Поэтому в этом вопросе каждому придётся определиться со своими предпочтениями самостоятельно исходя из тех целей, которые вы преследуете на Форексе, склонности к риску, терпеливости, настойчивости и т.д.
Давайте рассмотрим 3-и метода оптимизации торговых роботов:
- Консервативный метод (максимальная надёжность)
- Агрессивный метод (максимальная прибыль)
- Мой метод (метод Артура Быкова)
I) Консервативный метод
Ниже — свод правил оптимизации, который построен на здравом смысле и отражает консервативный взгляд на биржевую торговлю, предполагающий приоритет сохранения депозита и получение разумной, умеренной прибыли. Правила ориентированы на использование в тестере стратегий торговой платформы MetaTrader 4, но могут быть использованы и в любой другой платформе.
1 этап. Предварительная (грубая) оптимизация
Проводится на временном интервале не менее 6 лет. Последний год торговли пока исключаем из оптимизации, он нам понадобится для проведения «слепого» теста (теста за пределами выборки). Составной частью оптимизации является тестирование, поэтому залогом успешной оптимизации является правильное тестирование.
В ходе оптимизации анализируем следующие параметры:
— чистая прибыль (Net Profit).
— профит-фактор (Profit Factor).
— максимальная просадка (Maximum Drawdown).
При этом контролируем параметры:
— количество сделок (Number of Trades in the Test Sample).
— матожидание выигрыша (Expected Payoff).
В процессе оптимизации стремятся добиться, чтобы чистая прибыль и профит-фактор были максимальными, а просадка минимальной. Как правило, эти требования взаимно исключают друг друга. С увеличением прибыли растёт и просадка депозита. О том, какими должны быть значения перечисленных параметров и на что ещё следует обратить внимание при оценке торговых систем смотрим в разделе Как оценивать торговые системы?
Кроме того, такой способ оптимизации имеет особенности, на которые также необходимо обращать внимание:
— стремление к максимальной прибыли может привести к подгонке и снижению устойчивости системы: происходит вылавливание крупных трендов с большой прибылью в ущерб общей статистической достоверности.
— оценка просадки при максимизации прибыли может оказаться не объективной, т.к. её минимальное значение может быть следствием статистического выброса (флуктуации) никак не связанного с общей устойчивостью стратегии.
Чтобы этого не произошло, контролируем количество сделок и значение матожидания выигрыша. Сделок на оговоренном нами временном интервале оптимизации должно быть не менее 150…200. Матожидание выигрыша- не менее 8…10 пунктов, иначе результат реальной торговли начинает сильно зависеть от спреда и проскальзываний и не будет соответствовать тесту.
Смотрим также за тем, чтобы существенная часть нашей прибыли не была получена за счёт нескольких очень крупных сделок, это размывает статистическую картину и снижает устойчивость системы.
Профит-фактор является интегральной характеристикой устойчивости системы, как правило, при хорошем профит-факторе (не менее 2) остальные параметры системы, такие как просадка и матожидание выигрыша также выглядят не плохо. Если при этом количество сделок соответствует требуемому, существенная чистая прибыль получается автоматически.
Следует избегать крайних, предельных значений оптимизируемых параметров. Если максимальная прибыль сопровождается большой просадкой, следует пожертвовать частью прибыли с целью снижения просадки до приемлемых значений.
Итак, мы грубо определили оптимальные значения параметров системы. Чистая прибыль существенна и ощутима в пересчёте на один месяц торговли, просадка приемлема и психологически нас не травмирует, количество сделок убеждает в статистической достоверности результата, профит фактор, матожидание выигрыша в пределах необходимых значений. Переходим к следующему этапу оптимизации.
2 этап. Контроль формы эквити (графика доходности)
Форма кривой изменения состояния депозита (equity) является одной из основных характеристик торговой системы. В идеале оптимизацию системы необходимо проводить по величине среднеквадратического отклонения кривой эквити то есть по степени её линейности. К сожалению не каждый тестер-оптимизатор торговых стратегий даёт такую возможность. Самый популярный на сегодняшний день торговый терминал MetaTrader 4 такой возможности не имеет. Поэтому оптимизацию этого параметра будем проводить итерационным методом. Для этого вам необходимо знать Какой должна быть эквити?
Итак, прогоняем нашу стратегию на оптимальной комбинации параметров и смотрим эквити. Если кривая имеет существенную нелинейность, присутствуют длительные полки и просадки или на конечном участке истории кривая входит в насыщение, возвращаемся к первому этапу и ищем более подходящую комбинацию параметров. Если все требования к форме эквити выполняются- переходим к третьему этапу оптимизации.
3 этап. Контроль устойчивости
Для контроля устойчивости нам понадобятся следующие параметры:
— Процент прибыльных сделок (Percent Winners).
— Отношение среднего выигрыша к среднему проигрышу (Ratio of Average Win to Average Loss).
Устойчивость системы необходимо контролировать потому, что оптимизация даёт завышенный результат, вследствие неизбежной (непредумышленной) подгонки. В реальной торговле эти показатели ухудшатся, поэтому система должна иметь «запас прочности». Например, система с профит-фактором 2 в реальной работе будет иметь от силы 1,5. Устойчивость системы и необходимый «запас прочности» удобнее всего оценивать на основе вероятности провала POR (Probability of Ruin).
В таблице приведены вероятности провала счёта в $25000 до величины $12000 при различных значениях процента прибыльных сделок и отношения среднего выигрыша к среднему проигрышу.
++++ Здесь таблица:
Вероятность провала счёта $25000 до величины $12000 |
||||||||||
Отношение средних прибыль/убыток |
Процент прибыльных сделок |
|||||||||
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
70 |
75 |
|
0,75 |
100 |
100 |
100 |
100 |
100 |
98 |
77 |
15 |
1 |
0 |
1 |
100 |
100 |
100 |
99 |
92 |
50 |
7 |
1 |
0 |
0 |
1,5 |
100 |
99 |
90 |
50 |
12 |
2 |
0 |
0 |
0 |
0 |
2 |
97 |
79 |
35 |
9 |
2 |
1 |
0 |
0 |
0 |
0 |
2,5 |
79 |
38 |
12 |
4 |
1 |
0 |
0 |
0 |
0 |
0 |
3 |
50 |
19 |
6 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
3,5 |
31 |
12 |
5 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
4 |
21 |
9 |
4 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
+++++
Пользоваться таблицей надо следующим образом. Подставляем в таблицу результаты теста своей торговой системы и определяем POR. Затем смещаемся на один столбец в сторону ухудшения по оси «Процент прибыльных сделок» и по оси «Отношение средних прибыль/убыток».
Получаем истинное значение POR нашей торговой системы с поправкой на реальную торговлю.
Например: после оптимизации и тестирования ваша торговая система имеет параметры:
— процент прибыльных сделок – 45%;
— отношение средних прибыль/убыток – 2.
По таблице определяем POR = 2%. Смещаемся по обеим осям на один столбец и определяем истинную устойчивость в реальной торговле POR = 50%. Естественно такое значение POR неприемлемо, поэтому возвращаемся к 1 этапу и продолжаем оптимизацию с целью определения параметров при которых истинная POR не будет превышать хотя бы 10-15%. Если полученная устойчивость системы нас устраивает- переходим к следующему этапу.
4 этап. Тест за пределами выборки
Для этого нам понадобится последний год котировок, который мы исключили из оптимизации на первом этапе. Прогоняем нашу торговую систему с оптимальными параметрами и смотрим получившиеся результаты. Если система в целом сохранила свои показатели эффективности и устойчивость, либо эти показатели деградировали не более, чем на 20%, значит процесс оптимизации завершен и можно переходить к тестовой эксплуатации системы на демо- счёте.
Подробнее правила оптимизации можно изучить на примере.
II) Агрессивный метод оптимизации (максимальная прибыль)
Мы делаем тоже самое, что и в предыдущих пунктах, только есть ряд особенностей.
- Мы тестируем систему на коротком временно интервале (например, только за последний год).
- Нас интересует максимальная доходность (для этого, как правило, устанавливается высокий процент риск (10-20-30% риска на 1 сделку) + используем реинвестирование прибыли.
- Т.е. мы пытаемся настроить систему под текущий рынок и надеемся на то, что сумеем ухватить свой кусок прибыли до того, как рыночная фаза изменится.
При таком подходе, обычно, происходит один из двух сценариев:
Мы угадали с рыночной фазой, и тогда можем быстро получить +100% или 200% или 300% или даже больше.
Мы не угадали с фазой и тогда быстро наступает слив депозита (или от него остаются жалкие крохи).
Обратите внимание!
При данном методе (даже если мы угадали с рыночной фазой) разумно периодически фиксировать прибыль (снимать часть профита с депозита)
III) Мой метод — метод оптимизации Артура Быкова
Тезисно:
- Я не заморачиваюсь оптимизацией параметров (стоп-лоссов, тейк-профитов и т.п.) с целью поиска «идеального варианта»
- Вместо этого пытаюсь найти «интеллектуальные фильтры». Т.е. пытаюсь найти на графике «слабые места» системы (фазы, где роботы и АТС проигрывают деньги) и найти конкретное противоядие под эти участки рынка.
Поясню на примере. Допустим, ваш торговый робот на тесте 4 года зарабатывает и 1 год ведёт себя очень плохо (сливает).
Попытка играться с параметрами (увеличить или уменьшить стоп-лосс и т.п.) ничего не дадут. Нам нужно понять — что изменилось за последний год? Что поменялось на рынке? Мы можем сформулировать словами эти изменения?
Далее пытаюсь добавить фильтр который исправит ситуации. Это может быть новый индикатор, который будет выявлять неблагоприятный период и запрещать торговлю в это время.
Это легко сказать, но трудно сделать. Т.к. мы часто не знаем точно, что «является лекарством» и действуем просто «методом тыка». Это самый сложный и долгий период (по времени).
Т.е. создать робота — легко и просто. Тестировать и оптимизировать — сложно и долго.
При написании статьи использовались материалы сайта:
Серьёзный трейдинг - foreks-blog.broker-obzor.com