Прогнозируем процентные ставки
Теперь вы применим методы прогнозирования, изученные в предыдущем упражнении, к реальным данным вместо смоделированных. Вернёмся к набору данных из первой главы: годовые данные по 10-летним процентным ставкам за последние 56 лет, хранящиеся в объекте типа Series под названием interest_rate_data. Умение прогнозировать процентные ставки имеет огромное значение — не только для инвесторов в облигации, но и для тех, кто, например, выбирает между ипотекой с фиксированной и плавающей ставкой.
В первой главе вы видели, что процентным ставкам свойственно возвращение к среднему на длинных горизонтах. Иными словами, высокие ставки со временем склонны снижаться, а низкие — расти. Сейчас ставки находятся ниже долгосрочного уровня, поэтому ожидается их рост. AR-модель позволяет оценить, насколько значительным будет это повышение.
Класс ARIMA и функция plot_predict уже импортированы.
Это упражнение является частью курса
Анализ временных рядов на Python
Инструкции к упражнению
- Создайте экземпляр класса
ARIMAс именемmod, используя годовые данные по процентным ставкам и задав параметрorderдля модели AR(1). - Обучите модель
modс помощью метода.fit()и сохраните результат в объектres. - Постройте график с данными, а также внутривыборочными и вневыборочными прогнозами, используя функцию
plot_predict().- Первым аргументом функции
plot_predict()должна быть обученная модель. - Передайте аргумент
start=0, чтобы начать внутривыборочный прогноз с самого начала, и укажитеend='2027', чтобы спрогнозировать данные на несколько лет вперёд. - Обратите внимание: значение
end— 2027 — должно быть в кавычках, поскольку оно обозначает дату, а не целочисленную позицию.
- Первым аргументом функции
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Forecast interst rates using an AR(1) model
mod = ARIMA(interest_rate_data, order=___)
res = mod.fit()
# Plot the data and the forecast
fig, ax = plt.subplots()
interest_rate_data.plot(ax=ax)
plot_predict(___, start=___, end=___, alpha=None, ax=ax)
plt.show()