Многокритериальная оптимизация для ранжирования и отбора торговых систем

2e2c43f3737cea04d76cb4d077880a5c

Отбор торговых систем: как выбрать лучшие из произвольного количества имеющихся

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

Важно понимать, что результаты анализа эффективности и результативности торговых систем могут быть сложными и неоднозначными. Например, торговая система с высокой прибылью может иметь большую просадку, но также она может генерировать стабильный доход на протяжении длительного времени. Поэтому при выборе торговой системы важно учитывать весь набор характеристик и показателей. В этом и заключается проблематика, затрагиваемая в статье.

Постановка задачи

Итак, допустим, у нас есть некое множество торговых систем, и какие-то из них — лучше, а какие-то хуже. По совокупности метрик сложно определить, лучше или хуже та или иная система. У одной системы может быть высокая доходность, и одновременно с этим, высокая просадка и ниже фактор восстановления. У другой просадка минимальна, но и прибыль кажется весьма посредственной. И это лишь три метрики, а их, конечно, может быть рассчитано куда больше. Например:

  • соотношение приведённой к году прибыли на тесте и на проверке

  • доля использованного торгового времени от общего, например, доля дней, в которые совершались сделки, по отношению к общему числу торговых дней

  • доля времени торговой системы в рынке — время, в течение которого капитал был занят позицией по отношению к общему торговому рыночному времени

  • максимальная, средняя и минимальная длины сделки — в барах, минутах, часах или днях

  • среднее число сделок в единицу времени, например, в час или в день или в неделю

  • среднее число сделок в торговый день и среднее число сделок в календарный день

  • максимальная длина серии прибыльных сделок и то же для убыточных сделок

  • доходность, приведённая к году

  • доля комиссий в сделке, доля комиссий в итоговой прибыли, размер комиссии на пункт дохода

  • максимальная достигнутая реализованная прибыль

  • средняя прибыль в час, день, месяц

  • фактор восстановления

  • всевозможные MAE, MAPE, SMAPE, RMSE, MSPE и прочее

  • квадрат отклонений и квадрат отрицательных отклонений, а по аналогии -

  • коэффициент Шарпа и коэффициент Сортино

  • математическое ожидание

  • максимальная реализованная просадка, относительная реализованная просадка, максимальная нереализованная просадка

  • максимальная нереализованная потенциальная прибыль

  • число прибыльных / убыточных сделок, суммарная прибыль и убыток по прибыльным и убыточным сделкам

  • финансовый результат по длинным и коротким сделкам

  • корреляция между кривой доходности и рыночной ценой актива

  • бенчмарк прибыли / просадки для случая «купить и держать» для данного актива за тот же период в относительных единицах к соответствующим показателям самой системы

  • бенчмарк прибыли по оптимальному пути — максимальной теоретической возможной прибыли с учётом комиссий по данному активу

Пусть у вас есть матрица, где каждой торговой системе соответствует строка, а каждому из показателей выше — столбец. Хотелось бы ранжировать торговые системы каким-то образом, чтобы отобрать лучшие, но для ранга желательно иметь непрерывный диапазон значений, который можно уже разбить на квантили, квартили или использовать иные методики. А у нас тут набор разношёрстных метрик, и сортировка по нескольким из них одновременно ничего не даст.

История поисков

  1. Сначала я делал это вручную — буквально накладывая фильтр на примерно такую вот матрицу, которая описана выше, а используемая методика была «мне так кажется».

  2. Потом я автоматизировал это, но суть не изменилась, это было решение «наверное, это должно быть так», но уверенности не было.

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

  4. Теперь я хочу подойти к этому процессу с ещё более формальной точки зрения: по сути, это, похоже, и делала созданная мной нейронная сеть, а теперь будет математический метод.

Формулирование проблемы

Нам предстоит, используя множество критериев — метрик тестирования торговых систем — найти одну или некоторое подмножество лучших. Такие задачи являются задачами класса многокритериальной оптимизации. Об этом и пойдёт речь ниже. По сути, задача состоит в следующем: нам нужно рассчитать (или сконструировать) метрики идеальной торговой системы и найти расстояние до такой идеальной системы от всех прочих. Это расстояние и будет являться значением для отбора систем — неким значением, по которому можно сортировать системы или ранжировать их список.

Найденные решения

Итак, задавшись вопросом, какие для этого существуют инструменты, я накопал нижеизложенное.

Во-первых, классы методов:

  • методы, основанные на искусственном интеллекте, такие как нейронные сети, генетические алгоритмы, нечеткая логика и т.д. Эти методы позволяют создавать сложные и гибкие модели, которые способны обучаться на данных, выявлять закономерности и прогнозировать поведение рынка;

  • методы, основанные на оптимизации, такие как симплекс-метод, градиентный спуск, метод Ньютона и т.д. Эти методы позволяют находить оптимальные значения параметров стратегий, которые максимизируют или минимизируют заданную целевую функцию, такую как прибыль, риск, отношение Шарпа и т.д.

  • Методы, основанные на статистике, такие как регрессионный анализ, тестирование гипотез, анализ временных рядов и т.д. Эти методы позволяют проверять статистическую значимость и надежность стратегий, а также оценивать их риски и доходность.

А вот какие, в частности, методы, попались мне во время поисков (и показались применимыми к решению контекстной задачи):

  • одним из популярных методов многокритериального отбора торговых стратегий является метод 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 — полное соответствие (идеальное решение); можно и наоборот — развернуть этот континуум, как больше нравится;

  • ранжировать альтернативы по убыванию относительной близости и выбрать ту, которая имеет наибольшее значение, как наилучшую стратегию (или топ лучших).

Звучит сложновато, но на деле довольно простые формулы — суммы квадраты и не более того. Как вам идея?

Заключение

Наконец, ушат холодной воды: идеальное решение в алгоритмическом трейдинге — это такая стратегия, которая максимизирует прибыль и минимизирует риск и другие нежелательные факторы. Однако, в реальности такое решение может быть недостижимо или не существовать, поскольку существует множество неопределенностей и ограничений на рынке. Поэтому, вместо поиска идеального решения, целесообразнее искать наиболее приемлемое или оптимальное решение, которое удовлетворяет заданным критериям и ограничениям. Для этого можно использовать различные методы оптимизации, такие как симплекс-метод, градиентный спуск, метод Ньютона и т.д. Эти методы позволяют находить оптимальные значения параметров стратегий, которые максимизируют или минимизируют заданную целевую функцию, такую как прибыль, риск, отношение Шарпа и т.д.

Хорошо, когда у человека есть цель, она формализована, «у нас есть план», мы движемся в этом направлении и горим своей идеей. Это один из главных факторов, которые делают нас счастливыми :)

Habrahabr.ru прочитано 33926 раз