seminar psu 05.04.2013
DESCRIPTION
Семинар по моделированию финансовых рынков, Пермь, 05.04.2013, Пермский государственный университет, Арбузов ВячеславTRANSCRIPT
Использование R для моделирования
финансовых рынков
Пермский государственный научно-исследовательский университет
Арбузов Вячеслав[email protected]
05.04.2013
RISK LABЛаборатория финансовогомоделирования и управления рисками
Необходимые знания в R
Выборка данных из матриц
x <- matrix(0,50,2)
x[,1]
x[1,]
x[,1]<-rnorm(50)
x
x[1,]<-rnorm(2)
x
x <- matrix(rnorm(100),50,2)
x[which(x[,1]>0),]
Операторыи &или |
Основные распределения в R
Распределения
Beta ?beta
Binomial ?binom
Cauchy ?cauchy
Chi-squared ?chisq
Exponential ?exp
F ?f
Gamma ?gamma
Geometric ?geom
Hypergeometric ?hyper
Log-normal ?lnorm
Multinomial ?multinom
Negative binomial ?nbinom
Normal ?norm
Poisson ?pois
Student's t ?t
Uniform ?unif
Weibull ?weibull
d – densityq – quantiler – random
Распределения
Построим плотность выбранного распределения…
x <- seq(-4, 4, length=100)dx <- d?????(x)plot(x, hx, type=“l”)
Сгенерируем СВ выбранного распределения…
x<-rnorm(1000)
Распределения
Каким распределением описывается СВ?
hist (?)density (?)
?
Оценка параметров распределений
Оценим параметры выбранного
распределения….library(MASS)
params<-fitdistr(x,"normal")$estimate
fitdistr(x,"normal")
Сравним теоретическое и эмпирическое распределения
hist(x, freq = FALSE,ylim=c(0,0.4))
curve(dnorm(x, params[1], params[2]), col = 2, add = TRUE)
Корреляции
y<-rnorm(1000)
cor(x,y)
cor(x,y, ,method = ?????)
acf(y)
Нелинейный МНК
x<-seq(0,10,length=1000)
y<-2*sin(3*x)+rnorm(1000,0,0.8)
Как оценить параметры уравнения?
𝑦=𝛼 sin (𝛽 𝑥)
help(nls)
nls(y ~ A*sin(B*x))
nls(y ~ A*sin(B*x),start=list(A=1.8,B=3.1))
z<-rnorm(1,2,3)
Продвинутая графика
Размещение в одном окне нескольких графиков
par(mfrow=c(2,2))
plot(rnorm(100),rbeta(100,12,1))
Добавление легенды на график
legend("topright", inset=.05, title="legend", c("4","6","8"), horiz=TRUE)
Графика пакета lattice
library(lattice)
xyplot(rnorm(100)~rnorm(100)|rnorm(4)) densityplot(rnorm(4))
cloud(y~x*y)bwplot(sign(rnorm(30))~rnorm(30)|runif(3))
Графика пакета ggplot2
qplot(rnorm(100),geom='density') qplot(rnorm(100))
qplot(rnorm(100),rnorm(100))qplot(rnorm(100),rnorm(100),
size=sign(rnorm(100))+1)
library(ggplot2)
Загрузка данных
Package quantmod
getSymbols("GOOG",src="yahoo", from = "2007-01-01“, to = Sys.Date())
getSymbols("USD/EUR",src="oanda")
getSymbols("SPFB.RTS", from="2011-01-01", src="Finam“, period="hour" , auto.assign=FALSE)
1min, 5min, 10min, 15min, 30min, hour, day, week, month
Package rusquant
Работа с пакетом quantmod
barChart(AAPL)
candleChart(AAPL,multi.col=TRUE,theme="white")
chartSeries(AAPL,up.col='white',dn.col='blue')
Визуализация данных
addMACD()
addBBands()
Добавление технических индикаторов
to.weekly(AAPL)
to.monthly(AAPL) dailyReturn(AAPL)
weeklyReturn(AAPL)
monthlyReturn(AAPL)
Преобразование данных
Управление данными
AAPL['2007'] AAPL['2007-03/2007']AAPL['/2007']AAPL['2007-01-03']
Загрузка данных
Package RODBC
library(RODBC)
odbcDriverConnect(“”)channel <- odbcConnect("psu_schs",“student","Qwerty1")sqlQuery(channel, “select * from LPPL_MODELS”)
Использование пакета RMiFIT
library(RMiFIT )
getFinData(Symbols = "AFLT",period = “mins")
getFinData(Symbols = "TGKI",from = "2010-04-01", to = "2010-04-01",period = "deals")
getFinData(Symbols = "AFLT",from = "2012-12-14", to = "2012-12-14",src=“Finam” ,period = "tick")
getFinData(Symbols = "AFLT", from = "2012-12-04",period = "orders")
www.r-group.mifit.ru
Практические задания
Практическое задание № 1. Работа с данными
1. AFLT2. GAZP3. RTKM4. ROSN5. SBER6. SBERP7. HYDR8. LKOH9. VTBR10. GMKN11. SIBN12. PLZL13. MTSS14. CHMF15. SNGS
Команды в помощь:
ЗАДАНИЕ:a. Загрузить данные b. Построить графикиc. Добавить индикаторы на графикиd. Посчитать приросты ценe. Построить графики за 2008 год
barChart(AAPL)
chartSeries(AAPL,up.col='white',dn.col='blue')AAPL['2007-03/2007']
addMACD()
dailyReturn(AAPL)
Практическое задание № 2. Распределение приростов цен
1. AFLT2. GAZP3. RTKM4. ROSN5. SBER6. SBERP7. HYDR8. LKOH9. VTBR10. GMKN11. SIBN12. PLZL13. MTSS14. CHMF15. SNGS
Команды в помощь:
getSymbols("AFLT", src="Finam", period="day" , auto.assign=FALSE)
library(MASS)fitdistr(x,"normal")
hist(x)density(x)
curve(dnorm(x, params[1], params[2]), col = 2, add = TRUE)
ЗАДАНИЕ:a. Загрузить данные b. Построить приросты цен закрытияc. Построить плотность распределенияd. Оценить параметры выбранного
распределенияe. Построить на одном графике эмпирическое
и теоретическое распределения
Практическое задание № 3. Оценка корреляций
1. AFLT2. GAZP3. RTKM4. ROSN5. SBER6. SBERP7. HYDR8. LKOH9. VTBR10. GMKN11. SIBN12. PLZL13. MTSS14. CHMF15. SNGS
Команды в помощь:
getSymbols(" MICEX ", src="Finam", period="day" , auto.assign=FALSE)
AAPL['2007'] AAPL['2007-03/2007']AAPL['/2007']AAPL['2007-01-03']
ЗАДАНИЕ:a. Загрузить данные индекса ММВБ (MICEX)b. Загрузить данные выбранного инструментаc. Посчитать дневные приросты d. Найти корреляцию за весь периодe. Найти корреляцию за 2012 годf. Найти корреляцию за 2008 годg. Найти автокорреляцию приростов за
период с 1 января 2013 по 1 апреля 2013
Практическое задание № 4. Расчет VaR
1. AFLT2. GAZP3. RTKM4. ROSN5. SBER6. SBERP7. HYDR8. LKOH9. VTBR10. GMKN11. SIBN12. PLZL13. MTSS14. CHMF15. SNGS
Команды в помощь:
quantile(x,0.95, na.rm=TRUE)
AAPL['2007'] AAPL['2007-03/2007']AAPL['/2007']AAPL['2007-01-03']
ЗАДАНИЕ:a. Загрузить данные выбранного инструментаb. Посчитать дневные приросты c. Найти исторический VaR у инструментаd. Найти параметрический VaR у
инструментаe. library(PerformanceAnalytics)f. help(VaR)
Практическое задание № 5. Волатильность приростов
1. AFLT2. GAZP3. RTKM4. ROSN5. SBER6. SBERP7. HYDR8. LKOH9. VTBR10. GMKN11. SIBN12. PLZL13. MTSS14. CHMF15. SNGS
Команды в помощь:
AAPL['2007'] AAPL['2007-03/2007']AAPL['/2007']AAPL['2007-01-03']
ЗАДАНИЕ:a. Загрузить данные выбранного инструментаb. Посчитать дневные приросты c. Отобразить кластеризацию волатильностиd. Оценить модель garche. garchFit(data=x) @sigma.t
Практическое задание № 6. Оценка длинной памяти в потоке заявок
1. AFLT2. GAZP3. RTKM4. ROSN5. SBER6. SBERP7. HYDR8. LKOH9. VTBR10. GMKN11. SIBN12. PLZL13. MTSS14. CHMF15. SNGS
Команды в помощь:
help (getFinData)
ЗАДАНИЕ:a. Загрузить данные выбранного инструмента за
1 деньb. Посчитать длинную память в потоке заявок
Практическое задание № 7. Расчет модели LPPL
Команды в помощь:
help(nsl)
ЗАДАНИЕ:a. Загрузить данные индекса ММВБ c 2001 по
2009b. Оценить параметры модели LPPLc. Проделать оценку параметров для
различных «окон» и сохранить параметры модели
d. Отбросить «неправильные» параметрыМОДЕЛЬ LPPL:
+
Практическое задание № 8. Оптимизация портфеля
ЗАДАНИЕ:
a. Загрузить данные по следующим инструментам:
b. Построить график доходность - риск
c. Сформировать оптимальный портфель использую функцию portfolio.optim из пакета tseries
d. Проанализировать выбранный портфель
e. Оценить 10 дневный VaR у выбранного портфеля
1. AFLT2. GAZP3. RTKM4. ROSN5. SBER6. SBERP7. HYDR8. LKOH9. VTBR10. GMKN11. SIBN12. PLZL13. MTSS14. CHMF15. SNGS
Вопросы?