bascomo
bascomo личный блог
31 июля 2023, 17:13

Как я использую ML в оценке статистических метрик Equity

Идея

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

Подход

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

Приблизительно так выглядит основной кусок кода. Всё, что до него — загрузка и подготовка данных, а после него — визуализация. Как видно из кода, используется KMeans и разбивает выборку на 5 классов.
Как я использую ML в оценке статистических метрик Equity

Результат

И вот что из этого получилось. Хорошо видно, что комбинация отдельных метрик чётко выделяет кластеры, а некоторые метрики больше мусорные и особо ничего не дают. Ещё видно, что некоторые метрики нелинейные — они сдвигают все классы в одну сторону, оставляя доминирующим на большей части своего интервала бесполезный класс. Из этого следует два вывода:
  • Отдельные метрики подходят только для того, чтобы границей отсечь заведомо неподходящие алгоритмы. Например, посмотрите на RSquare. То, что меньше 0,8, можно смело выкидывать, а лучше брать то, что больше 0,95.
  • Лучше пользоваться пересечением метрик, так как это лучше, чем метрики по отдельности, выделяет качественные алгоритмы.
  • И в целом, можно использовать ML для разбиения торговых алгоритмов на классы и торговать лучшими, не проводя часы за анализом графиков или таблиц с метриками. По крайней мере, если алгоритмов много, то это хороший способ сузить область поиска.

Как я использую ML в оценке статистических метрик Equity

Можно использовать и другие алгоритмы кластеризации, например
Как я использую ML в оценке статистических метрик Equity

И они дают схожие результаты:

Как я использую ML в оценке статистических метрик Equity

Ещё одна рабочая идея состоит в том, чтобы смотреть нормальное распределение значений той или иной метрики. Это помогает понять, куда она смещена, есть лив  ней доминанта и как лучше её использовать. Или же она вообще случайно разбросана.
Как я использую ML в оценке статистических метрик Equity

И ещё одна картинка.

Как я использую ML в оценке статистических метрик Equity
Глубоких выводов тут я не делаю, так как цель поста — показать, какой есть инструмент, как он работает и как его можно использовать.
12 Комментариев
  • CloseToAlgoTrading
    31 июля 2023, 17:28
    Голова чет не варит :), не совсем понятно как используете данные результаты? 

      • CloseToAlgoTrading
        31 июля 2023, 18:23
        bascomo, 
        Так а какой кластер в итоге получаем более перспективным?
        Вы задаете количество кластеров, получаете скажем 5 кластеров, а как потом выбрать лучшую систему?
        Не пробовали скажем dbscan, на посмотреть что он покажет… так то если задавать количество кластеров, то системы не попадающие никуда будут так же отнесены же к какому либо кластеру в итоге.

  • SergeyJu
    31 июля 2023, 18:09
    Чтобы применить алгоритм классификации к-средних необходимо и достаточно задать расстояния между элементами, которые мы хотим разбить на кластеры, и число кластеров.
    Элемент = стратегия, наверное. 
    Что именно является расстоянием? 
      • SergeyJu
        01 августа 2023, 08:50
        bascomo, эти 6 параметров секрет? 
        Вы их как-то нормализуете, или все отдаете на откуп стандартной программе? 
        Лично меня интересует вклад каждой системы в портфель. Оптимизирую портфель по отношению доходности к риску.
  • Василий Федорович
    31 июля 2023, 19:22
    Талантливо, но бесполезно. Цель нужна, а не просто изобретение.
    — Скажите, пожалуйста, куда мне отсюда идти?
    — А куда ты хочешь попасть? — ответил Кот.
    — Мне все равно — сказала Алиса.
    — Тогда все равно, куда и идти, — заметил Кот.
    — только бы попасть куда-нибудь, — пояснила Алиса.
    — Куда-нибудь ты обязательно попадешь, — сказал Кот. — Нужно только достаточно долго идти.—  Алиса в стране чудес (Льюис Кэрролл)
    • Sprite
      31 июля 2023, 19:28
      Василий Федорович, «Дзен-навигация»: выберите того, кто по вашему знает куда идёт и следуйте за ним. И вы попадете не туда куда хотите, а туда, куда вам нужно.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн