В начале 2022 года я участвовал в соревнованиях IAQF с товарищами по команде. Здесь я кратко представлю нашу идею решения проблемы. Наша задача — прогнозировать состояния фондового рынка (бычье, медвежье, статическое) по данным индекса Russell 3000 (2003–2021) и соответствующим образом реализовывать торговые стратегии. Эффективность нашей торговой стратегии измеряется сравнением со стратегией «купи и держи». В части 1 представлена ​​основная идея нашей исследовательской работы. Во второй части я объясню часть кода, предоставленную мной. В последней части будут обсуждаться некоторые результаты и выводы статьи.

  1. Обзор исследовательской работы

Мы разделили наше исследование на три части: обозначить состояния, построить модели, реализовать торговые стратегии. При маркировке состояний мы использовали три разных метода. Первый — наивный подход, мы просто рассчитываем изменение доходности и устанавливаем контрольный показатель в 20%, при этом изменение выше 20% считается бычьим, ниже — медвежьим, а при статике — статичным. Второй заключается в объединении различных технических индикаторов, в частности тренда и моментума, а также индикаторов моментума и волатильности. Третий заключается в использовании моделей машинного обучения без присмотра, т. е. скрытой модели Маркова и модели смеси Гаусса. При возврате входных данных HMM и GMM могут автоматически создавать три целевых состояния. Оказалось, что неконтролируемые модели дали наиболее удовлетворительные результаты. Рисунок 1 иллюстрирует сводку по методам маркировки.

На этапе моделирования мы выбрали шесть моделей, каждая из которых лучше подходит для решения задач классификации многомерных финансовых временных рядов. Во-первых, это контролируемые модели: Random Forest (RF) и XGBoost. Во-вторых, неконтролируемые модели: HMM и GMM. В-третьих, нейронная сеть: LSTM и MLP. Зависимые переменные — это помеченные утверждения, определенные ранее. Независимыми переменными являются технические индикаторы, экономические индикаторы и ценовые данные Russell 3000. Поскольку в каждой категории есть различные технические индикаторы, мы также провели отбор функций на основе их важности с помощью RF.

Надежность прогноза оценивается как измерением модели, так и измерением торговли. Точность модели измеряется оценкой F1 и другими оценочными показателями. Торговая стратегия измеряется PnL, а также различными показателями прибыльности и волатильности, такими как коэффициент Шарпа и максимальная просадка. Наша торговая стратегия следующая: при прогнозируемом бычьем рынке мы закрываем предыдущий ордер, если мы в настоящее время держим ордер на продажу, или создаем ордер на покупку 1 единицы, если нет. Если у нас уже есть ордер на покупку, мы проверяем, прошло ли ровно 5 дней с момента исполнения этого ордера на покупку, что будет для нас признаком добавления еще одной единицы для получения большей прибыли. И если с момента исполнения ордера на покупку прошло 15 дней, мы бы закрыли ордер, чтобы предотвратить убытки. И наоборот, для государственного прогноза медвежьего рынка. Если прогноз состояния рынка статичен, мы сохраняем нашу текущую позицию и не делаем дополнительных движений. Торговая стратегия тестируется на исторических данных с использованием библиотеки backtrader.

Результаты показали, что XGBoost вместе с маркировкой состояний, полученных из неконтролируемых HMM и GMM, больше всего превзошел базовую стратегию «купи и держи». Это улучшило PnL на 183,32%. В конце концов, наша окончательная модель представляет собой комбинацию меток HMM и алгоритма прогнозирования XGBoost на основе результатов PnL. Превзойдя стратегию «купи и держи», наша окончательная модель обладает превосходством в предсказании рыночных состояний и получении прибыли от нашей активной торговой стратегии.

2. Объяснение кода

2.1 Пометить состояния техническими индикаторами

