Машинное обучение
Женщина с книгой. Пабло Пикассо , 1932
Идея
«Изучай правила как профессионал, чтобы ты мог нарушать их как художник» — Пабло Пикассо.

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

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

  • Эта статья больше рассчитана на продвинутых пользователей, людей с опытом в машинном обучении. Если бы были предоставлены все детали, которые понадобятся новичку для ее воспроизведения, эта статья могла бы оказаться в 10 раз больше.
  • Поскольку он предназначен для более продвинутых пользователей, мы уверены, что они поймут весь пошаговый процесс и будут знать, как заполнить пробелы.
  • Торговля идет по этой модели. Одна вещь, которую мы узнали от профессионалов, заключается в том, что вы не делитесь всеми подробностями систем, которыми вы фактически торгуете.
January 31, 2025
Возможно ли получить более 40% годовой доходности за последние 10 лет, торгуя моделью возврата к среднему на основе машинного обучения?
Несколько лучших книг по машинному обучению
Модель МО
На данный момент мы продемонстрировали несколько прибыльных систем возврата к среднему, которые состоят из:

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

Например, мы можем определить индикатор возврата к среднему (индикатор вероятности Quantitativo, или QPI) и настроили системы, которые будут входить в сделки, когда акция из S&P 500 опустится ниже 15. Затем система будет выходить, когда ее цена закроется выше вчерашнего максимума. Такая система работает хорошо.

Эта система будет совершать покупки в 100% случаев срабатывания входных сигналов.

Но что, если бы мы могли обучить модель машинного обучения предсказывать вероятность отскока акций? Вместо того, чтобы покупать 100% времени, модель будет смотреть на некоторые характеристики акций (QPI для разных окон, RSI для разных окон, скорость изменения для разных окон и т. д.), а затем оценивать вероятность отскока. Затем, на основе этой оценочной вероятности, система будет решать, какими акциями торговать.

Теперь опишем, как создать такую модель за 3 шага:
  1. Набор данных и функции;
  2. Избранный алгоритм;
  3. Обучение процесс.
Мы используем данные Norgate, отличный набор данных без ошибок выживаемости. Для сбора точек данных остановился на Russell 3000 (текущей и прошлой).
Для характеристик я использовал:

  • Темпы изменения для разных периодов (краткосрочные, среднесрочные и долгосрочные, до года);
  • RSI для другого графика;
  • QPI для другого графика;
  • IBS, нормализованный ATR;
  • Расстояние цены закрытия до 200-дневной простой скользящей средней;
  • Оборот;
  • Показатель Херста.

Предварительная обработка (крайне важная):

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

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

Для​ цели:

  • В качестве цели мы устанавливаем 1, если акции отскочат в течение 5 дней (положительная доходность), и 0 в противном случае (дальнейшая отрицательная доходность).

Получение всех акций Russell 3000 с 1998 года по сегодняшний день дает более 17 миллионов точек для анализа нашего набора данных.

Фильтрация только тех точек, которые отклоняются от среднего значения выше определенного порога (например, QPI ниже 15), сократит набор данных примерно до 1,3 миллиона точек. Также важно отфильтровать дешевые акции (исключить все записи, когда цены закрытия падают ниже $1), что приводит нас к 1,2 миллионам точек данных.
В итоге получилось 16 признаков, то есть матрица из 1,2 миллиона строк и 17 столбцов для обучения нашей модели.
Набор данных и функции
Наконец, в этой статье мы собираемся нарушить некоторые правила. Многие люди, включая профессионалов, обычно советуют «сохранять все как можно более простым». Это, как правило, хороший совет, который некоторые люди считают правилом, которое никогда не следует нарушать. Однако, поскольку мы собираемся использовать более сложную технику, мы оставим область «настолько просто, насколько это возможно».
Выбранный алгоритм
Сформулируем эту проблему как проблему бинарной классификации. Обученная модель попытается предсказать, вернется ли акция к среднему значению (1) или нет (0).

Существует несколько возможных алгоритмов. Выберем XGBoost , Extreme Gradient Boosting. Gradient Boosting — это метод машинного обучения, который строит модели последовательно, при этом каждая новая модель фокусируется на исправлении ошибок, допущенных предыдущими. Она работает путем объединения сильных сторон слабых моделей (часто деревьев решений) для создания более сильной и точной модели.

