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

В этой статье мы поэкспериментируем с использованием методов экспоненциального сглаживания для прогнозирования цен на акции. Мы начнем с использования одинарного экспоненциального сглаживания, затем двойного экспоненциального сглаживания и, наконец, тройного экспоненциального сглаживания (также известного как метод Холта-Винтерса). Наша реализация экспоненциального сглаживания следует уравнениям здесь и здесь (стр. 322).

Постановка задачи

Мы стремимся предсказать дневные скорректированные цены закрытия Vanguard Total Stock Market ETF (VTI), используя данные за предыдущие N дней. В этом эксперименте мы будем использовать исторические цены на VTI за 6 лет с 2013–01–02 по 2018–12–28, которые можно легко загрузить с yahoo finance. После загрузки набор данных выглядит так:

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

Чтобы эффективно оценить эффективность экспоненциального сглаживания, одного прогноза на одну дату недостаточно. Вместо этого мы будем выполнять различные прогнозы в разные даты в этом наборе данных и усреднять результаты. Для всех прогнозов мы будем сравнивать методы экспоненциального сглаживания с методом Last Value.

Чтобы оценить эффективность наших методов, мы будем использовать показатели среднеквадратичной ошибки (RMSE), средней абсолютной процентной ошибки (MAPE) и средней абсолютной ошибки (MAE). Для всех показателей, чем ниже значение, тем точнее прогноз. Как и в нашей предыдущей статье, мы будем использовать метод Last Value для сравнения наших результатов.

Обучение и проверка

Для выполнения прогноза нам нужны данные обучения и проверки. Мы будем использовать данные за 3 года в качестве набора поездов, что соответствует 756 дням, поскольку в году около 252 торговых дней (252 * 3 = 756). Мы будем использовать данные за следующий год для выполнения проверки, что соответствует 252 дням. Другими словами, для каждого прогноза, который мы делаем, нам нужно 756 + 252 = 1008 дней данных для обучения и проверки модели. Модель будет обучена с использованием набора поездов, а гиперпараметры модели (⍺, β, 𝛾 в данном случае, см. Ниже) будут настроены с использованием набора проверки.

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

В дальнейшем мы будем использовать методы экспоненциального сглаживания для выполнения прогнозов на несколько дней в нашем наборе данных, каждый с горизонтом прогноза 21 день (обратите внимание, что в месяце около 21 торгового дня, исключая выходные). Мы будем использовать 1008 дней непосредственно перед прогнозом в качестве набора для обучения и проверки с разделением 756: 252, как упомянуто выше.

Единичное экспоненциальное сглаживание

Ниже приводится основное уравнение экспоненциального сглаживания.

Здесь:

  • S обозначает сглаженное значение.
  • y обозначает временной ряд
  • t обозначает период времени временного ряда y и принимает значения от 1 до n.
  • α обозначает константу сглаживания - чем меньше значение α, тем более гладкой будет кривая.

Для инициализации установите

Обратите внимание, что нет S₁. Чтобы выполнить прогноз, вычислите

Уравнения экспоненциального сглаживания достаточно просты, чтобы их можно было реализовать самостоятельно. Код для однократного экспоненциального сглаживания показан ниже.

Результаты применения однократного экспоненциального сглаживания к нашему набору данных с использованием метода проверки с помощью движущегося окна показаны ниже. Мы варьировали ⍺ от 0,01 до 0,99 с размером шага 0,01 и выбрали оптимальное значение ⍺, которое дало наименьшее среднеквадратичное значение в нашем наборе для проверки. Как можно заметить, однократное экспоненциальное сглаживание проецирует только прямую горизонтальную линию и плохо отражает тенденции.

Другой способ визуализации прогнозов - построить каждый прогноз с его фактическим значением. Это показано на графике ниже. Если у нас есть идеальная точность, каждый прогноз должен лежать на диагональной линии y = x.

Ниже показаны RMSE, MAPE и MAE каждого прогноза, а также соответствующие им оптимальные значения α, настроенные с использованием соответствующих наборов валидации.

Приведенные выше прогнозы дают среднее значение RMSE 2,52, среднее значение MAPE 1,69% и среднее значение MAE 2,25.

Вы можете ознакомиться с блокнотом jupyter для однократного экспоненциального сглаживания здесь.

Двойное экспоненциальное сглаживание

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

Здесь:

  • S обозначает сглаженное значение.
  • y обозначает временной ряд
  • t обозначает период времени временного ряда y и принимает значения от 1 до n.
  • α обозначает константу сглаживания для сглаженного значения
  • b обозначает оценку наклона тренда.
  • β обозначает константу сглаживания для наклона тренда.

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