Маркировка состояний с помощью технических индикаторов вручную — наша первая попытка. Общие стратегии для частных инвесторов на фондовом рынке заключаются в использовании сигнала покупки или продажи на основе комбинации технических индикаторов. Например, сигнал «золотой крест» — это бычий сигнал, который относится к краткосрочным пересечениям EMA выше долгосрочной EMA и т. д. Я пробовал пять различных комбинаций технических индикаторов: только тренд, тренд и импульс, импульс и волатильность. Состояния, помеченные этими методами, похожи в статистическом смысле, однако они довольно несбалансированы: статические состояния намного больше, чем бычьи и медвежьи состояния. Кроме того, я нанес помеченные состояния на цену Russell 3000, чтобы увидеть, правильно ли она отражает значительный сдвиг состояний. Наконец, выяснилось, что ручная маркировка состояний не оптимальна по сравнению с результатами неконтролируемой модели, измеряемыми торговым PnL, что звучит разумно, поскольку критерии, установленные вручную, могут быть не оптимальными и практичными. Все технические индикаторы напрямую взяты из библиотеки ТА на Python.

2.2 Этап моделирования: случайный лес

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

Я обучал нашу модель за 3 разных периода времени: 2003–2017, 2010–2017, 2015–2017, чтобы определить наилучшую продолжительность периода обучения. После разделения данных на обучающий и тестовый набор я провел GridSearch, варьируя количество оценок и максимальную глубину деревьев, чтобы настроить гиперпараметры. Подобрав модель с оптимальными гиперпараметрами, я затем применил ее к тестовому набору. Эффективность модели измеряется путем оценки точности и взвешенного балла F1. RF продемонстрировал сильную способность находить доминирующие факторы состояния Russell 3000 и изучать модель движения. Все данные с различными определениями состояния могут быть хорошо изучены, в основном с показателем точности не менее 90%. Как показано на рисунке 2, RF сгенерировал более высокий PnL, чем базовый уровень. Тем не менее, результаты коэффициента RF Шарпа не соответствуют простым результатам стратегии «купи и держи», как показано на Рис. 3. Это может быть связано с чрезвычайной чувствительностью нашего набора данных к времени и дефектом RF в работе с данными временных рядов и получении гладких непрерывных результатов.

2.3 Этап моделирования: XGBoost

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

Для XGBoost я провел тот же процесс по состояниям, периоду обучения и гиперпараметрам, что и для RF. Для GridSearch я варьировал минимальный вес, гамму и максимальную глубину деревьев, чтобы настроить гиперпараметры. Точно так же все данные получили высокую оценку точности. Рисунок 4 показывает, что чем короче период обучения перед торговлей, тем лучше PnL после обучения. Кроме того, на коэффициент Шарпа не влияла продолжительность периода обучения, как видно из рис. 5. XGBoost превосходит в активной торговле, чем покупка и удержание в PnL для каждого периода обучения, но не может достичь высокого коэффициента Шарпа в качестве стратегии покупки и удержания.

3. Заключение

И Random Forest, и XGBoost относятся к Ensemble Leaning, поскольку они используют большинство прогнозов нескольких отдельных классификаторов. Этот случай очень подходит для продвинутых моделей обучения с учителем, учитывая широкий спектр показателей как независимых переменных и их тесную связь с зависимой переменной — состоянием рынка. Учитывая сильную связь состояния рынка с доходностью акций и индикаторами, которые либо непосредственно получены, либо тесно связаны с ними, неудивительно, что оба метода успешно фиксируют компоненты состояния рынка и делают точные прогнозы. Чтобы сделать следующий шаг, существенное различие между двумя моделями заключается в том, что Random Forest использует Bagging, а XGBoost использует Boosting. Повышение позволяет исследовать остатки и постоянно улучшать их путем соответствующего построения деревьев. В результате вполне естественно, что XGBoost реализует такую ​​высокую производительность.

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

Пожалуйста, смотрите прикрепленную ссылку GitHub для кода: https://github.com/laizhaoxuan?tab=repositories