ГлавнаяСервисыКонтактыБлог

Разработка торгового алгоритма

В статье будет коротко разобран процесс разработки торгового алгоритма, от рождения идеи до запуска алгоритма в "бой".

Поиск идеи

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

Разработка

Программного обеспечения для подобных задач уйма, на любой вкус. Я пользуюсь TSLab. Что бы результаты тестирования алгоритма были более приближенные к реальности можно применить условие - пропускать открытие и закрытие сделок в первую минуту торговой сессии. Связано это с тем, что зачастую первая минута торговой сессии неликвидна. Необходимо установить комиссию, для RTS и SI желательно использовать относительную комиссию в размере 0,03%, для SBRF абсолютную комиссию в 3 пункта. Необходимо заложить в эту величину не только комиссию брокера и биржи, но и проскальзывание и спред. В зависимости от алгоритма проскальзывание будет разное, пробойные алгоритмы имеют высокое проскальзывание, сделки исполняющиеся по закрытию бара обладают меньшим проскальзыванием.

Оптимизация

Далее требуется оптимизировать параметры. На этом этапе я оптимизирую параметры на всех доступных исторических данных. Для пользователей TSLab будет полезно знать — перед оптимизацией выставить в свойствах скрипта "Начинать с (бар)" значение самого длинного параметра +1 После оптимизации стоит обратить внимание на пару характеристик:

Форвардный тест или слепое моделирование

Следующий этап самый трудоемкий, особенно пользователям TSLab приходится пользоваться офисным пакетом, благо в TSLab доступен экспорт данных. Walk forward analysis (WFA) — метод оценки эффективности. Метод разработан Робертом Пардо и детально описан в его книге. Метод заключается в оптимизации параметров в участке in sample (IS) и проверке этих параметров в слепой зоне out of sample (OOS). Проще говоря алгоритм оптимизируется на отрезке данных в которых намеренно исключаются последующие части. Затем результативность алгоритма тестируется с использованием полученных параметров на исключенных данных. Рекомендуется провести не менее десяти тестов, а окно OOS не должно превышать 20% от общего отрезка. При этом подход исключает возможность подгонки параметров под исторические данные т.к параметры определяются на основе прошлых данных, а не текущих. и проверяются в слепой зоне. Существует два метода проверки — фиксированное скользящее окно

images-6.jpg is 3 года, oos год

images-7.jpg 2.5 года, oos пол год

и постоянно увеличивающимся периодом is.

images-8.jpg oos год

images-8.jpg oos пол года

Четвертый метод показывает более благоприятные результаты. Я тестировал четыре алгоритма и сравнивал сумму: wfe (Ewfe), ratio drawdown (Erdd) и отношение: wfe-ratiodd (Erwd), Ewfe-Erwd и Ewfe-Erdd (R f-g)

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

Пример одного из алгоритмов. WFE 64.77, ratioDD 91.02

Как видим из примера выше алгоритм показывает прибыль на уровне 64% от оптимизируемого, это похоже на правду. Средний показатель просадки на уровне 91,02% тоже приемлем, но если взглянуть на максимальное значение вполне возможна ситуация когда реальная просадка может вдвое превосходит просадку на оптимизируемом отрезке.

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


Интересные материалы:
Подгонка и другие методы подбора параметров
На тему оптимизации