Как предсказать курс доллара. Поиск доходной стратегии с языком R
Шрифт:
# > начало(Мои.данные)
# смотрим первые 6 строк с загруженными данными – см. рис. 4
Рис. 4
>tail(Мои.данные)
# tail в переводе на русский означает хвост, задняя часть
# Смотрим последние 6 строк с загруженными данными– см. рис. 5
Рис. 5
> dim(Мои.данные)
[1] 5852 15
#
# всего загружено 5852 строки и 15 колонок с 15 переменными.
> День_торгов.мес<-(Мои.данные[1:5831, 1])
# переменные будем обозначать на кириллице, хотя, как правило, используют латиницу
# в квадратных скобках укажем сначала номера загружаемых строк, а затем номер столбца
# символ 1:5831 означает номера строк сверху вниз по порядку 1,2 … 5830, 5831.
# строки 5832: 5852 с данными за апрель 2018 года пока не будем использовать
# неиспользованные данные будут нам нужны для последующего тестирования
> Долл.США_Руб <-Мои.данные[1:5831, 2]
# Долл.США_Руб <-Мои.данные [1:5831 наблюдений, 2-й столбец загруженного файла]
> Евро_Руб <-Мои.данные[1:5831, 3]
> Евро_Долл.США<-Мои.данные[1:5831, 4]
> Нефть<-Мои.данные[1:5831, 14]
> Золото<-Мои.данные[1:5831, 15]
# присваиваем названия тем загруженным данным, которые сейчас будем использовать
Далее построим уравнение регрессии, включив в него в качестве зависимой переменной Долл.США_Руб, а в качестве независимых переменных – фундаментальные факторы, которые, по нашему мнению, влияют на его курс – Евро_Долл.США, Евро_Руб, Нефть и Золото.
Как известно, задачей регрессионного анализа является расчет формулы, описывающей связь между зависимой переменной Y (ее называют также результативным признаком) и независимыми (их называют также факторными) переменными X1, X2, … , Xn. При этом формула связи результативного признака Y с факторами X1, X2, … , Xn, либо с одним фактором X, получила название уравнения регрессии.
В качестве метода аппроксимации (приближения) в уравнении регрессии используется метод наименьших квадратов, который минимизирует сумму квадратов отклонений фактических значений Y от его предсказываемых значений, рассчитанных по определенной математической формуле. При этом линию, которая лучше всего подойдет к этим данным, выбирают так, чтобы сумма квадратов значений вертикальных отклонений зависимой переменной (фактического курса доллара) от линии, рассчитанной по уравнению регрессии (предсказанный курс доллара), была минимальной.
Подробнее о том, как решить уравнение регрессии, можно прочитать в моей книге «Как предсказать курс доллара. Эффективные методы прогнозирования с использованием Excel и EViews» -см. главу 2. «Метод наименьших квадратов и решение уравнения регрессии в Excel», а также в другой моей книге «Как предсказать курс доллара. Расчеты в Excel для снижения риска проигрыша» – см. главу 2. «Как в Excel решить однофакторное уравнение регрессии для линейного тренда».
Решение уравнения регрессии с одной зависимой переменной Долл.США_Руб и четырьмя независимыми переменными, обозначающими воздействие на эту валюту четырех фундаментальных факторов, в R примет следующий вид:
> Уравн1<-lm(Долл.США_Руб~Евро_Долл.США+Евро_Руб+Нефть+Золото)
# решаем уравнение регрессии
#сокращение lm означает уравнение, решаемое методом наименьших квадратов
# символ ~ отделяет зависимую переменную Долл.США_Руб от независимых переменных
#
между зависимыми переменными ставится знак +.> summary(Уравн1)
# summary означет краткий вывод, итоги решения уравнения
В результате получаем табл. 1 с выводом данных по итогам решения этого уравнения регрессии.
Табл. 1. Вывод данных по итогам решения уравнения регрессии
Call:
lm(formula = Долл.США_Руб ~ Евро_Долл.США + Евро_Руб + Нефть + Золото)
Residuals:
Min 1Q Median 3Q Max
–3.745 -0.580 -0.061 0.385 6.123
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.6701534 0.1319762 202.08 <0.0000000000000002 ***
Евро_Долл.США -22.5209932 0.1194950 -188.47 <0.0000000000000002 ***
Евро_Руб 0.8717064 0.0010245 850.84 <0.0000000000000002 ***
Нефть -0.0168154 0.0008252 -20.38 <0.0000000000000002 ***
Золото 0.0001949 0.0000611 3.19 0.0014 **
–
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1 on 5826 degrees of freedom
Multiple R-squared: 0.996, Adjusted R-squared: 0.996
F-statistic: 3.83e+05 on 4 and 5826 DF, p-value: <0.0000000000000002
Источник: расчеты автора
Проверим решение уравнения 1 на статистическую значимость. Судя по табл. 1, F-statistic у данного уравнения регрессии имеет p -value: <0.0000000000000002, то есть уровень его надежности более 99% = ((1-0.0000000000000002)*100). Таким образом можно сделать вывод, что в целом мы получили статистически значимое уравнение регрессии. Также близки к нулю p -value и у константы этого уравнения регрессии (Intercept) и у коэффициентов переменных Евро_Долл.США, Евро_Руб, Нефть и Золото, следовательно, из этого можно сделать вывод, что они также статистически значимы с 99% уровнем надежности.
Случайный (стохастический) процесс Х называют стационарным в сильном смысле, если совместное распределение вероятностей всех его лаговых переменных Х1, Х2, …, Хn, точно такое же, как и для переменных Х1+t, Х2+t, …, Хn+t. Заметим, что стационарных процессов в сильном смысле на финансовых рынках практически нет, а вот стационарные процессы в более широком слабом смысле активно используются для прогнозирования динамики финансовых активов. Под стационарным процессом в слабом смысле понимается случайный процесс, в котором его среднее значение и дисперсия (разброс, отклонения от средней) не зависят от рассматриваемого времени, а автоковариация (корреляционная связь) зависит только от длины лага между лаговыми переменными.
Далее проверим все переменные (временные ряды), включенные в уравнение 1 на стационарность. С этой целью будем использовать расширенный тест Дикки-Фуллера. Как известно, временной ряд считается стационарным в слабом смысле, если построенное на основе его уравнение первого порядка имеет коэффициент регрессии <1. Например, уравнение Хt= 0.975*Хt-1 +С, – свидетельствует о том, что временной ряд Хt с константой С и коэффициентом = 0.975 < 1 является стационарным в слабом смысле. Поэтому в этом временном ряде иногда может возникать сильная волатильность, но в случае стационарности в широком смысле она постепенно затухает. Соответственно, если бы коэффициент был бы больше 1, то тогда этот временной ряд считался бы нестационарным, а, следовательно, волатильность в этом ряде не имела бы тенденции с течением времени не затухать.