Бежать ли в обменник: используем силу Linux и R для прогнозирования курса доллара
Помните, я еще в апреле я говорил о том, что к концу лета доллар снова сильно вырастет? Как мне удалось это узнать? Я использовал прекрасный язык программирования R и пакет для финансового прогнозирования forecast. Настало время вновь заглянуть в будущее, чтобы понять: стоит ли бежать в обменник и уже поздно?

Заодно эта статься скрасит горечь тех, кто жалуется, что на Либератуме нынче статьи только о Windows 10. Пока лунтики любуются плитками и сливают свои файлы в Microsoft, мы используем надежный и проверенный Linux для более возвышенных и интеллектуальных задач.
Для начала возьмем котировки ЦБ и построим график. Любой анализ начинается с изучения графиков.

Синий график — курс доллара в период с 01.01.2000 по 24.08.2000. Оранжевая и красная линии — линии полиномиального тренда (2й и 3й степеней соответственно). Уже по этому графику любому гражданину очевидно, что доллар несколько переоценен и в ближайшие 1-2 месяца очень вероятна коррекция курса. Однако, общая тенденция ясна — рубль будет обесцениваться и дальше.
Но не затем мы устанавливали R и пакет forecast, чтобы гадать по примитивным линиям тренда. Используем мощные алгоритмы прогнозирования по модели ARIMA. Тем более, что разработчики пакета forecast подготовили для нас приятнейший сюрприз: если раньше для моделирования нам приходилось долго изучать основные характеристики временного ряда, строить автокоррелограммы, частичные автокоррелограмы, находить лаги т.п., то теперь всю эту скучную работу берет на себя функция auto.arima(). Как можно понять по названию, она сама подбирает коэффициенты модели p, d, и q. Пользователю остается только продиагностировать готовую модель.
a <- auto.arima(t)
a
Series: t
ARIMA(4,2,3)
Coefficients:
ar1 ar2 ar3 ar4 ma1 ma2 ma3
-0.9527 -0.9654 0.0135 0.0527 -0.0939 0.0897 -0.9867
s.e. 0.0167 0.0221 0.0218 0.0158 0.0062 0.0064 0.0051
sigma^2 estimated as 0.1223: log likelihood=-1549.43
AIC=3114.85 AICc=3114.89 BIC=3165.6
Коэффициенты найдены, можно переходить к диагностике. Посмотрим на остатки, автокоррелограмму остатков и p-значения теста Ljung–Box.

Как видим, автоматически построенная модель никуда не годится. Остается выкинуть ее в помойное ведро и воспользоваться старым добрым ручным моделированием. Если кому интересно, я готов описать этот увлекательный процесс в отдельной статье. Тем более, насколько я знаю, хороших руководств на русском нет.
Ну так вот, подбираем правильные коэффициенты, проверяем модель и переходим к прогнозированию. Получаем следующий график (на 100 дней).

Получается, что к зиме за доллар будут давать 75 рублей. С еще большей уверенностью можно предположить, что цена доллара будет лежать в диапазоне от 66 до 83 рублей.
В качестве бонуса вот вам прогноз по другой модели. Доллар под 100 к декабрю.

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