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

Репозиторий на GitHub

Временной ряд – это последовательность точек данных, которые последовательно появляются в течение определенного периода времени.

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

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

Теперь прогнозирование временного ряда можно в целом разделить на два типа.

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

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

  • Многовариантное прогнозирование временных рядов — это когда для прогнозирования используются предикторы, отличные от ряда (также известные как экзогенные переменные).

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

Введение в модели ARIMA

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

ARIMA — это аббревиатура от Авторегрессионное интегрированное скользящее среднее. Это более сложная версия авторегрессивной скользящей средней с добавлением интеграции.

Модель ARIMA характеризуется тремя условиями: p, d, q, где

  • p – порядок термина AR. Количество запаздывающих наблюдений, включенных в модель, также называется лаговым порядком.
  • q — размер окна скользящего среднего, также называемый порядком скользящего среднего.
  • d – количество разностей, необходимых для того, чтобы временной ряд стал стационарным.

Что означает ARIMA(p, d, q)?

Например :

  • ARIMA (1, 0, 3) означает, что вы комбинируете авторегрессионную модель 1-го порядка и модель скользящего среднего 3-го порядка для описания некоторой переменной отклика (Y) в вашей модели. Будет хорошей идеей думать об этом так: (AR, I, MA). Проще говоря, это придает вашей модели следующий вид:
  • Y = (параметры авторегрессии) + (параметры скользящего среднего)
  • 0 между 1 и 3 представляет часть модели «I» (интегративный компонент), которая обозначает модель, которая учитывает разницу между данными переменной отклика — это можно сделать с нестационарными данными, но вы этого не сделаете. Кажется, я не имею с этим дело, поэтому игнорируйте это.
  • ARIMA(2, 1, 2) означает, что вы комбинируете модель AR 2-го порядка, а также модель MA 2-го порядка для описания Y. d = 1st означает, что модель использовала разность 1 порядка, чтобы сделать данные стационарными.

Точно так же, как в этих примерах, мы должны найти идеальный порядок p, d и q, чтобы соответствовать лучшей модели.

Существует несколько способов найти значения p, q и d:

  • посмотрите на график автокорреляции данных (поможет, если модель скользящего среднего (MA) подходит)
  • посмотрите на график частичной автокорреляции данных (поможет, если модель авторегрессии (AR) подходит)
  • посмотрите на расширенную диаграмму автокорреляции данных (поможет, если нужна комбинация AR и MA)
  • попробуйте Информационный критерий Акаике (AIC) на наборе моделей и исследуйте модели с самыми низкими значениями AIC
  • попробуйте байесовский информационный критерий Шварца (BIC) и исследуйте модели с наименьшими значениями BIC.

Перед работой с нестационарными данными модель авторегрессионного интегрированного скользящего среднего (ARIMA) преобразует их в стационарные данные. Это одна из наиболее широко используемых моделей для прогнозирования данных линейных временных рядов.

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

Постановка задачи. В этой записной книжке мы будем использовать модели ARIMA, SARIMA и Auto ARIMA для спрогнозировать цену акций Apple.

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

Определения компонентов следующие:

  • Уровень – это сумма всех значений ряда.
  • Тренд — это восходящее или нисходящее движение значения ряда.
  • Краткосрочный цикл сериала известен как сезонность.
  • Шум – это случайная вариация в ряду.

Проверить на стационарность

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

Что означает стационарность данных?

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

  • Дисперсия ряда не должна быть функцией времени. Гомоскедастичность - это термин для этой характеристики. Различный разброс данных во времени можно увидеть на красном графике.

  • Наконец, ни I-й член, ни ковариация (I + m)-го члена не должны быть функцией времени. Как вы можете видеть на графике ниже, спред уменьшается со временем. В результате ковариация «красного ряда» не остается постоянной во времени.

ADF (расширенный тест Дики-Фуллера)

Тест Дики-Фуллера — один из наиболее широко используемых статистических тестов. С его помощью можно установить, имеет ли ряд единичный корень и, следовательно, является ли ряд стационарным. Нулевая и альтернативная гипотезы для этого теста: Различие между двухточечными и многоточечными ссылками Нулевая гипотеза: Ряд имеет единичный корень (a = 1).

Альтернативная гипотеза: в ряду нет единичного корня.

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

Мы не можем отвергнуть нулевую гипотезу, потому что p-значение больше 0,05. Кроме того, тестовая статистика превышает критические значения. В результате данные не являются стационарными.

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

Делайте разности, пока они не преобразуются в стационарные данные, где среднее значение и дисперсия постоянны.

Полученное значение p меньше уровня значимости 0,05, а статистика ADF ниже любого из критических значений.

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

