Страница 10 из 12
коэф.возврата<– summary(Долл.США_Руб.ост_адф)@testreg$coefficients[1,1]
# коэффициент @testreg$coefficients[1,1] берем из summary(Долл.США_Руб.ост_адф)
полупериод.средней <-(-log(2)/коэф.возврата)
# log(2) – натуральный логарифм от 2
полупериод.средней
# [1] 92.33331
Таким образом, средняя полуамплитуда колебаний остатков по курсу доллара к рублю составляет 92.33 торговых дня. По мнению Ernest P. Chan, автора книги «Algorithmic Trading. Wi
plot(Уравн1$residuals[1:5831], main='Полупериоды колебания остатков', xlab='Годы', type='l')
# строим график остатков
# plot означает график
abline(h=0, lwd=4)
# приставка ab означает от, а line – линия
# строим линию =0 с толщиной lwd=4
# lwd сокращение от line width, что означает ширину линии
В результате получаем рис. 6 с графиком колебаний остатков вокруг нуля за период с 30 июня 1992 г. по 30 марта 2018 г. Толстая прямая линия на этом графике представляет собой линию перехода остатков от отрицательных к положительным значениям. Судя по этому графику, различные циклы колебаний остатков вокруг нуля довольно существенно отличаются друг от друга, а также и от их среднего значения.
Поэтому можно сделать вывод, что знание средней за весь период наблюдений полуамплитуды колебаний остатков не дает инвестору возможности точно оценить, какими будут остатки в момент его выхода на рынок. Если же трейдер все-таки решит приобрести недооцененный актив, то он должен понимать, что срок получения прибыли по такого рода сделкам точно неизвестен. При этом с точки зрения риск-менеджмента лучше ориентироваться на максимальные сроки длительности полуамплитуды колебаний остатков.
Рис. 6
После того как мы создали вышеуказанный код его нужно будет сохранить. Щелкнув в верху RStudio опции File и Save as (Ctrl+S), мы по умолчанию сохраняем созданный скрипт в текущей рабочей директории. Если скрипт сохраняется в первый раз, то появится окно, в котором будет предложено ввести имя сохраняемого файла. При этом файл для дальнейшей работы в R сохраняется с расширением *.R, хотя в некоторых случаях Вам могут потребоваться и другие форматы.
Задание 2. Проанализировать влияние фундаментальных факторов на курс евро к рублю
После того, как читатель познакомился с анализом фундаментальных факторов, влияющих на курс американского доллара к рублю, пора применить эти знания на практике. В данном случае читателю нужно будет внести небольшие изменения в код, анализирующий фундаментальные факторы, влияющие на курс доллара США к рублю. В результате он получит код, анализирующий влияние фундаментальных факторов на курс евро к рублю.
С этой целью ниже дается код, с помощью которого проводился анализ фундаментальных факторов, влияющих на курс доллара США к рублю. Здесь и ниже во всех заданиях автор использует в коде символ решетки с тремя восклицательными знаками #!!!, который ставится ниже строки кода. Символ #!!! является для читателя указанием на то, что данная строка с кодом должны быть им во время решения задания изменены. При необходимости после символа #!!! даются иногда и пояснения о необходимости изменить расположенную выше строку кода.
rm(list=ls(all.names=T))
getwd()
setwd('C:/Users/Vladimir/Documents/Cloud Mail.Ru/1 ANALITIKA/000 R/000 Книга прогноз доллара с R')
ls()
library(zoo)
library(fBasics)
library(urca)
Мои.данные<-read.zoo('Данные.csv', sep = ";", header=TRUE, FUN=as.Date)
head(Мои.данные)
tail(Мои.данные)
dim(Мои.данные)
День_торгов.мес<-(Мои.данные[1:5831, 1])
Долл.США_Руб <-Мои.данные[1:5831, 2]
Евро_Руб <-Мои.данные[1:5831, 3]
Евро_Долл.США<-Мои.данные[1:5831, 4]
Нефть<-Мои.данные[1:5831, 14]
Золото<-Мои.данные[1:5831, 15]
options("scipen"=100, "digits"=4)
Уравн1<-lm(Долл.США_Руб~Евро_Долл.США+Евро_Руб+Нефть+Золото)
summary(Уравн1)
#!!! какую зависимую переменную нужно поменять в Уравн1
#!!! какую независимую переменную нужно поменять в Уравн1
#!!! обратите внимание на значимость Pr(>|t|) коэффициентов в Уравн1
Долл.США_Руб.адф <– ur.df(Долл.США_Руб, type = "drift")
summary(Долл.США_Руб.адф)
Евро_Долл.США.адф <– ur.df(Евро_Долл.США, type = "drift")
summary(Евро_Долл.США.адф)
Евро_Руб.адф <– ur.df(Евро_Руб, type = "drift")
summary(Евро_Руб.адф)
Золото.адф <– ur.df(Золото, type = "drift")
summary(Золото.адф)
Нефть.адф <– ur.df(Нефть, type = "drift")
summary(Нефть.адф)
Долл.США_Руб.ост_адф <– ur.df(Уравн1$residuals, type = "none")
#!!! тестируем остатки, полученные по итогам уравнения регрессия
#!!! с какой зависимой переменной решено это уравнение
summary(Долл.США_Руб.ост_адф)
#!!!
tail(Уравн1$residuals, 20)
#!!!
коэф.возврата<– summary(Долл.США_Руб.ост_адф)@testreg$coefficients[1,1]
#!!! коэф.возврата для какой зависимой переменную нужно протестировать
полупериод.средней <-(-log(2)/коэф.возврата)
полупериод.средней
# 92.33 торговых дней полупериод.средней
plot(Уравн1$residuals[1:5831], type='l')
#!!!
abline(h=0, lwd=4)
plot(Уравн1$residuals[1:5831], main='Полупериоды колебания остатков', xlab='Годы', type='l')
#!!!
abline(h=0, lwd=4)
Ответы на задание 2 – см. в конце книги.
Глава 3. Каким должно быть кредитное плечо, чтобы не проторговаться
Как мы уже говорили, любой выход на валютный рынок сопряжен с большим риском потерь. Поэтому для того, чтобы минимизировать риски трейдеру перед выходом на рынок необходимо провести определенные расчеты. Прежде чем заняться расчетами по минимизации рисков сначала введем следующий код:
> rm(list=ls(all.names=T))
# удаляем все объекты, оставшиеся после прошлой сессии.
> setwd('C:/Users/Vladimir/Documents/Cloud Mail.Ru/1 ANALITIKA/000 R/000 Книга прогноз доллара с R')
# устанавливаем рабочую директорию.
> library(zoo)
# загружаем в память компьютера библиотеку zoo
> Мои.данные<-read.zoo('Данные.csv', sep = ";", header=TRUE, FUN=as.Date)
# снова загружаем наши данные из файла Данные.csv
> head(Мои.данные)
# смотрим первые 6 строк с загруженными данными
> tail(Мои.данные)
# Смотрим последние 6 строк с загруженными данными
> dim(Мои.данные)
# Смотрим, сколько наблюдений (строк) и переменных (колонок) в файле Данные.csv