Фон

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

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

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

Шаг 1. Возьмите внутридневные данные и создайте независимые переменные.

*Транзакционные издержки не были включены в эти расчеты.

Первым шагом в этом процессе является защита данных, необходимых для модели, то есть я собрал все предыдущие цены на актив, который хотел использовать. Затем я выбрал следующие ETF для моделирования: SPY, QQQ, IWD, IWM, IWO и MDY. Оттуда я загрузил внутридневные данные (с 30-минутными интервалами) с TradeStation начиная с 2017 года, а затем загрузил данные в реальном времени в течение торгового дня. Используя исторические цены в качестве основы, а затем добавляя текущую торговую цену каждый день, я заложил основу для прогнозирования цены следующего периода.

Следующим шагом было определение задействованных независимых переменных. Я решил использовать технический анализ, а также прошлые цены в качестве своих предикторов… Это были индикаторы, которые я использовал: MACD, RSI, D1, D10, D20, FADiff, SADiff. Я использовал несколько других предикторов и объясню, что они означают:

Mean Average Convergence Divergence (MACD) и Индекс относительной силы (RSI) являются техническими осцилляторами, которые обычно используются для отслеживания движения цен в диапазоне. FADiff и SADiff – это разница между взвешенными скользящими средними и предыдущими ценами закрытия. FADiff — это быстрая разница, то есть она использует взвешенное скользящее среднее за девять дней, что меньше, чем то, что использует SADiff. D1, D10, D20 — движение доллара за один период, десять периодов и двадцать периодов соответственно. После расчета технических параметров я печатаю их в CSV-файл, который буду использовать на следующем шаге.

Шаг 2: Создайте входной файл с историческими функциями и изменениями цен

На следующем этапе я использую технические индикаторы для создания входного файла, который содержит все значения X и исторические изменения цен. Каждому из технических индикаторов я присваиваю дискретное значение -1, 0, 1 в зависимости от уровня индикатора. Например, если RSI ниже 30, этому периоду будет присвоено значение -1; между 30 и 70 ему будет присвоено значение 0; выше 70 ему будет присвоено значение 1. Это сделано для упрощения предсказания, и уровни могут быть созданы произвольно. Для индикаторов отслеживания моментума я использую стандартные отклонения для создания дискретных границ.

Шаг 3. Используйте XGBoost для создания модели с градиентным усилением.

После того, как у нас есть все данные для каждой ценной бумаги во входных файлах, которые содержат независимые переменные, мы можем начать использовать XGBoost для создания модели. Сначала мы хотим разделить данные на два разных набора:

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

Тестовый набор: этот набор будет использоваться для проверки точности модели.

В моей модели я создаю регрессию для каждого месяца, а затем использую самую последнюю модель для прогнозирования цен на следующие месяцы. Я запускаю XGBRegressor со следующими гиперпараметрами:

XGBRegressor(objective ='reg:squarederror',n_estimators=100, learning_rate=0.08, gamma=0, subsample=0.75, colsample_bytree=1, max_depth=7)

Эти гиперпараметры были определены и выбраны менеджером хедж-фонда с помощью поиска по сетке. После подбора регрессии она сохраняется в файле pickle для быстрого доступа в дальнейшем. Теперь для каждого месяца была создана модель скользящей регрессии, которая затем будет использоваться для последующих прогнозов.

Шаг 4: Предсказание направления цены

Теперь модель обучена на всех известных ценовых данных, и мы можем более точно прогнозировать будущее изменение цены с помощью функции прогнозирования XGBoost. Основы стратегии заключаются в том, чтобы покупать, когда модель говорит вам покупать, и продавать, когда она говорит вам продавать.

Шаг 5: Анализ точности модели и PnL

Наконец, мы можем эффективно проанализировать модель, чтобы увидеть, как она работает по сравнению с заданными тестами. Я рассчитал несколько показателей, чтобы посмотреть, как он будет работать в разных сценариях, а также как он будет работать с поправкой на риск. Очень важный критерий полезности модели — посмотреть, как она работает против стратегии длинного удержания S&P 500. Ниже я вставил анализ для SPY:

Это анализирует, как стратегия работала бы с сентября 2020 года по май 2022 года (не включая май). Raw представляет собой общее изменение цены в долларах за этот период. Signed_xgb представляет актив, покупаемый и продаваемый в соответствии с сигналами модели. Длинные и короткие позиции представляют собой только то, открывали ли вы длинную или короткую позицию при наличии сигнала на покупку или продажу. Вы бы использовали эти два только в том случае, если бы вы реализовали только длинную или короткую стратегию.

В столбцах Ежемесячно представлена ​​совокупная доходность за указанный месяц, а в столбцах Сводка представлена ​​среднегодовая доходность за указанные месяцы. Таким образом, совокупный доход SPY за этот период времени составил 83,92 доллара, а доход модели — 216,80 доллара. Это означает, что модель превосходит S&P, и стоимость увеличивается за счет коротких продаж.

В разделе Сводка у нас есть анализ риска, такой как коэффициенты sharpe и calmar, которые имеют первостепенное значение для определения риска, связанного с определенной ценной бумагой, и используются здесь, чтобы определить, как риск сравнивается с долгосрочным удержанием. стратегия. Существует также MDD, который представляет собой максимальную просадку. Глядя на коэффициент Шарпа, мы можем сделать вывод, что созданная модель привела к более низкому коэффициенту Шарпа, чем стратегия купи и держи для S&P. Похожий результат показан и в коэффициенте Calmar, потому что максимальная просадка модели намного меньше, чем необработанная доходность. Это означает, что модель лучше с поправкой на риск, чем просто удержание актива.

Есть несколько других интересных показателей для этой модели. Два интересных вывода: как часто модель предсказывает неверный сигнал на покупку/продажу и насколько прогнозируемые изменения коррелируют с фактическими. Вот результаты для SPY:

Здесь мы видим, что существует высокая корреляция между фактической и прогнозируемой ценой SPY. Еще одна вещь, которую следует отметить, это то, что модель примерно на 5% более вероятно ошибочно предскажет покупку, чем продажу.

Кроме того, полезно посмотреть на корреляцию между месячной доходностью модели и доходностью S&P. Мы хотим, чтобы низкая корреляция между этими двумя переменными компенсировала риск S&P. Как мы видим ниже, корреляция составляет ~ 0,5, что достаточно низко, чтобы сказать, что эти две переменные слабо коррелированы. Из-за слабой корреляции между доходностями это было бы хорошим активом для диверсификации вашего портфеля.

Еще одним полезным пониманием модели является важность функций. Ниже показана важность каждой функции для функции XGBRegressor:

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

Заключение

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

Если вы хотите обсудить этот проект или другие подобные, не стесняйтесь обращаться к нам. Спасибо за чтение.