seminar psu 05.04.2013

Post on 06-May-2015

1.930 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Семинар по моделированию финансовых рынков, Пермь, 05.04.2013, Пермский государственный университет, Арбузов Вячеслав

TRANSCRIPT

Использование R для моделирования

финансовых рынков

Пермский государственный научно-исследовательский университет

Арбузов Вячеславarbuzov@prognoz.ru

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

Вопросы?

arbuzov@prognoz.ru

top related