Как предсказать курс доллара. Поиск доходной стратегии с языком R
Шрифт:
Долл.США_Руб.адф <– 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
[1] 5852 15
> options("scipen"=100, "digits"=4) )
# устанавливаем количество сокращаемых после запятой знаков
# избавляемся от экспоненциального формата представления цифр
> Курс <-Мои.данные[1:5831 ,2]
# загружаем данные по курсу доллара США к рублю с 30 июня 1992 г. по 30 марта 2018 г.
> Курс0<-Курс[5831, ]
# обозначаем как Курс0 – курс доллара США к рублю на 30 марта 2018 г.
> Курс0
2018-03-30
57.2649
# смотрим курс доллара США к рублю на 30 марта 2018 г.
> Лот<-1000
# устанавливаем размер торгуемого микролота=1000 долларам США
> Цена_Лота<-Лот*Курс0
# находим цену лота в рублях на 30 марта 2018 г.
> Цена_Лота
2018-03-30
57264.9
# цена лота в рублях на дату покупки лота по курсу закрытия
Теперь предположим, что в данном случае мы планируем торговать в течение всего
апреля 2018 года, то есть в течение 21 торгового дня. При этом в зависимости от характера торговых сигналов (о них мы подробнее поговорим немного позже) трейдер будет открывать или закрывать длинную (короткую) позицию по ценам закрытия на конец торгового дня, либо воздерживаться от участия в торгах. С целью риск-менеджмента составим интервальный прогноз, в рамках которого курс доллара к рублю на момент закрытия торгов будет находится с 1 апреля по 28 апреля 2018 года.При этом будем исходить из того, что с 50% вероятностью курс прогнозируемой валюты может за месяц торгов либо упасть, либо вырасти. Заметим, что в биржевой торговле вероятность удачно закрыть позицию, чаще всего, колеблется в диапазоне 45,0%-55,0% и лишь очень хорошему трейдеру при удачном стечении обстоятельств на рынке удается повысить ее до 60,0-65,0% и чуть более. Поэтому хочу еще раз повторить, что любой выход на валютный рынок сопряжен с серьезным риском потерь, который нельзя совсем устранить, а можно лишь минимизировать.
Для прогнозирования нам необходимо найти так называемые квантили, а, точнее сказать процентили, по изменениям курса интересующей нас валюты. Квантилем в математической статистике называют такое значение, которое заданная случайная величина (в данном случае это разница между текущим и предыдущими курсами доллара с лагом в один, два, три … 250 торговых дней) не окажется выше (либо ниже) определенного уровня с заранее заданной вероятностью. Если вероятность задана в процентах, то квантиль называется процентилем. Подробнее о процентилях можно прочитать в моей книге см. главу 1 «Как предсказать курс доллара. Расчеты в Excel для снижения риска проигрыша».
Для того, чтобы найти процентили, сначала на основе данных по курсу закрытия курса доллара к рублю на конец 30 марта 2018 г. построим прогноз на следующий торговый день на момент закрытия с 0.1 % уровнем риска (или 99.9% уровнем надежности). Причем, 0.1% риска свидетельствует о том, что существует лишь один шанс из 1000, что курс валюты выйдет за рамки интервального прогноза. (Заметим, что эта оценка риска основана на прошлых данных, но после сильных колебаний на рынке, она может измениться). Для наших расчетов воспользуемся функцией quantile, в которой для верхнего интервала прогноза установим уровень надежности =0.999, а для нижнего интервала прогноза – на уровне 0.001, что по сути означает уровень надежности =1-0.001=0.999 или 99.9%. При этом команда diff(Курс, 1) означает разницу между курсами валют с лагом в один день.
Для получения интервального прогноза с лагом в один торговый день с 0.1% уровнем риска введем следующий день:
> НижПрогноз <– Курс0+quantile(diff(Курс, 1), 0.001)
> НижПрогноз
2018-03-30
54.458959
> ВерхПрогноз<-Курс0+quantile(diff(Курс, 1), 0.999)
> ВерхПрогноз
2018-03-30
60.808652
Таким образом на основе этого прогноза, построенного по данным на 30 марта 2018 г., можно с 99.9% уровнем надежности утверждать, что курс доллара к рублю по итогам торгов в следующий торговый день, то есть 2 апреля 2018 г., должен был находиться в диапазоне от 54.4590 руб. и до 60.8087 руб. Если же нужно построить прогноз с лагом в 2,3,4 … 250 торговых дней, то одна из команд в этом коде приобретет вид diff(Курс, 2,3,4 … 250). А в случае использования операторов циклов вместо этих конкретных цифр ставят букву n.