Для инициализации установите

Чтобы выполнить прогноз, вычислите

Здесь:

  • S обозначает сглаженное значение.
  • t обозначает период времени временного ряда y и принимает значения от 1 до n.
  • b обозначает оценку наклона тренда.
  • F обозначает прогноз.
  • H обозначает горизонт прогноза.

Код для двойного экспоненциального сглаживания показан ниже.

Результаты применения двойного экспоненциального сглаживания к нашему набору данных с использованием метода проверки с помощью движущегося окна показаны ниже. Мы изменили и ⍺, и β от 0,01 до 0,99 с размером шага 0,01 и выбрали оптимальные значения ⍺, β, которые дали наименьшее среднеквадратичное значение в нашем наборе для проверки.

График прогнозов и фактических значений представлен ниже.

Ниже показаны RMSE, MAPE и MAE каждого прогноза вместе с соответствующими оптимальными значениями α и β, настроенными с использованием соответствующих наборов валидации.

Приведенные выше прогнозы дают среднее значение RMSE 2,31, среднее значение MAPE 1,54% и среднее значение MAE 2,06. Пока все хорошо, двойное экспоненциальное сглаживание работает лучше, чем одинарное экспоненциальное, как мы и ожидали.

Однако более пристальный взгляд на оптимальные значения β показывает, что наша начальная нижняя граница β была установлена ​​слишком низкой. Затем мы попробовали «тонкую настройку» для настройки гиперпараметров - сначала мы изменили оба ⍺ и β от 0,01 до 0,99 с размером шага 0,01, как и раньше. После того, как начальные оптимальные значения и β найдены, мы затем варьировали их значения в пределах диапазона начального оптимального значения +/- 0,01 с шагом 0,001. Ниже показаны оптимальные значения α и β с точной настройкой.

При точной настройке приведенные выше прогнозы дают немного лучшее среднее значение RMSE, равное 2,29, среднее значение MAPE, равное 1,53%, и среднее значение MAE, равное 2,04.

Вы можете проверить блокнот jupyter для двойного экспоненциального сглаживания здесь (без точной настройки) и здесь (с точной настройкой).

Тройное экспоненциальное сглаживание

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

Здесь:

  • S обозначает сглаженное значение.
  • y обозначает временной ряд
  • t обозначает период времени временного ряда y и принимает значения от 1 до n.
  • α обозначает константу сглаживания для сглаженного значения
  • b обозначает оценку наклона тренда.
  • β обозначает константу сглаживания для наклона тренда
  • L обозначает период
  • I обозначает оценку сезонной составляющей.
  • 𝛾 обозначает постоянную сглаживания для сезонной составляющей

Мы выбрали годовой период из-за таких явлений, как митинг Санта-Клауса, эффект января и эффект Продать в мае. Поскольку в году примерно 252 торговых дня, мы устанавливаем L = 252.

Чтобы инициализировать сглаженное значение, установите

Чтобы инициализировать наклон тренда, установите

Чтобы инициализировать сезонную составляющую, установите

Здесь:

  • P обозначает количество периодов в нашем наборе поездов (поскольку размер нашего поезда составляет 3 года, P = 3)

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

Код для тройного экспоненциального сглаживания показан ниже.

Результаты применения тройного экспоненциального сглаживания к нашему набору данных с использованием метода проверки с помощью движущегося окна показаны ниже. Мы изменили и ⍺, и β от 0,01 до 0,99 с шагом 0,01 и 𝛾 от 0,1 до 0,9 с размером шага 0,1. Затем мы выбрали оптимальные значения ⍺, β, 𝛾, которые дали самое низкое среднеквадратичное значение в нашем наборе для проверки.

График прогнозов и фактических значений представлен ниже.

Приведенные выше прогнозы дают среднее значение RMSE 3,91, среднее значение MAPE 2,65% и среднее значение MAE 3,50.

Ниже показаны RMSE, MAPE и MAE каждого прогноза, а также соответствующие им оптимальные значения α, β и, настроенные с использованием соответствующих наборов проверки.

Приведенные выше прогнозы дают среднее значение RMSE 3,91, среднее значение MAPE 2,65% и среднее значение MAE 3,50.

Вы можете ознакомиться с записной книжкой jupyter для тройного экспоненциального сглаживания здесь.

Выводы

Давайте обобщим наши выводы в таблице ниже.

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

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