Благодаря своей производительности и универсальности XGBoost стал популярным инструментом для специалистов МО, особенно в конкурентном машинном обучении. Для получения более подробной информации об алгоритме, пожалуйста, ознакомьтесь с документацией XGBoost.
Для обучения модели мы будем использовать метод скользящего окна с 15-летним ретроспективным анализом, переобучая модель в начале каждого года:

  • Модель 2014 года: обучена на данных с 1999 по 2013 год;
  • Модель 2015 года: обучена на данных с 2000 по 2014 год;
  • Модель 2016 года: обучена на данных с 2001 по 2015 год;
  • Модель 2017 года: обучена на данных с 2002 по 2016 год;
  • Модель 2018 года: обучена на данных с 2003 по 2017 год;
  • Модель 2019 года: обучена на данных с 2004 по 2018 год;
  • Модель 2020 года: обучена на данных с 2005 по 2019 год;
  • Модель 2021 года: обучена на данных с 2006 по 2020 год;
  • Модель 2022 года: обучена на данных с 2007 по 2021 год;
  • Модель 2023 года: обучена на данных с 2008 по 2022 год;
  • Модель 2024 года: обучена на данных с 2009 по 2023 год.

Книга Advances in Financial Machine Learning 1st Edition Маркоса Лопеса де Прадо — отличное чтение. Она охватывает все детали, связанные с тремя шагами, которые только что описали (и многое другое).
Обучение процесс
Статистика покупки всех событий, когда модель говорит, что вероятность отскока акций выше 50% и удержания в течение 5 дней
После обучения модели первый вопрос, на который мы хотим ответить: в чем преимущество использования такой модели?
Мы видим положительную ожидаемую доходность:

  • Мы можем ожидать +0,7% доходности/торговли;
  • Коэффициент выигрыша составляет 54%;
  • Коэффициент выплат положительный: ожидаемая доходность по выигрышным сделкам составляет +6,3% по сравнению с -5,9% по убыточным сделкам.

Но лучше ли эта модель, чем простое правило покупки акций всякий раз, когда QPI падает ниже 15 (как в нашей предыдущей статье)? Давайте проверим статистику и сравним:
Ожидаемая доходность довольно близка.

Проверяя P-значение, мы находим 0,062 , что выше 0,05 . Другими словами, средние значения двух распределений доходности существенно НЕ различаются . Таким образом, у нас нет преимущества. Используя модель как есть, лучше придерживаться простых правил.
Статистика покупки всех событий, когда цена акций падает, их QP падает ниже 15, и удержание в течение 5 дней
Преимущество
Статистика покупки всех событий, когда модель говорит, что вероятность отскока акций выше 60% и удержания в течение 5 дней
Прежде чем сдаваться, давайте попробуем следующее изменение. Модель, которую мы обучили, выводит вероятность отскока акций. Мы ищем преимущество в покупке всех акций всякий раз, когда модель говорит нам, что вероятность отскока выше 50%.

Что если мы будем искать более высокие вероятности, например 60%? Это означает, что мы будем действовать только тогда, когда модель «более уверена» в том, что торговля означает возврат. Давайте посмотрим статистику для более высокого порога вероятности (60%):
Ого! Это значительное улучшение:

  • Ожидаемая доходность/торговля сейчас составляет +1,6% по сравнению с предыдущим значением +0,7% (для порога 50%);
  • Коэффициент выигрыша также вырос и теперь составляет 56%;
  • Коэффициент выплат также стал лучше;
  • Единственным недостатком является количество событий: как и ожидалось, при более низком пороге вероятности (50%) мы получили бы больше возможностей для торговли (более 450 тыс.); теперь, при более высоком пороге (60%), мы получаем около 1/4 возможностей (94 тыс.).

Самое главное, что P-значение теперь значительно ниже 0,05: средние значения двух распределений существенно различаются, поэтому у нас есть преимущество.
Изменение порога вероятности
Кривая капитала, кривая просадки и годовая доходность для первого эксперимента
Сводная статистика бэктеста
Сводка по тестируемым сделкам
Стратегия, по которой мы будем торговать, проста. При открытии каждой торговой сессии:

  • Мы разделим наш капитал на 10 слотов и купим акции, чей 3-дневный QPI предыдущего дня закрылся ниже 15, а обученная нами модель выводит вероятность отскока выше 60%;
  • У нас не будет фильтра режима, поскольку мы включили функцию, которая учитывает расстояние между ценой закрытия и 200-дневной простой скользящей средней;
  • Во вселенной имеется более 10 акций, по которым сработал сигнал на вход, мы отсортируем их по вероятности отскока и отдадим приоритет наиболее вероятным движениям;
  • В любой момент времени мы будем удерживать максимум 10 позиций.

Чтобы гарантировать, что мы торгуем только ликвидными акциями:

  • Мы не будем торговать дешевыми акциями (цена закрытия которых ниже 1 доллара);
  • Мы будем торговать акциями только в том случае, если выделенный для торговли капитал не превысит 5% от медианного среднего значения цены акций за последние 3 месяца с рассматриваемого дня
