Оптимизация советника: как не скатиться в подгонку
Оптимизация советника — обоюдоострый инструмент: она может улучшить робота, а может превратить его в красивую подгонку под прошлое, бесполезную в реале.
Оптимизация советника — обоюдоострый инструмент: она может улучшить робота, а может превратить его в красивую подгонку под прошлое, бесполезную в реале. Разбираем, как оптимизировать честно.
Что это и как работает
В тестере можно перебрать множество значений параметров и выбрать лучшие. Проблема в том, что «лучшие на истории» часто просто подогнаны под случайные особенности прошлого (переоптимизация, кривая подгонка). Такой советник запоминает шум, а не закономерность, и в реале рассыпается.
Плато против пика
Ключевая интуиция честной оптимизации: ищите «плато», а не «пик». Если результат отличный только при одном точном наборе параметров, а чуть в сторону — всё разваливается, вы нашли случайность прошлого. Если же соседние значения дают похожий приличный результат — это устойчивое плато, и вероятность, что закономерность реальна, выше. Робот, живущий на широком диапазоне настроек, переживёт смену рыночных условий; робот на игольчатом пике — нет.
Как это выглядит на практике
Вы прогнали оптимизацию и видите: при периоде 14 прибыль огромна, а при 13 и 15 — убыток. Соблазн взять «14 и радоваться». Но это красный флаг подгонки: рынок не знает про вашу цифру 14. Правильнее выбрать участок, где 12–16 дают ровный положительный результат, пусть и скромнее пикового. Затем проверить на отложенных данных и форвардом. Значения условны и служат лишь иллюстрацией разницы между пиком и плато.
Плюсы и минусы
Плюс честной оптимизации: адаптация робота к инструменту и таймфрейму, отсев заведомо плохих настроек. Минус и риск: соблазн «докрутить» до идеальной кривой, которая не воспроизводится. Чем больше параметров и меньше данных, тем выше риск переподгонки.
Как оптимизировать без переподгонки
Делите историю: оптимизируйте на одной части (in-sample), проверяйте на другой (out-of-sample). Используйте walk-forward: скользящее окно оптимизации и проверки. Предпочитайте параметры из широкого устойчивого «плато», а не одиночный пик. Держите число параметров минимальным: каждая лишняя настройка повышает шанс подогнать робота под шум. Завершайте форвард-тестом на демо.
Итог
Хорошая оптимизация ищет устойчивость, а не идеальную картинку прошлого. Разделяйте данные, применяйте walk-forward и форвард-тест. Специализированные инструменты для честной проверки смотрите в нашем каталоге бэктест-сервисов.
Как оптимизировать, не подгоняя под историю
Главное правило: количество оптимизируемых параметров должно быть минимальным. Каждый дополнительный параметр увеличивает число комбинаций, а вместе с ним и вероятность, что лучшая из них подобрана под шум, а не под закономерность. Практический ориентир — не больше трёх-четырёх параметров одновременно, и каждый из них должен иметь смысл, который вы можете объяснить словами: почему период именно этого индикатора влияет на результат.
Второе правило — разделение выборки до начала работы. Данные делятся на две части: на первой подбираются параметры, на второй проверяется найденное. Вторая часть не должна участвовать в подборе ни разу, иначе она перестаёт быть независимой. Если результат на проверочном отрезке заметно хуже, значит вы нашли не закономерность, а особенности первого периода, и настройку нужно упрощать, а не улучшать.
Третье — проверка устойчивости. После нахождения оптимума сдвиньте каждый параметр на один шаг в обе стороны и посмотрите на результат. У рабочей стратегии он изменится плавно: соседние значения дают близкий итог. У подогнанной обвалится, потому что оптимум оказался узким пиком на поверхности случайности. Комбинация, выигрывающая у соседних на десятки процентов, почти всегда артефакт.
Четвёртое — реальные издержки в каждом прогоне. Оптимизация без спреда, комиссии и свопа находит параметры, оптимальные для несуществующих условий: обычно это высокочастотные схемы с множеством сделок, которые в реальности съедаются издержками. Задавать издержки нужно по спецификации своего счёта, а не по средним значениям, и делать это до подбора, а не после.
Пятое — критерий отбора. Максимальная доходность плохой ориентир: она достигается высоким риском. Практичнее оптимизировать по фактору восстановления или по ожиданию на сделку с ограничением на максимальную просадку. Такой критерий отбирает параметры, при которых стратегию реально можно исполнять, а не только показать в отчёте.
И шестое — фиксация результата. Сохраняйте set-файл, период, набор издержек и метрики каждого прогона, включая отклонённые. Через несколько месяцев это единственный способ понять, что уже проверялось, и не тестировать одно и то же по второму разу с другими выводами.
Чек-лист честной оптимизации
- Не больше трёх-четырёх параметров, каждый с объяснимым смыслом.
- Выборка разделена до начала подбора; проверочная часть не участвует в оптимизации.
- Сдвиг каждого параметра на шаг в обе стороны — результат меняется плавно.
- Спред, комиссия и своп заданы по спецификации вашего счёта.
- Критерий отбора — фактор восстановления или ожидание, а не максимальная доходность.
- Все прогоны сохранены вместе с параметрами и издержками.
И про регламент перенастройки, который следует из walk-forward. Если проверка показала, что параметры держатся квартал, пересчитывать их нужно раз в квартал по расписанию, а не после серии убытков. Перенастройка «по факту просадки» означает подгонку под последние неудачные сделки и почти всегда ухудшает результат.
И про соблазн оптимизировать после каждой убыточной серии: серия минусов является нормальной частью системы с положительным ожиданием, а перенастройка под неё превращает стратегию в описание последних неудач.
И фиксируйте регламент: какие параметры пересчитываются, с какой периодичностью и по какому критерию. Без записанного регламента перенастройка происходит стихийно и почти всегда после убытков.
Частые вопросы
Оптимизация — это вообще плохо?
Нет, честная оптимизация полезна. Плохо — «докручивать» до идеальной картинки, которая не воспроизводится на новых данных.
Что такое out-of-sample?
Это часть истории, которую вы не использовали при подборе параметров, — на ней проверяют, работает ли настройка вне «выученного» периода.
Сколько параметров — норма?
Чем меньше, тем устойчивее. Много параметров на короткой истории почти гарантируют переподгонку.
Как понять, что робот переоптимизирован?
Идеально на истории, но плохо на out-of-sample и на форварде; результат резко чувствителен к малейшему сдвигу параметров — сдвинули на шаг, и прибыль превратилась в убыток.
Материал носит образовательный характер и не является индивидуальной инвестиционной рекомендацией (не ИИР).
Материал носит информационный характер и не является индивидуальной инвестиционной рекомендацией. Редакционная политика