Разложение временного ряда. Для начала мы хотим разложить данные, чтобы разделить сезонность, тренд и остаток. Поскольку у нас есть данные о запасах за 3 года. Мы ожидаем, что это годовая или недельная модель. Давайте используем функцию Season_decompose в statsmodels, чтобы помочь нам найти ее.

Проверьте тренд, сезонность и остаток

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

Аддитивные и мультипликативные компоненты временных рядов

  • Существует два метода объединения компонентов временных рядов:

Добавка

  • Термин аддитивный означает, что отдельные компоненты (тренд, сезонность и остаток) складываются вместе:
  • 𝑦𝑡=𝑇𝑡+𝑆𝑡+𝑅𝑡
  • Аддитивный тренд указывает на линейный тренд, а аддитивная сезонность указывает на одинаковую частоту (ширину) и амплитуду (высоту) сезонных циклов.

Мультипликативный

  • Термин «мультипликативный» означает, что отдельные компоненты (тренд, сезонность и остатки) перемножаются вместе:
  • 𝑦𝑡=𝑇𝑡+𝑆𝑡+𝑅𝑡
  • Мультипликативный тренд указывает на нелинейный тренд (изогнутая линия тренда), а мультипликативный тренд указывает на увеличение/уменьшение частоты (ширины) и/или амплитуды (высоты) сезонных циклов.

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

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

Функция Season_decompose() из statsmodels исключает как минимум два параметра:

  • x: array — ваш временной ряд.
  • model: str — тип сезонной составляющей, может быть как аддитивной, так и мультипликативной. Значение по умолчанию является аддитивным.

Аддитивная модель

Мультипликативная модель

Теперь мы создадим модель ARIMA и обучим ее, используя цену закрытия акций из данных поезда. Итак, давайте визуализируем данные, разделив их на обучающие и тестовые наборы

Автокорреляция и частичная автокорреляция

От корреляции к автокорреляции

  • Оба термина тесно связаны. Корреляция измеряет силу линейной связи между двумя последовательностями:
  • Чем ближе корреляция к +1, тем сильнее положительная линейная связь
  • Чем ближе корреляция к -1, тем сильнее отрицательная линейная зависимость
  • Чем ближе корреляция к 0, тем слабее линейная зависимость
  • Автокорреляция — то же самое, но с изюминкой — вы вычисляете корреляцию между последовательностью, которая сама отстает на некоторое количество единиц времени.
  • Перед расчетом автокорреляции вы должны сделать временной ряд стационарным (среднее значение, дисперсия и ковариация не должны меняться со временем).

Автокорреляции

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

Глядя на графики функции автокорреляции (ACF) и частичной автокорреляции (PACF) разностных рядов, вы можете предварительно определить количество необходимых членов AR и/или MA.

Частичная автокорреляция

  • Это немного сложнее для понимания. Делает то же самое, что и обычная автокорреляция — показывает корреляцию последовательности с самой собой, отстающей на некоторое количество единиц времени. Но есть поворот. Показан только прямой эффект, а все промежуточные эффекты удалены.
  • Например, вы хотите узнать прямую зависимость между ценой акций сегодня и 12 месяцев назад. Вы не заботитесь ни о чем между
  • График функции автокорреляции (ACF): автокорреляция показывает, насколько временной ряд коррелирует с его прошлыми значениями, тогда как ACF — это график, используемый для просмотра корреляции между точками, включая единицу запаздывания. В ACF коэффициент корреляции находится на оси x, тогда как количество задержек показано на оси y.

Обычно мы используем либо термин AR, либо термин MA в модели ARIMA. Обе эти фразы редко используются в редких случаях. График ACF используется для определения того, какой из этих терминов мы должны использовать для нашего временного ряда.

  • Если автокорреляция при задержке 1 положительна, мы используем модель AR.
  • Если автокорреляция при лаге 1 отрицательна, мы используем модель MA.

Мы переходим к графикам функций частичной автокорреляции (PACF) после построения графика ACF.

  • Графики функции частичной автокорреляции (PACF) Частичная автокорреляция – это сводка взаимосвязи между наблюдением во временном ряду и наблюдениями на предыдущих временных шагах, при этом взаимосвязи между промежуточными наблюдениями удалены. Частичная автокорреляция при задержке k — это корреляция, которая получается после устранения влияния любых корреляций из-за членов с более короткими задержками.

Если график PACF падает с задержкой n, то используйте модель AR (n), а если падение PACF более постепенное, мы используем термин MA.

Используйте термины AR в модели, когда

  • Графики ACF показывают, что автокорреляция затухает до нуля
  • График PACF быстро обрывается до нуля
  • АКФ стационарного ряда показывает положительный результат при лаге-1

