Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Эконометрия на финансовом рынке. Практикум
.pdf
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ КНР
КИТАЙСКО-РОССИЙСКИЙ ИНСТИТУТ
ХЭЙЛУНЦЗЯНСКОГО УНИВЕРСИТЕТА
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Экономический факультет
А. В. Костин
ЭКОНОМЕТРИЯ НА ФИНАНСОВОМ РЫНКЕ
Практикум
Новосибирск
2020

УДК 336 (075.8)
ББК 65.05
К 723
Рецензент
канд. экон. наук, доцент Н. М. Ибрагимов
Костин, А. В.
К 723
Эконометрия на финансовом рынке : практикум / А. В. Костин ;
Новосиб. гос. ун-т. — Новосибирск : ИПЦ НГУ, 2020. — 56 с.
ISBN 978-5-4437-1020-4
Курс «Эконометрия на финансовом рынке» предполагает изучение
конкретных методов прогнозирования и моделирования финансовых
временных рядов. Он состоит из двух частей. Первая часть является
подготовительной и включает в себя введение в язык программирования R,
а также некоторые главы теории вероятности и эконометрии, необходимые
для дальнейшего изучения курса и практического использования
полученных знаний. Вторая часть базируется на анализе и прогнозировании
доходности активов, а также сравнении, моделировании и оптимизации
портфелей ценных бумаг.
Практикум предназначен для студентов 3-го курса Китайскороссийского института, специализирующихся по направлению
«Экономика». Он содержит необходимый набор адаптированных задач,
упражнений, заданий и примеров как аудиторных, так и самостоятельных
работ с кодом. Приведенный в практикуме материал позволит студентам
более рационально выстроить свое обучение, а также будет способствовать
улучшению эффективности проведения практических занятий
преподавателями. Практикум является дополнением к лекциям и не
содержит всего объема материала курса.
УДК 336 (075.8)
ББК 65.05
Рекомендовано к печати кафедрой применения математических
методов в экономике и планировании ЭФ НГУ
(выписка из протокола № 2 от 13.10.2020 г.).
ISBN 978-5-4437-1020-4
© Новосибирский государственный
университет, 2020
© А. В. Костин, 2020

3
1. Введение в R
Новые исследовательские задачи требуют современных методов и
инструментов решения. Статистические пакеты, предлагающие
традиционные эконометрические способы работы с данными, являются
удобными в использовании, однако их ограниченный функционал не
позволяет полноценно решать современные задачи. Возникает
необходимость изучения более сложных инструментов, таких как языки
программирования.
Какой язык программирования выбрать? Классические, низкоуровневые
языки программирования, такие как C, C++, Java, являются сложными в
изучении и дают избыточный функционал, который не требуется для
экономических исследований. На помощь приходят современные
высокоуровневые языки программирования (R, Python, Matlab и др.),
стремительно набирающие популярность. Их легче изучать, они
используют функции, написанные на более низкоуровневых языках, и
отличаются удобным и понятным интерфейсом.
За последние годы эффективность современных языков
программирования увеличилась: если раньше разница в скорости
вычисления между низкоуровневым и высокоуровневым языками
программирования была существенной, то сейчас она сокращается.
Поэтому мы советуем выбирать для статистических исследований именно
высокоуровневые языки программирования.
Чтобы выбрать какой-либо высокоуровневый язык для изучения,
сопоставим их друг с другом. Начнем с простого критерия. R и Python
являются бесплатными, в отличии от языка Matlab. Matlab чаще
используется в математических и физических исследованиях, нежели в
экономических, хотя там есть очень интересные статистические пакеты.
Языки программирования R и Python очень похожи. При этом R больше
нацелен на статистическую обработку данных, а Python обладает
расширенным спектром возможностей.
Я считаю, что язык программирования R имеет больше преимуществ по
сравнению с другими высокоуровневыми языками. Он прост в изучении и
имеет дружелюбный интерфейс. Поэтому мы выбираем базовым языком
программирования нашего курса именно его.
После освоения языка R для вас не составит труда изучить и другие
высокоуровневые языки программирования, например, Python или Matlab,
а при необходимости и более низкоуровневые языки.

4
1.1. Как установить R?
Для установки языка R вам потребуется установить две программы:
непосредственно язык программирования R и интерфейс, который
позволяет удобно использовать этот язык.
Для установки языка R вам нужно будет перейти на сайт https://www.r-
project.org и нажать на кнопку "Download R".
Затем требуется выбрать необходимое облако. Вы можете кликнуть на
вашу страну или "0-Cloud" (главный сервер). Я обычно выбираю последнее.
Потом вам нужно будет выбрать вашу операционную систему
(в большинстве случаев это Windows) и нажать "Install R for the First Time".