Это не особо хорошие результаты. Годовая доходность лишь немного лучше эталона, а максимальная просадка выше. Коэффициент Шарпа едва лучше.

Как мы можем это улучшить?
Чтобы получить исходный уровень, начнем с торговли только компонентами индекса S&P 500 (текущими и прошлыми, без смещения выбора):
Стратегия
Эксперименты
Кривая капитала, кривая просадки и годовая доходность для второго эксперимента
Сводная статистика бэктеста
Сводка по тестируемым сделкам
Первое улучшение — это торговля всей вселенной, то есть всеми акциями Russell 3000, которые соответствуют нашим ограничениям ликвидности. Вот результаты:
Результаты намного лучше:

  • Годовая доходность теперь превышает 30% против 11% у S&P 500;
  • Коэффициент Шарпа сейчас составляет 0,92 против 0,69 эталонного значения;
  • Однако максимальная просадка составляет 55% по сравнении с эталонным 34%;
  • Статистика торговли хорошая: средняя доходность на сделку составляет +0,76%, процент выигрышей 63,5%, а коэффициент выплат (не особо хороший) — 0,73.

Еще одно интересное наблюдение заключается в том, что все годы были положительными. Однако максимальная просадка более 50% была бы слишком большой для большинства трейдеров. Что мы можем сделать, чтобы попытаться улучшить это?
Торговля всей вселенной
Кривая капитала, кривая просадки и годовая доходность для финального эксперимента
Сводная статистика бэктеста
Сводка по тестируемым сделкам
Обычно стоп-лосс-ордера не работают в стратегии возврата к среднему. Однако, поскольку мы используем инновационный индикатор для измерения того, насколько сильно цены отклоняются от среднего, давайте попробуем их, чтобы улучшить результаты.

На самом деле, мы попробуем объединить несколько идей для ограничения потерь:
  • Стоп-лоссы: на 5% ниже цены входа;
  • Ограничение по времени: если сигнал выхода или стоп-лосс не сработали, мы выйдем из сделки через 6 дней, несмотря ни на что.

Вот результаты:
Эти результаты неплохие! Основные моменты:

  • Годовая доходность достигает 45,6%, что в 4 раза превышает базовый показатель;
  • Коэффициент Шарпа сейчас составляет 1,33, что почти вдвое превышает показатель S&P 500;
  • Однако, максимальная просадка остается довольно высокой и составляет 50%;
  • Внедрение стоп-лосса и ограничения по времени снизило процент выигрышей до 60%;
  • Однако ожидаемая доходность/торговля осталась примерно той же и составила +0,73%;
  • Но самое главное, коэффициент выигрыша улучшился с 0,73 до 0,86.

Давайте посмотрим на ежемесячную и годовую доходность:
Тестирование стоп-лосс ордеров
Ежемесячные и годовые доходы
Если бы мы торговали по этой стратегии с 2014 года:

  • У нас были бы только положительные годы, без периодов спада;
  • Мы бы увидели 64% положительных месяцев, с лучшим показателем +31,1% (ноябрь 20 г.);
  • Мы бы увидели 36% отрицательных месяцев, с худшим показателем -14,5% (февраль 20 г., COVID);
  • Самый продолжительная положительная полоса составила бы 9 месяцев, с октября 2022 года по июнь 2023 года;
  • Самая длительная негативная полоса длилась 4 месяца , с июня по сентябрь 2015 года.
Влияние торговля расходы
Предположение о 2 базисных пунктах для проскальзывания + торговые издержки может больше не выполняться сейчас, когда мы торгуем акциями за пределами того, что присутствует в S&P 500 или NASDAQ-100. Итак, давайте посмотрим, как различные уровни торговых издержек влияют на результаты:
Применение методов машинного обучения в торговых стратегиях открывает возможности для создания более сложных и точных моделей. Перспективы дальнейшего развития включают:

  • Обучение модели только распознавать закономерности падения цен и прогнозировать вероятность возврата к восходящему среднему значению, поэтому естественным следующим шагом будет обучение модели для использования на коротком отрезке;
  • В настоящее время система распределяет капитал по всем возможностям равномерно, не принимая во внимание вероятность возврата к среднему значению; поэтому еще одной областью улучшения могла бы стать корректировка позиций в соответствии с вероятностным выводом модели;
  • За исключением COVID, все сокращения составляют около 20% или ниже; тем не менее, мы могли бы попытаться добавить режимный фильтр, чтобы избежать подобных событий.
Торговые издержки
Заключительные мысли