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

Вы можете скачать Notebook с GitHub.

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

Модель, представленная в этом посте, предназначена только для иллюстративных целей, и ее результаты не следует рассматривать как гарантию будущей производительности. Его основная цель — продемонстрировать применение логистической регрессии в качестве модели машинного обучения на основе классификации для прогнозирования фондового рынка в R.

1. История

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

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

Линейный дискриминантный анализ (LDA) и квадратичный дискриминантный анализ (QDA) — это два распространенных метода дискриминантного анализа, представляющего собой статистический метод, используемый для поиска линейной или нелинейной связи между признаками и классами в наборе данных. LDA и QDA часто используются в качестве контролируемых алгоритмов обучения, где они обучаются на размеченных данных, чтобы предсказать класс новых, невидимых точек данных.

Давай начнем!

Сначала нам нужно установить и загрузить пакеты R.

Установите и загрузите следующие библиотеки:

Для этого блога я собираюсь загрузить данные из Yahoo Finance.

2. Подготовка данных

Загрузите биржевые данные Apple Inc. с Yahoo Finance

Чтобы загрузить данные об акциях Apple в R из Yahoo Finance и извлечь данные об открытии, закрытии, максимуме, минимуме и объеме, мы можем использовать пакет quantmod.

Извлеките цены открытия, закрытия, максимума, минимума и объем акции.

Рассчитать доходность дневного журнала по цене закрытия

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

Рассчитать доходность лагов и другие показатели

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

Замените значения NA в данных, используя либо линейную интерполяцию, либо сплайн-интерполяцию.

Чтобы сохранить структуру возвратов и отложенных возвратов, мы заменим любые значения NA другими значениями, а не удалим их.

Создать переменную направления

Чтобы создать переменную направления на основе ряда доходностей в R, мы можем использовать простой оператор ifelse, который присваивает значение «Вверх» для положительных результатов, а «Вниз» — для отрицательных. Я использую 1 для положительной доходности и 0 для отрицательной доходности.

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

Создайте набор вспомогательных данных с выборочными переменными

Теперь мы можем создать подмножество данных, чтобы удалить ненужные индикаторы.

Рассчитать корреляцию данных

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

Мы также можем создать график корреляции с цветными ячейками.

Проверить структуру данных

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

Поскольку переменная направления является символом, мы преобразуем ее в фактор.

Разделить данные на обучение и тестирование

Я использую 70% данных для обучения и 30% данных для тестирования:

Создайте отдельные зависимые и независимые переменные (переменные x и y для наборов обучающих и тестовых данных)

Переменная «train_y» содержит переменную «Направление или зависимая» для обучающих данных, а переменная «test_y» содержит переменную «Направление или зависимая» для тестовых данных.

Переменная «train_x» содержит «независимые» переменные для обучающих данных, а переменная «test_x» содержит «независимые» переменные для тестовых данных.

3. Подгонка логистической регрессии

Теперь мы будем использовать пакет «glm», чтобы подогнать режим логистической регрессии со всеми индикаторами.

Вычисляет точность логистической регрессии

Предоставленный вами код вычисляет точность модели логистической регрессии в R с использованием набора тестов.

Хотя точность модели логистической регрессии составляет всего 54 %, это считается приемлемым для прогнозирования движений фондового рынка, которые по своей природе случайны и их трудно предсказать с высокой степенью точности.

Чтобы проверить матрицу путаницы, вы можете использовать функцию table():

Функция confusionMatrix() вычисляет матрицу путаницы, которая показывает количество истинных положительных, истинных отрицательных, ложноположительных и ложноотрицательных результатов, а также вычисляет такие показатели, как точность, достоверность, полнота и оценка F1.

ROC-кривая

Кривая ROC — это еще один способ измерения точности модели логистической регрессии.

Чтобы построить кривую ROC для glm.fit, мы можем использовать пакет ROCR.

Улучшить производительность логистической модели

Удаление переменных из модели может помочь улучшить ее производительность.

4. Определение важных переменных с помощью пошаговой регрессии и лассо

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

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

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

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

Пошаговая регрессия для выявления важных переменных

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

Использование лассо для выбора признаков в логистической регрессии

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

5. Линейный дискриминационный анализ (LDA)

Теперь мы подгоним модель LDA, используя пакет MASS’в R.

6. Анализ квадратичной дискриминации (QDA)

Соберите модель QDA с помощью пакета «MASS» в R.

7. Объедините кривую ROC для логистической регрессии, LDA и QDA

Комбинируя кривые ROC, вы можете легко увидеть, какая модель работает лучше в диапазоне порогов чувствительности/специфичности, а не просто смотреть на общую точность. Кроме того, объединение кривых ROC может помочь вам определить, какая модель лучше выявляет ложноположительные и ложноотрицательные результаты, что может быть важно в зависимости от конкретного приложения.

Дополнительные инструменты и ресурсы ➡️ Посетите StartupStash.
Zendesk дарит стартапам кредиты и привилегии на сумму 75 000 долларов США! ➡️ Подать заявку!

Рекомендации

Гарет Майкл Джеймс, Виттен Д., Хасти Т.Дж. и Тибширани, Р. (2013). Введение в статистическое обучение: с приложениями в R. Нью-Йорк: Спрингер.