Разработка торгового алгоритма
В статье будет коротко разобран процесс разработки торгового алгоритма, от рождения идеи до запуска алгоритма в "бой".
Поиск идеи
Для начала необходима идея для алгоритма. В открытых источниках масса недооцененных идей, которые возможно эксплуатировать. В статье в качестве примера будем рассматривать среднесрочные алгоритмы (около 250 сделок в год)
Разработка
Программного обеспечения для подобных задач уйма, на любой вкус. Я пользуюсь TSLab. Что бы результаты тестирования алгоритма были более приближенные к реальности можно применить условие - пропускать открытие и закрытие сделок в первую минуту торговой сессии. Связано это с тем, что зачастую первая минута торговой сессии неликвидна. Необходимо установить комиссию, для RTS и SI желательно использовать относительную комиссию в размере 0,03%, для SBRF абсолютную комиссию в 3 пункта. Необходимо заложить в эту величину не только комиссию брокера и биржи, но и проскальзывание и спред. В зависимости от алгоритма проскальзывание будет разное, пробойные алгоритмы имеют высокое проскальзывание, сделки исполняющиеся по закрытию бара обладают меньшим проскальзыванием.
Оптимизация
Далее требуется оптимизировать параметры. На этом этапе я оптимизирую параметры на всех доступных исторических данных. Для пользователей TSLab будет полезно знать — перед оптимизацией выставить в свойствах скрипта "Начинать с (бар)" значение самого длинного параметра +1 После оптимизации стоит обратить внимание на пару характеристик:
- Количество сделок не меньше 1000. Такое количество сделок придает тесту статистическую надежность.
- Фактор восстановления больше 15. Показатель является отношением абсолютной прибыли к максимальной просадке. И показывает скорость выхода алгоритма из просадки.
- Отсутствие выбросов кривой. Случается так, что система во время оптимизации подстраивается под условия рынка и вся прибыльность алгоритма основывается на одном значительном движении рынка.
- Изменение параметров в диапазоне 20% не оказывает сильного влияния на общие результаты.
Форвардный тест или слепое моделирование
Следующий этап самый трудоемкий, особенно пользователям TSLab приходится пользоваться офисным пакетом, благо в TSLab доступен экспорт данных. Walk forward analysis (WFA) — метод оценки эффективности. Метод разработан Робертом Пардо и детально описан в его книге. Метод заключается в оптимизации параметров в участке in sample (IS) и проверке этих параметров в слепой зоне out of sample (OOS). Проще говоря алгоритм оптимизируется на отрезке данных в которых намеренно исключаются последующие части. Затем результативность алгоритма тестируется с использованием полученных параметров на исключенных данных. Рекомендуется провести не менее десяти тестов, а окно OOS не должно превышать 20% от общего отрезка. При этом подход исключает возможность подгонки параметров под исторические данные т.к параметры определяются на основе прошлых данных, а не текущих. и проверяются в слепой зоне. Существует два метода проверки — фиксированное скользящее окно
is 3 года, oos год
2.5 года, oos пол год
и постоянно увеличивающимся периодом is.
oos год
oos пол года
Четвертый метод показывает более благоприятные результаты. Я тестировал четыре алгоритма и сравнивал сумму: wfe (Ewfe), ratio drawdown (Erdd) и отношение: wfe-ratiodd (Erwd), Ewfe-Erwd и Ewfe-Erdd (R f-g)

Соглашусь с тем, что сам факт выбор метода проверки уже является подгонкой, но цель найти наиболее надежный метод без заглядывания в будущее. Метод вполне имеет право на жизнь. Наиболее важной характеристикой на этом этапе является:
- Walk forward efficiency (WFE, отношение среднегодовой прибыли oos и is) форвардный показатель эффективности выше 50%
- Большинство тестов показывают прибыль
- Средние значения Ratio drawdown ниже 100%
Пример одного из алгоритмов. WFE 64.77, ratioDD 91.02
Как видим из примера выше алгоритм показывает прибыль на уровне 64% от оптимизируемого, это похоже на правду. Средний показатель просадки на уровне 91,02% тоже приемлем, но если взглянуть на максимальное значение вполне возможна ситуация когда реальная просадка может вдвое превосходит просадку на оптимизируемом отрезке.
Весь выше разобранный процесс это не гарантия успеха, лишь способ прогнозирования будущих показателей алгоритма, причём не единственный способ.
Интересные материалы:
Подгонка и другие методы подбора параметров
На тему оптимизации