Используйте термины MA в модели, когда модель

  • Отрицательная автокорреляция при отставании — 1
  • ACF, который резко падает после нескольких задержек
  • PACF снижается более постепенно

Как интерпретировать графики ACF и PACF

  • Модели временных рядов, о которых вы скоро узнаете, такие как авторегрессия (AR), скользящие средние (MA) или их комбинации (ARMA), требуют указания одного или нескольких параметров. Их можно получить, посмотрев на графики ACF и PACF.
  • В двух словах:
  • Если график ACF снижается постепенно, а PACF падает мгновенно, используйте авторегрессионную модель.
  • Если график ACF падает мгновенно, а PACF снижается постепенно, используйте модель скользящего среднего.
  • Если и ACF, и PACF постепенно снижаются, объедините модели авторегрессии и скользящего среднего (ARMA).
  • Если и ACF, и PACF падают мгновенно (без существенных задержек), скорее всего, вы не сможете смоделировать временной ряд.

  • Чтобы оценить количество терминов AR (p), вам нужно посмотреть на график PACF. Во-первых, игнорируйте значение при задержке 0. Оно всегда будет показывать идеальную корреляцию, поскольку мы оцениваем корреляцию между сегодняшним значением и самим собой. Обратите внимание, что на графике есть цветная область, представляющая доверительный интервал. Чтобы оценить, сколько терминов AR вы должны использовать, начните подсчитывать, сколько пиков выше или ниже доверительного интервала, прежде чем следующий попадет в окрашенную область. Итак, глядя на приведенный выше график PACF, мы можем оценить, что для нашей модели нужно использовать 0 членов AR, поскольку ни один пик не выходит за пределы доверительного интервала.
  • Чтобы вычислить d, все, что вам нужно знать, сколько разностей было использовано, чтобы сделать ряд стационарным. В нашем случае мы использовали разность 1-го порядка, чтобы сделать наши данные стационарными.
  • Чтобы оценить количество членов MA (q), на этот раз вы посмотрите на график ACF. Здесь применяется та же логика: сколько пиков выше или ниже доверительного интервала, прежде чем следующий пик попадет в окрашенную область? Здесь мы можем оценить 0 членов MA, так как ни один всплеск не выходит за пределы доверительного интервала.

Итак, мы будем использовать порядок (0,1,0), чтобы соответствовать модели ARIMA.

Мы также можем использовать разные порядки p, d и q, чтобы получить наилучший порядок с наименьшим AIC.

Прогноз на следующие 60 дней

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

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

Введение в модели SARIMA

SARIMA (сезонный ARIMA) — это модификация ARIMA, которая явно допускает одномерные данные временных рядов с сезонным компонентом. SARIMA принимает дополнительный набор параметров (P,D,Q)m, которые определяют сезонные компоненты модели.

  • P: Сезонный авторегрессивный порядок
  • D: Порядок сезонной разницы
  • Q: Порядок сезонной скользящей средней
  • m: количество временных шагов для одного сезонного периода.

Это записывается как (p,d,q)×(P,D,Q)m.

  • Из построенных нами графиков ACF и PACF мы можем определить значение Seasonal (P, D, Q). В ACF и PACF у нас есть один всплеск при задержке 3, который находится вне доверительного интервала, а также нет существенной корреляции при задержке 3 и лаге 6. Таким образом, порядок P и Q равен (1, 1). Поскольку мы использовали разность 1, чтобы сделать данные стационарными, поэтому D = 1. Итак, лучший порядок для SARIMA: (0,1,0)x(1,1,1)3

Авто АРИМА

Автоматически обнаруживайте оптимальный порядок для модели ARIMA. После определения наиболее оптимальных параметров для модели ARIMA функция auto arima предоставляет подогнанную модель ARIMA. Эта функция основана на часто используемом методе прогноза::авто. Функция Арима Р.

Функция auro arima подбирает модели в пределах начальных диапазонов p, max p, start q, max q, используя дифференциальные тесты (например, Квятковского-Филлипса-Шмидта-Шина, расширенный Дики-Фуллера или Филлипса-Перрона) для определения порядка дифференцирования. , д. Если сезонная опция включена, D, autoarima дополнительно стремится определить идеальные гиперпараметры P и Q после выполнения Канова-Хансена для определения оптимального порядка сезонных различий.

Вверху слева: остаточные ошибки имеют равномерную дисперсию и колеблются около нуля.

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

Внизу слева: красная линия должна идеально совпадать со всеми точками. Любые значительные отклонения указывали бы на асимметричное распределение.

Внизу справа: остаточные ошибки не автокоррелированы, как показано на коррелограмме, также известной как график ACF. Любая автокорреляция будет означать, что остаточные ошибки имеют закономерность, не объясняемую моделью. В результате вам нужно будет добавить в модель больше X (предикторов).