5
Далее кликаете на кнопку "Download R" и устанавливаете скачанную
программу. При установке я советую выбрать язык программы "English" и
установить версию, соответствующую битности вашей операционной
системы (32-bit или 64-bit).
Чтобы установить интерфейс Rstudio, вам нужно пройти на сайт
https://www.rstudio.com/products/rstudio/download/#download и, пролистав
вниз, найти пункт "Installers for Supported Platforms". Здесь снова нужно
будет выбрать нужную вам ссылку, которая соответствует вашей
операционной системе.
Установите на компьютер скачанное приложение. Лучше всего сначала
установить именно R, а потом Rstudio, потому что последнее является
именно интерфейсом. Теоретически вы можете работать с несколькими
версиями R на одной Rstudio. Если система Windows давно не обновлялась,
могут возникнуть проблемы с установкой Rstudio. При возникновении
такой проблемы я советую найти на сайте пункт "Older version of RStudio"
и установить более старую версию интерфейса. Скорее всего, она будет
работать хорошо.

6
1.2. Работа с интерфейсом
Интерфейс в Rstudio можно поделить на четыре рабочих зоны:
Первая рабочая зона является
основной. В ней вы записываете
ваши скрипты и запускаете
программу. Все, что вы запишете,
можно сохранять в файлы
с расширением ".R".
Во второй зоне отображаются
созданные вами переменные и
загружаются данные с помощью
функции "Import Dataset". Здесь
также хранится история
запущенных вами команд во
вкладке "History".
Третья зона является зоной
работы с внешней информацией.
В ней можно работать с файлами во
вкладке "Files". Во вкладке "Plots"
отображаются все сделанные вами
графики, которые можно сохранить
на компьютер с помощью функции
"Export". В закладке "Packages"
отображаются все установленные
вами пакеты. Вы можете
подключать и отключать их, а
также загружать новые с помощью
функции "Install". Если нажать на
пакет, то мы перейдем во вкладку
"Help", где отображаются описания
всех функций. В официальных
пакетах R существует жесткое
правило по описанию функций.
Каждая функция должна быть
описана по четкому алгоритму, что упрощает работу с описанием функций.
Четвертая зона является ядром языка R, а три предшествующие зоны –
только дополнительным интерфейсом. Здесь обрабатываются все скрипты,
которые вы написали и запустили в зоне 1, создаются переменные,
отображающиеся в зоне 2, и строятся графики из зоны 3. Также в зоне 4
происходит вывод ваших результатов на экран.

7
1.3. Начальная алгебра
Чтобы начать работать в первой зоне, запустите RStudio и откройте
File -> New File -> R Script (Ctrl + Shift + N). Вы создадите скрипт, в котором
будете писать ваш код.
Введите в панели скрипта следующий код:
1 + 2
Нажмите на кнопку "Run" в правом верхнем углу редактора или
используйте сочетание клавиш Ctrl + Enter. Таким образом, ваша строка
кода отправляется на консоль (зона 4).
Как можно заметить, R включает в себя функции калькулятора. Вы
можете выполнять все арифметические вычисления, используя
соответствующий оператор (+ , - , * , / или ^ ). Но R имеет и другие
функции.
Так как R – это объектно-ориентированный язык, то все в нем является
объектом, начиная от функций и заканчивая таблицами. Чтобы создать
объект, можно использовать один из двух операторов присваивания “=” или
“<-”. Вы можете создать переменную с именем a, которая будет равна 5.
Внесите в скрипт код и нажмите Ctrl + Enter напротив каждой строчки.
Введите в панели скрипта следующий код:
a = 5
a <-5
Обе эти строчки выполняют одну и ту же функцию: создают объект a.
Я советую использовать первый вариант, потому что он идентичен с
другими языками программирования и к нему проще привыкнуть. Второй
вариант является архаизмом – он использовался в первых версиях языка R.
Новая переменная должна появиться на панели переменных
(зона 2). Консоль, однако, не показала никаких результатов, потому что наш
код не содержал запроса вывода результатов. Внесите в скрипт следующий
код и нажмите Ctrl + Enter:
a
Вы увидите, чему равна переменная a. По факту такой вызов равносилен
использованию функции show(a).
1.4. Вектора
Переменная a является числом.
Чтобы создать вектор, можно использовать функцию c() для
объединения нескольких переменных в одну:

