Как предсказать курс доллара. Поиск доходной стратегии с языком R
Владимир Георгиевич Брюков
Валютный трейдер с первых же минут работы на рынке решает две сложнейшие задачи. Во-первых, перед ним стоит задача заработать крупные суммы, оправдывающие серьезные риски, связанные с торговлей на валютном рынке. А во-вторых, он ни на секунду не должен забывать о потенциально возможных больших потерях вложенных средств, и, следовательно, должен торговать, соблюдая все правила риск-менеджмента. Именно этим двум важнейшим вопросам и посвящена наша книга. При этом особый акцент в ней будет сделан на подробном изложении алгоритма поиска наиболее оптимальной – с точки зрения соотношения доходности и риска – торговой стратегии.
Предисловие
Валютный трейдер с первых же минут работы на рынке решает две сложнейшие задачи. Во-первых, перед ним стоит задача заработать крупные суммы, оправдывающие серьезные риски, связанные с торговлей на валютном рынке. А во-вторых, он ни на секунду не должен забывать о потенциально возможных больших потерях вложенных средств, и, следовательно, должен торговать, соблюдая все правила риск-менеджмента, позволяющие минимизировать этот риск. При этом каждый трейдер должен понимать, что из-за значительного воздействия случайного фактора на динамику валютного курса риск потери средств в ходе торгов невозможно полностью устранить, а можно лишь свести к определенному разумному минимуму.
Именно этим двум важнейшим вопросам и посвящена наша книга «Как предсказать курс доллара. Поиск доходной стратегии с языком R». При этом особый акцент в ней будет сделан на подробном изложении алгоритма поиска наиболее оптимальной – с точки зрения соотношения доходности и риска – торговой стратегии. Хочу напомнить моим читателям, что в предыдущих двух своих книгах – «Как предсказать курс доллара. Расчеты в Excel для снижения риска проигрыша» и «Как предсказать курс доллара. Эффективные методы прогнозирования с использованием Excel и EViews» (первое и второе дополненное издания) – акцент в большей степени сделан на обучении трейдера расчетам, позволяющим свести валютные риски к разумному минимуму. Все желающие могут приобрести эти книги в интернет-магазинах компании ЛИТРЕС и ее партнеров.
Ну а в этой книге мы будем учиться делать прогнозы и искать наиболее доходную стратегию с помощью такого мощного инструмента, как язык программирования R. Тем, кто еще не занимался программированием, либо не знаком с языком R, советую внимательно проштудировать вводную часть этой книги, в которой рассказывается об установке R и основных азах работы с этим языком. Все остальные могут сразу перейти к последующим материалам, посвященным основной теме нашей книги.
Об авторе
Брюкoв Владимир Георгиевич, независимый финансовый аналитик, с 2003 года занимается банковской журналистикой.
С 2005 года особое место в его публикациях занимают статистические методы анализа валютных и финансовых рынков. Теме валютного прогнозирования, в первую очередь, прогнозу по курсу доллара США, посвящены многие его статьи, опубликованные в журналах «Валютный спекулянт», «Инвестиционный банкинг» и в ряде других изданий. В этих публикациях обобщаются результаты проведенного автором исследования валютного рынка, предлагаются оптимальные методы прогнозирования по курсам валют с учетом последних достижения современной статистической науки. В 2011 году издательство КНОРУС и Центр Исследований Платежных Систем и Расчетов опубликовали первою его книгу, посвященную валютному прогнозированию – см. Брюков В. Г. «Как предсказать курс доллара. Эффективные методы прогнозирования с использованием Excel и EViews».
С 2009 по 2015 год В. Г. Брюков на портале Банкир.Ру ежемесячно публиковал прогнозы на будущий месяц по курсам пятнадцати ведущих мировых валют. Насколько точными при этом были прогнозы, наши читатели могут убедиться сами, посетив на этом сайте рубрику «Валютный рынок». Сотрудничество с этим известным порталом, а также большой интерес, проявленный читателями к книге «Как предсказать курс доллара. Эффективные методы прогнозирования с использованием Excel и EViews», стали для автора важным стимулом, способствовавшим написанию новой книге по валютному прогнозированию.
В 2017 году у автора вышла в электронном виде еще одна книга по этой теме: «Как предсказать курс доллара. Расчеты в Excel для снижения риска проигрыша», тогда же вышло и второе дополненное издание «Как предсказать курс доллара. Эффективные методы прогнозирования с использованием Excel и EViews», опубликованное также в электронном виде. Все желающие могут приобрести эти книги (а также ряд других, не связанных с проблемами валютного прогнозирования) в интернет-магазинах компании ЛИТРЕС и ее партнеров. Так, что книга «Как предсказать курс доллара. Поиск доходной стратегии с языком R» – уже третья из этой серии, причем, полное представление о ряде важных аспектах валютного прогнозирования можно получить, только ознакомившись с содержанием всех этих трех произведений.
Глава 1. Основы работы с языком R
Созданный в 1993 году язык программирования R сегодня получил во всем мире очень широкое распространение, в том числе и для анализа рисков, связанных со сделками на различных финансовых рынках, включая и торговлю на валютном рынке. Это объясняется, главным образом, тремя основными причинами.
Во-первых, потому что R – это чрезвычайно эффективный язык программирования, с помощью которого можно выполнять практически все способы статистического и графического анализа данных.
Во-вторых, в отличие от разного рода платных статистических программ, язык R невероятно гибок, что позволяет создавать пакеты прикладных программ (приложений) для самых различных сфер деятельности, в том числе и для прогнозирования валютного и прочих финансовых рынков. Причем, количество этих приложений бурно растет. Так, на конец августа 2018 года в глобальном репозитарии (хранилище) CRAN (The Comprehensive R Archive Network – Полный сетевой архив R) находилось 12940 доступных для загрузки пользователями прикладных программ.
В-третьих, у языка R свободный код, то есть распространяется он бесплатно. И это дает ему весьма серьезное конкурентное преимущество перед зачастую очень дорогим платным программным обеспечением. В 2010 году язык R за особые заслуги перед сообществом программистов вошёл в список победителей конкурса журнала InfoWorld в номинации на лучшее открытое программное обеспечение для разработки приложений.
Прежде чем начать пользоваться языком R для расчетов нам нужно сначала загрузить его последнюю версию. Все необходимые установочные файлы и всю необходимую информацию можно найти на одном из дублирующих (зеркальных) сайтов CRAN. С этой целью нужно пройтись по ссылке – https://cran.r-project.org/ (https://cran.r-project.org/), где пользователи операционных систем Linux, Mac OS X и Windows должны выбрать свои опции: Download R for Linux (https://cran.r-project.org/bin/linux/), Download R for (Mac) OS X (https://cran.r-project.org/bin/macosx/) и Download R for Windows (https://cran.r-project.org/bin/windows/) – см. рис. 1.
Рис. 1
Заметим, что зачастую у пользователей Linux установочный файл с R уже входит в базовый дистрибутив, а потому его не нужно скачивать. Если же его нет, то пользователи, как Linux, так и Mac OS X при установке R должны сначала выбрать уже упомянутые выше опции, соответственно, Download R for Linux (https://cran.r-project.org/bin/linux/) или Download R for (Mac) OS X (https://cran.r-project.org/bin/macosx/), а затем внимательно следовать подробным инструкциям, которые даются на портале https://cran.r-project.org/ (https://cran.r-project.org/). Причем, установленный алгоритм действий нужно строго соблюдать, поскольку некомпетентные действия могут причинить вред операционной системе пользователя.
В свою очередь, пользователи Windows при установке R должны воспользоваться следующими опциями: сначала пройтись по ссылке Download R for Windows (https://cran.r-project.org/bin/windows/), затем щелкнуть по ссылке base (https://cran.r-project.org/bin/windows/base/) и, наконец, по ссылке – Download R 3.5.1 for Windows (https://cran.r-project.org/bin/windows/base/R-3.5.1-win.exe) (62 megabytes, 32/64 bit), то есть загрузить последнюю версию языка (в тот момент, когда пишутся эти строки, последней версией была R 3.5.1).
Всю необходимую информацию по установке R можно найти по следующей ссылке – Installation and other instructions (https://cran.r-project.org/bin/windows/base/README.R-3.4.3) (установка и другие инструкции), которая, к большому сожалению для русскоязычных пользователей, дается на английском языке. Впрочем, даже неопытный пользователь Windows легко справится с инсталляцией R, если он при этом будет использовать уже установленные по умолчанию опции и щелкать опцию Next до завершения этого процесса.
При этом 32-битовую версию R, как правило, рекомендуют устанавливать в том случае, если пользователь работает на 32-битовой операционной системе Windows, а обе версии – на 64-битовой. Заметим, что 32-битовая версия иногда работает быстрее 64-битовой, но последняя необходима пользователю в том случае, если ему требуется больший объем оперативной памяти, чем 32-битовая версия R в состоянии справиться. Если у Вас относительно современный компьютер с оперативной памятью 4 Гб или более – смело ставьте 64-битную версию. Если оперативной памяти у Вашего компа менее 4 Гб и ее Вы не планируете расширять – ставьте 32-бита.
Для того чтобы узнать, 32 или 64-битовая версия Windows стоит на Вашем компьютере, нужно: во-первых, набрать на клавиатуре сочетание клавиш Windows+E, после чего откроется меню параметров, в том числе и такой ее параметр как «Этот компьютер» (в последних версиях Windows), либо «Мой компьютер» (в более ранних версиях Windows); во-вторых, нужно щелкнуть правой кнопкой мышки по параметру «Этот компьютер» или «Мой компьютер», после чего появится окно (рис. 1), в котором о типе системе сказано следующее: «64-разрядная операционная система процессора х64».
Язык R имеет встроенную стандартную среду разработки – RGui (Graphic User Interface – графический пользовательский интерфейс), используемую для ввода и редактирования программного кода. Эта среда разработки имеет вид командной строки в окне, называемом консолью. Командная строка работает по принципу «вопрос-ответ».
Помимо встроенной среды разработки RGui для языка R создано еще ряд других, зачастую, более совершенных ее аналогов, одни из которых находятся в свободном доступе, а другие платные. В этой книге мы будем использовать для наших расчетов интегрированную бесплатную среду разработки – RStudio, имеющую более удобный интерфейс, что существенно упрощает работу с R. Облегчает работу пользователя также и наличие в RStudio цветовой подсветки, автоматического завершения кода и удобной навигации по скрипту. Серьезным плюсом RStudio является также и ее совместимость с основными операционными системами – Windows, Linux, Mac OS X.
RStudio – это относительно более новая среда разработки для R, появившаяся в декабре 2010 года. RStudio доступна в двух версиях: 1. RStudio Desktop, в которой программа выполняется на локальном компьютере как обычное приложение; и 2. RStudio Server, в которой предоставляется доступ через браузер к RStudio, установленной на удаленном Linux-сервере. RStudio можно загрузить по следующей ссылке – https://www.rstudio.com/products/rstudio/ (https://www.rstudio.com/products/rstudio/).
После того как мы успешно завершили установку последней версии R и инсталляцию среды разработки RStudio, можно приступать к работе. Для этого нужно два раза щелкнуть левой кнопкой мышки по иконке RStudio, которая находится в меню «Пуск» в перечне остальных программ, установленных на Вашем компьютере. Для большего удобства иконку RStudio лучше прикрепить к панели задач Вашего компьютера, что ускорит начало работы.
После запуска RStudio появляется окно (рис. 2), разделенное на четыре части: 1. Слева в верхней части этого окна находится редактор кода, в котором вводится и редактируется создаваемый программный код; 2. Слева в нижней части окна пользователь увидит консоль, выполняющую команды, введенные редактором кода; 3. Справа в верхней части окна размещена история команд; 4. Справа в нижней части окна находится своего рода справочная, с помощью которой можно получить помощь Help, доступ к списку загруженных программных пакетов, графиков и файлов, находящихся в текущем рабочем каталоге. В ходе работы в основном графическом окне могут появиться и другие окна – редактор скриптов, окна с графическим результатом выполнения команд (графики).
Рис. 2
После того как RStudio загрузится, в нижней части справа появившегося его окна, то есть в консоли, появится символ «>», означающий, что среда разработки в данный момент ничем не занята и ожидает ввода наших новых команд. Символом присвоения в языке R является символ «<-», но иногда используется также и обычный символ присвоения «=». Команды, размещаемые на одной строке, отделяются точкой с запятой.
Далее все пояснения к программному коду будем давать по ходу изложения, предваряя их символом #, который не является частью распознаваемого компьютером кода. Всё, что находится после этого знака в рамках одной строки, игнорируется программой. При этом все пояснения к программному коду будем давать по ходу изложения, предваряя их символом решетки #, которая не является частью распознаваемого компьютером кода.
В R можно создавать имена для различных объектов (переменных) как на латинице, так и на кириллице. Кроме того, R различает регистр, то есть одно и тоже слово, начинающееся со строчной или прописной буквы, для него не одинаково. В этой книге для более понятного изложения кода автор решил давать названия переменным на кириллице. Функции в R англоязычные, но для лучшего их запоминания автор советует начинающим программистам попытаться перевести их с английского на русский. Правда, это не всегда может получится, поскольку нередко такие функции представляют собой англоязычные сокращения, либо новые словоформы, которые не могут быть переведены с помощью словаря общеупотребительной лексики. Тем не менее тому, кто решил всерьез заняться программированием на R, нужно будет освоить язык Шекспира, по крайней мере в той степени, чтобы читать и понимать справочные материалы по этому языку.
Каждый объект в R относится к тому или иному типу данных, использование которых для программирования имеет свою специфику. R работает с самыми разными структурами данных, включая векторы, матрицы, массивы данных, таблицы и списки, которые различаются типами данных, способом создания, сложностью устройства, а также способом обозначать и извлекать из них отдельные элементы.
Векторы – это одномерные массивы данных, которые могут содержать числовые, текстовые или логические значения. Для создания векторов применяются:
1. Функция объединения с, с помощью которой объединяются элементы, перечисленные в скобках через запятую:
> вектор.А<– c(1,5,7)
# c – функция объединения от англ. слова concatenation – объединение, слияние
# объединяет аргументы в один вектор определенного типа
# если бы R понимал по-русски, то эту команду можно было бы ввести так:
# вектор.А= объединить(1,5,7)
> вектор.А
[1] 1 5 7
> # задать R вопрос является ли вектор.А вектором можно так:
> is.vector(вектор.А)
# если бы R понимал по-русски, то эту команду можно было бы ввести так:
# вектор.ли(вектор.А)
[1] TRUE
# ответ TRUE по-русски означает ИСТИНА, т.е. да, вектор.А является вектором
2. Функция последовательности seq, в которой первая цифра в скобках обозначает начальное значение вектора, вторая – конечное значение вектора, а третья цифра – величину интервала создаваемой последовательности:
> вектор.Б<-seq(0,4,2)