Отбор торговых систем: как выбрать лучшие из произвольного количества имеющихся
В статье пойдёт речь о механизме отбора или расчёте коэффициента для ранжирования пула торговых систем. Мы рассмотрим один из способов, используя который можно определить лучшие варианты.
Важно понимать, что результаты анализа эффективности и результативности торговых систем могут быть сложными и неоднозначными. Например, торговая система с высокой прибылью может иметь большую просадку, но также она может генерировать стабильный доход на протяжении длительного времени. Поэтому при выборе торговой системы важно учитывать весь набор характеристик и показателей. В этом и заключается проблематика, затрагиваемая в статье.
Постановка задачи
Итак, допустим, у нас есть некое множество торговых систем, и какие-то из них — лучше, а какие-то хуже. По совокупности метрик сложно определить, лучше или хуже та или иная система. У одной системы может быть высокая доходность, и одновременно с этим, высокая просадка и ниже фактор восстановления. У другой просадка минимальна, но и прибыль кажется весьма посредственной. И это лишь три метрики, а их, конечно, может быть рассчитано куда больше. Например:
соотношение приведённой к году прибыли на тесте и на проверке
доля использованного торгового времени от общего, например, доля дней, в которые совершались сделки, по отношению к общему числу торговых дней
доля времени торговой системы в рынке — время, в течение которого капитал был занят позицией по отношению к общему торговому рыночному времени
максимальная, средняя и минимальная длины сделки — в барах, минутах, часах или днях
среднее число сделок в единицу времени, например, в час или в день или в неделю
среднее число сделок в торговый день и среднее число сделок в календарный день
максимальная длина серии прибыльных сделок и то же для убыточных сделок
доходность, приведённая к году
доля комиссий в сделке, доля комиссий в итоговой прибыли, размер комиссии на пункт дохода
максимальная достигнутая реализованная прибыль
средняя прибыль в час, день, месяц
фактор восстановления
всевозможные MAE, MAPE, SMAPE, RMSE, MSPE и прочее
квадрат отклонений и квадрат отрицательных отклонений, а по аналогии -
коэффициент Шарпа и коэффициент Сортино
математическое ожидание
максимальная реализованная просадка, относительная реализованная просадка, максимальная нереализованная просадка
максимальная нереализованная потенциальная прибыль
число прибыльных / убыточных сделок, суммарная прибыль и убыток по прибыльным и убыточным сделкам
финансовый результат по длинным и коротким сделкам
корреляция между кривой доходности и рыночной ценой актива
бенчмарк прибыли / просадки для случая «купить и держать» для данного актива за тот же период в относительных единицах к соответствующим показателям самой системы
бенчмарк прибыли по оптимальному пути — максимальной теоретической возможной прибыли с учётом комиссий по данному активу
Пусть у вас есть матрица, где каждой торговой системе соответствует строка, а каждому из показателей выше — столбец. Хотелось бы ранжировать торговые системы каким-то образом, чтобы отобрать лучшие, но для ранга желательно иметь непрерывный диапазон значений, который можно уже разбить на квантили, квартили или использовать иные методики. А у нас тут набор разношёрстных метрик, и сортировка по нескольким из них одновременно ничего не даст.
История поисков
Сначала я делал это вручную — буквально накладывая фильтр на примерно такую вот матрицу, которая описана выше, а используемая методика была «мне так кажется».
Потом я автоматизировал это, но суть не изменилась, это было решение «наверное, это должно быть так», но уверенности не было.
Далее я привлёк на помощь регрессионную нейросеть, входом которой была эта нормализованная матрица, и результаты были довольно неплохими.
Теперь я хочу подойти к этому процессу с ещё более формальной точки зрения: по сути, это, похоже, и делала созданная мной нейронная сеть, а теперь будет математический метод.
Формулирование проблемы
Нам предстоит, используя множество критериев — метрик тестирования торговых систем — найти одну или некоторое подмножество лучших. Такие задачи являются задачами класса многокритериальной оптимизации. Об этом и пойдёт речь ниже. По сути, задача состоит в следующем: нам нужно рассчитать (или сконструировать) метрики идеальной торговой системы и найти расстояние до такой идеальной системы от всех прочих. Это расстояние и будет являться значением для отбора систем - неким значением, по которому можно сортировать системы или ранжировать их список.
Найденные решения
Итак, задавшись вопросом, какие для этого существуют инструменты, я накопал нижеизложенное.
Во-первых, классы методов:
методы, основанные на искусственном интеллекте, такие как нейронные сети, генетические алгоритмы, нечеткая логика и т.д. Эти методы позволяют создавать сложные и гибкие модели, которые способны обучаться на данных, выявлять закономерности и прогнозировать поведение рынка;
методы, основанные на оптимизации, такие как симплекс-метод, градиентный спуск, метод Ньютона и т.д. Эти методы позволяют находить оптимальные значения параметров стратегий, которые максимизируют или минимизируют заданную целевую функцию, такую как прибыль, риск, отношение Шарпа и т.д.
Методы, основанные на статистике, такие как регрессионный анализ, тестирование гипотез, анализ временных рядов и т.д. Эти методы позволяют проверять статистическую значимость и надежность стратегий, а также оценивать их риски и доходность.
А вот какие, в частности, методы, попались мне во время поисков (и показались применимыми к решению контекстной задачи):
одним из популярных методов многокритериального отбора торговых стратегий является метод ELECTRE (Elimination Et Choix Traduisant la REalité), который основан на попарном сравнении стратегий и исключении тех, которые доминируются другими по одному или нескольким критериям. Данный метод позволяет учитывать не только количественные, но и качественные критерии, а также веса критериев и пороги принятия решений;
другим распространенным методом многокритериального отбора торговых стратегий является метод TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution), который основан на вычислении расстояний между стратегиями и идеальными точками, соответствующими максимальному и минимальному значению каждого критерия. Данный метод позволяет определить наилучшую и наихудшую стратегию, а также рассчитать относительную близость каждой стратегии к идеальному решению;
еще одним интересным методом многокритериального отбора торговых стратегий является метод ML-LDM (Multi-Lingual Linguistic Decision Making), который основан на использовании лингвистических переменных для описания критериев и оценок стратегий. Данный метод позволяет учитывать неопределенность и нечеткость данных, а также различные области экспертизы и предпочтения участников процесса принятия решений;
следующим будет метод AHP (Analytic Hierarchy Process), который основан на построении иерархии критериев и альтернатив, а также на определении приоритетов с помощью попарного сравнения элементов иерархии;
метод PROMETHEE (Preference Ranking Organization METHod for Enrichment Evaluations), который основан на вычислении степени предпочтения одной альтернативы над другой по каждому критерию, а также на агрегации этих степеней с учетом весов критериев;
Метод VIKOR (VIseKriterijumska Optimizacija I Kompromisno Resenje), который основан на определении наилучшей и наихудшей альтернативы по каждому критерию, а также на вычислении расстояний между альтернативами и этими опорными точками.
И это далеко не всё.
Выбранное решение
Мне приглянулся метод TOPSIS, который был упомянут выше. Его я и буду использовать. Графически решение задачи можно представить, в каком-то приближении в виде диаграммы типа «радар», где на окружности нанесены метрики торговых систем, а по осям от них к центру — значения этих метрик. А по сути — мы будем искать сначала идеальную систему (которой нет), можно назвать её идеальной точкой или даже утопической торговой системой. А потом расстояния до неё от всех прочих.
Относительная близость алгоритмической или любой другой торговой стратегии к идеальному решению — это мера, которая показывает, насколько данная стратегия близка к лучшей возможной стратегии по всем критериям. Одним из способов рассчитать относительную близость является использование метода TOPSIS.
Вот последовательность шагов решения проблемы задачи статьи:
сформировать матрицу решений, в которой строки соответствуют альтернативным стратегиям, а столбцы — критериям оценки (например, прибыль, риск, стабильность — как было показано выше);
нормализовать матрицу решений, чтобы привести все значения к одному масштабу и устранить влияние единиц измерения (помним, что у нас где-то доли, где-то проценты, где-то количества и суммы);
умножить нормализованную матрицу на вектор весов критериев, чтобы учесть их относительную важность. Это самое слабое место — нужно определить вес каждого критерия, но тут можно пойти итерационно, корректируя их в процессе исследования;
определить идеальное решение как вектор, состоящий из лучших значений по каждому критерию (метрике), и анти-идеальное решение как вектор, состоящий из худших значений по каждой метрике. Это будет наше пространство возможностей;
вычислить евклидово расстояние между каждой альтернативой и идеальным решением, а также между каждой альтернативой и анти-идеальным решением. Можно, кстати, использовать не обязательно евклидово пространство, а, например, чебышевское, манхэттенское или другое, но это усложнит задачу. Хотя для некоррелированных метрик они бы подошли лучше;
расстояние рассчитать просто: как сумму квадратов разниц между идеальным значением каждой метрики и одним из существующих. Таким образом, получаем некоторое число, которое характеризует расстояние данного вектора по отношению к идеальному решению (вектору). Ещё раз: считаем разницу между идеальным значением метрики и значением этой же метрики для данной торговой системы, возводим в квадрат, все квадраты суммируем;
рассчитать относительную близость каждой альтернативы к идеальному решению как отношение расстояния до анти-идеального решения к сумме расстояний до идеального и анти-идеального решений. Это значение будет лежать в интервале от 0 до 1, где 0 означает полное несоответствие идеальному решению (анти-идеальное решение), а 1 — полное соответствие (идеальное решение); можно и наоборот - развернуть этот континуум, как больше нравится;
ранжировать альтернативы по убыванию относительной близости и выбрать ту, которая имеет наибольшее значение, как наилучшую стратегию (или топ лучших).
Звучит сложновато, но на деле довольно простые формулы — суммы квадраты и не более того. Как вам идея?
Заключение
Наконец, ушат холодной воды: идеальное решение в алгоритмическом трейдинге — это такая стратегия, которая максимизирует прибыль и минимизирует риск и другие нежелательные факторы. Однако, в реальности такое решение может быть недостижимо или не существовать, поскольку существует множество неопределенностей и ограничений на рынке. Поэтому, вместо поиска идеального решения, целесообразнее искать наиболее приемлемое или оптимальное решение, которое удовлетворяет заданным критериям и ограничениям. Для этого можно использовать различные методы оптимизации, такие как симплекс-метод, градиентный спуск, метод Ньютона и т.д. Эти методы позволяют находить оптимальные значения параметров стратегий, которые максимизируют или минимизируют заданную целевую функцию, такую как прибыль, риск, отношение Шарпа и т.д.
Хорошо, когда у человека есть цель, она формализована, «у нас есть план», мы движемся в этом направлении и горим своей идеей. Это один из главных факторов, которые делают нас счастливыми :)