8
x = c(1, 3, 4, 2.7, 5)
x
В качестве переменных можно использовать не только числа, но и буквы
(слова). Главное отличие в использовании кавычек:
y = c("abc", "qwe")
y
Хотел бы заметить, что можно использовать как одинарные, так и
двойные кавычки. Главное, чтобы при использовании они совпадали. Какие
кавычки вы открываете, такие вы должны и закрывать.
Объект c() в данном случае является функцией, которая принимает
переменные определенного класса. Ключевым отличием переменных от
функций является то, что после названия функции всегда идут круглые
скобки (). В случае переменных после объекта не стоят скобки или стоят
квадратные [], о них мы поговорим позднее. Каждая функция в R очень
четко описана в стандартном формате. Чтобы посмотреть описание
функции (и некоторых встроенных баз данных) нужно использовать “?”.
?c
1.5. Классы
Ключевым отличием числовых и нечисловых векторов является то, что
для них применяются разные функции. Попробуйте использовать
следующий код:
x+1
y+1
На второй строке вы получите "Error in y + 1 : non-numeric argument to
binary operator", потому что к тексту нельзя добавить число. С текстом
работает другой набор функций. Поэтому в языках программирования
вводятся различные классы. Попробуйте использовать:
class(x)
class(y)
Вы видите, что классы различаются: "numeric" является числовым
классом, а "character" – текстовым. Также в R есть ряд других базовых
классов:
z=1:10
class(z)
w=c(T,F,TRUE,FALSE)
class(w)

9
Данные классы являются более вспомогательные: "integer" – класс
целых чисел, "logical" – класс переменных, обозначающих правду (T,TRUE)
или неправду (F,FALSE). В числовых выражениях это эквивалентно 1
(TRUE) и 0 (FALSE). Должен заметить, что написание T и TRUE является
эквивалентным, как и F и FALSE.
Чтобы работать с переменными внутри вектора, необходимо научиться
к ним обращаться. Здесь как раз и возникает необходимость в классах
"integer" и "logical". К переменным внутри вектора можно обращаться с
помощью ввода номера нужных наблюдений в квадратные скобки после
вектора. Номер должен быть целым числом.
Введите в панели скрипта следующий код:
x[1]
x[3:5]
x[c(3,5)]
Если перед номерами наблюдений поставить знак минус (“-”), то будут
выбраны все наблюдения, за исключением перечисленных (исключение
наблюдений).
Введите в панели скрипта следующий код:
x[-1]
x[-(3:5)]
x[-c(3,5)]
Или можно рассмотреть только те части вектора, которые соответствуют
какому-либо ограничению на значения ("logical"):
x[x>3]
При этом само ограничение выглядит следующим образом:
x>3
class(x>3)
Нужно заметить, что существует разные логические операторы:
> – больше;
>= – больше или равно;
< – меньше ;
<= – меньше или равно;
== – идентично (элементы одинаковы);
!= – не равны (элементы не одинаковы).
Ограничения могут быть сделаны любым вектором "logical", который
может быть и не связан с самой переменной напрямую. Желательно, чтобы
длинна вектора "logical" совпадала с длинной вектора, на котором
используется ограничение:

10
x1=c(4,3,6,8,10)
a=x1>4
a
x[a]
1.6. Матрицы
Для генерации длинного вектора можно использовать функцию array,
где переменная dim будет обозначать длину вектора:
v=array(1,dim=20)
v
Чтобы сгенерировать более сложные элементы, например, матрицы,
необходимо указывать в dim не одну переменную, а несколько. Для примера
создадим из вектора от 1 до 20 матрицу 4 на 5:
m=array(1:20,dim=c(4,5))
m
class(m)
В случае работы с матрицами возникает необходимость обращаться
к нескольким переменным (строкам и столбцам). Ограничения в данном
случае идут в квадратных скобках через запятую. Сначала для строк, потом
для столбцов. Общий вид ограничений точно такой же, как в случае вектора.
Попробуйте выполнить следующие примеры:
m[,2:4]
m[2,]
m[2,4]
m[2,m[4,]>5]
m[m[,2]<10,2]
Кроме того, у матриц есть параметры имен строк и столбцов, которые
можно задать для большего удобства их использования:
rownames(m)=c('a','b','c','d')
m
colnames(m)=c('a','b','c','d','e')
m
1.7. Сохранение и загрузка данных
В R можно сохранять данные в разных форматах, но внутренним
форматом данных языка R является .RData. Для сохранения данных в этом
формате с целью последующего использования можно использовать
функцию save:
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
