Ріс. 1. Оптимізація багатовимірного простору алгоритмів торговельних стратегій.
Оптимізація торгових стратегій
У процесі алгоритмічної торгівлі постійно виникає необхідність налаштування параметрів алгоритмів торгових стратегій. Поєднання всіх можливих параметрів перетворюється на великий багатовимірний простір варіантів стратегій. Щоб отримати найприбутковіші та найстабільніші стратегії потрібно дослідити цей простір і підібрати оптимальні параметри для торгівлі.
Найкращий спосіб дослідження будь-якої безлічі - це повний перебір всіх його елементів Brute Force. Однак враховуючи колосальні обсяги даних з якими доводиться стикатися при оптимізації, як правило, виявляється просто неможливо провести подібне дослідження повним перебором. Доводиться застосовувати різні аналітичні алгоритми, які дозволяють скоротити фактичний обсяг досліджень у процесі пошуку екстремумів.
Більшість таких алгоритмів добре відомі: метод Монте-Карло, метод градієнтного спуску, метод імітації випалу, еволюційні алгоритми тощо. При цьому існують різні модифікації даних алгоритмів оптимізації. В алготрейдингу, як правило, зустрічаються реалізації генетичних алгоритмів і Монте-Карло. Так чи інакше всі ці алгоритми використовують «магію випадкових чисел» або науково кажучи нелінійну стохастичну оптимізацію.
Класична проблема стохастичних алгоритмів оптимізації полягає в тому, що при не великих обсягах фактичних досліджень і малих вибірках вони не репрезентативні. Наприклад, Монте-Карло не ефективний в багатоекстремальному просторі, він акцентує дослідження на глобальному екстремумі упускаючи з виду локальні, але не менш цікаві екстремуми. Алгоритм не ставить перед собою таких завдань, йому просто потрібно знайти найприбутковішу стратегію. Генетичний алгоритм також може піти не вдалою гілкою мутацій і зупинитися на якомусь локальному екстремумі тощо.
Все тому, що даним алгоритмам оптимізації на початкових етапах доводиться приймати рішення на обмеженому обсязі даних у ще не вивченому просторі і з дослідження можуть легко випасти важливі області. Щоб цього уникнути потрібно збільшувати вибірки даних і час дослідження, а в нашому випадку час на вагу золота. Потрібно при мінімальних витратах часу максимально детально досліджувати екстремуми простору. При цьому в швидко мінливих умовах біржової торгівлі важливо приділяти увагу не тільки прибутковим, але і стабільним параметрам торгових стратегій. Під стабільними розуміються параметри формуючі кластери зі схожими результатами. Прибуткові стратегії, що знаходяться поза кластерів, можуть виявитися не стабільними і призвести до серйозних збитків. У свою чергу стратегія з кластеру в меншій мірі схильна до змін на ринку.
Метод стохастичної кластерної оптимізації
Враховуючи особливості оптимізації біржових стратегій був розроблений гібридний алгоритм (див. минулу статтю) у якого виявився один приємний побічний ефект - він успішно виділяв і досліджував кластери. Я дав назву отриманому алгоритму - «Метод стохастичної кластерної оптимізації».
Процес дослідження тому алгоритму проходить у два етапи:
- Дослідження простору стратегій з видаленням збиткових і схильних до ризику областей
- Докладне дослідження екстремумів і кластерів простору
Етап 1. Дослідження простору стратегій з видаленням збиткових і схильних до ризику областей.
Щоб позбутися невизначеності при нестачі даних на початкових етапах дослідження алгоритм не ставить завдання пошуку прибуткових стратегій, а навпаки, шукає найзбитковіші і видаляє їх з простору разом з прикордонними з ними областями з потенційно високими ризиками збитків.
Робота ведеться в такому порядку:
- Формується багатовимірний простір з усіх можливих параметрів торговельної стратегії.
- З простору випадково вибираються стратегії і тестуються на історичних даних з зазначеними параметрами.
- За результатами тестування навколо найбільш збиткових стратегій видаляються прикордонні мікрообласті. Тим самим зменшується простір дослідження і робиться акцент на більш прибуткові і стабільні області в подальших ітераціях.
- Ітерації тестування проводяться до тих пір, поки простір стратегій не буде досліджено в потрібній мірі
На Ріс. 2 видно, як дослідження зміщується в бік екстремумів при цьому ризик упустити маленькі кластери з можливо хорошими і стабільними параметрами мінімальний.
Ріс. 2. Перший етап алгоритму «Stochastic Cluster Optimization» - дослідження простору стратегій.
Етап 2. Докладне дослідження кластерів і екстремумів.
Після першого етапу дослідження стають добре види екстремуми. Однак, в силу особливостей алгоритму (вирізається безліч мікрообластей) простір виходить «рваним» і деякі екстремуми можуть бути досліджені не дуже докладно. Щоб повністю вивчити всі цікаві кластери алгоритм оптимізації починає процес дослідження в точності навпаки. Для цього вибираються всі кращі стратегії і навколо них додатково виділяються мікрообласті. Якщо в цих областях виявляються ще не досліджені стратегії, то вони додатково тестуються (див. Рис. 3).
Ріс. 3. Другий етап алгоритму «Stochastic Cluster Optimization» - докладне дослідження екстремумів.
В результаті після роботи алгоритму досліджуються всі цікаві нам області простору і детально тестуються кластери з прибутковими стратегіями. При цьому фактичний обсяг дослідження, як правило, становить не більше 25-50% від загального обсягу простору варіантів стратегій (див. Рис. 4).
Ріс. 4. Швидкість дослідження алгоритму «Stochastic Cluster Optimization» (ліворуч) в 2-4 рази вище швидкості алгоритму «Brute Force» (праворуч).
Walk Forward оптимізація
Здавалося б оптимізували параметри і можна починати торгувати. Однак на цьому процес вичерпування ще не завершується. Процес оптимізації схильний до ризику «підгонки» або переоптимізації параметрів під використовувані в процесі історичні дані, тому потрібно додатково перевірити отримані результати. Для цього використовується метод Walk Forward. Суть методу полягає в тому, що параметри стратегій тестуються на історичних даних відмінних від тих, які використовувалися в процесі оптимізації.
Для цього весь діапазон історичних даних розбивається на вибірки, що складаються з наборів:
- IS («In Sample») - вибірка, яка використовується для оптимізації
- OOS («Out Of Sample») - вибірка, яка використовується для тестування результатів оптимізації
Причому діапазони вибірок формуються таким чином, щоб дані OOS слідували послідовно один за одним (див. Рис. 5).
Ріс. 5. Схема Walk Forward оптимізації.
Для зменшення обсягів дослідження на етапах перевірки результатів, можна після оптимізації відразу відфільтрувати стратегії з поганими показниками, тим самим скорочуючи загальний час тестування. У результаті такої перевірки ми отримаємо об'єктивні параметри торгових стратегій, захищені від переоптимізації (див. рис. 6 і Ріс. 7).
Ріс. 6. Результати оптимізації на даних «In Sample».
Ріс. 7. Перевірка результатів оптимізації на даних «Out Of Sample».
Аналіз результатів
Як правило після перевірки за методом Walk Forward велика частина торгових стратегій виглядає вже не так привабливо, як після оптимізації. В ідеальному варіанті стратегії повинні підтвердити свої статистичні показники, а екстремуми і кластери зберегти свою форму і положення в просторі.
Для комфортного аналізу отриманих результатів я візуалізував багатовимірний простір стратегій за кожним параметром у форматі теплової карти (див. Рис. 8). За картою візуально оцінюються форма та розміри кластерів, положення екстремумів, перевіряється вплив параметрів на результативність стратегії, оцінюються зміни після перевірки на переоптимізацію тощо.
Ріс. 8. Приклад перерізу простору за оптимізованими параметрами та цільовою функцією.
Для комплексної оцінки результатів Walk Forward оптимізації будується матриця з усіма кроками і параметрами, що пройшли фільтрацію. Зеленим кольором виділяються кроки, на яких параметри підтвердили свої показники і червоним, відповідно, якщо не підтвердили. Параметри, що показували себе добре на великій кількості кроків можна вважати більш придатними для торгівлі (див. Рис. 9).
Ріс. 9. Матриця Walk Forward з усіма результатами провіки на даних OOS.
У разі необхідності отримані результати можна експортувати в сторонні системи аналізу для більш детального дослідження. Наприклад, у R, Excel або Mathlab (див. Рис. 10).
Ріс. 10. Експорт результатів оптимізації в Excel.
Щоб остаточно переконатися в правильності виборанних параметрів проводяться детальні тести стратегій, оцінюється плавність кривої прибутковості, виводяться заявки на графік і вивчається лог торгових угод (див. Рис. 11).
Ріс. 11. Докладний аналіз параметрів торгової стратегії.
Ув'язнення
Після оптимізації і всіх перевірок у нас залишаться стратегії потенційно придатні до реальної торгівлі на Біржі.
Нарешті ми всі перевірили, напевно, вже можна починати торгувати? Насправді ми тільки на півдорозі, ще рано відправляти торгові алгоритми в бій. Далі належить:
- Перевірити стратегії на «живих» даних з Біржі для підтвердження показників, отриманих під час тестування.
- Сформувати портфель з торгових стратегій для диверсифікації ризиків. До речі, його теж потрібно оптимізувати.
- У процесі реальної торгівлі періодично зводити отримані результати з результатами тестів для коригування налаштувань тестера-оптимізатора.
Але про це, напевно, в інший раз.
Всім вдалої торгівлі!