Upcoming SlideShare
×

# Seminar PSU 09.04.2013 - 10.04.2013 MiFIT, Arbuzov Vyacheslav

4,166 views

Published on

Published in: Education, Technology
0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total views
4,166
On SlideShare
0
From Embeds
0
Number of Embeds
3,106
Actions
Shares
0
8
0
Likes
0
Embeds 0
No embeds

No notes for slide

### Seminar PSU 09.04.2013 - 10.04.2013 MiFIT, Arbuzov Vyacheslav

1. 1. Using R in financial modeling Арбузов Вячеслав arbuzov@prognoz.ruPerm State National ResearchUniversity
2. 2. Basic knowledgement about R
3. 3. R console 3
4. 4. CodingSimple Mathematical functions in Rcalculation 4+3 5-1 4*6 10/2 2^10 9%%2 9%/%2 abs(-1) exp(1) sqrt(25) sin(1) pi cos(pi) sign(-106) log(1)
5. 5. Coding x<-1:10
6. 6. CodingUseful commands to create a vector assignment operator 1:10 <- or -> seq(1,10) x<-10 rep(1,10) 10->X working with vectors case sensitive A<-1:10 X B<-c(2,4,8) x A*B A>B R is a case sensitive language. FOO, Foo, and foo are three different objects!
7. 7. Coding Matrix Matrix Operations y <- matrix(nrow=2,ncol=2) x %*% y y[1,1] <- 1 x* y y[2,1] <- 2 3*y y[1,2] <- 3 x+y y[2,2] <- 4 x+3 x <- matrix(1:4, 2, 2) x[,2] x[1,] rbind(x,y)->z cbind(x,y) z[1:2,] A matrix is a vector z[z[,1]>1,] with two additional z[which(z[,1]>1),1] attributes: the number of rows and the number of columns
8. 8. Coding Data FrameList kids <- c("Jack","Jill")j <- list(name="Joe", salary=55000, union=T) ages <- c(12,10)j\$salary d <- data.frame(kids,ages)j[["salary"]] d[1,]j[[2]] d[,1]j\$name [2]<-”Poll” d[[1]]j\$salary[2]<-10000j\$union [2]<-”F” Arrays my.array <- array(1:24, dim=c(3,4,2)) In contrast to a vector, in which all elements must be of the same a data frame is like a mode, R’s list matrix, with a two-dimensional rows- structure can andcolumns combine objects of structure. However, it differs from different a matrix in that each column may have a types. different mode.
9. 9. Coding Loops while for x <- c(5,12,13) i <- 1 for (n in x) print(n^2) while (i <= 10) i <- i+4 for (i in 1:10) i <- 1 { while (i <= 10) x<-i*3 { cos(x)->x x<-i*3 print(x) cos(x)->x } print(c(x,i)) i <- i+1 } if-else i<-3 if (i == 4) x <- 1 else x <- 3
10. 10. Import data Import from text files or csv mydata <- read.table("d:/my.data.txt", header=TRUE, sep=",") Import from Excel library(xlsx) mydata<-read.xlsx("d:/my.data.xlsx",1) Exporting Data write.table(mydata, "c:/mydata.txt", sep="t") write.xlsx(mydata, "c:/mydata.xls")
11. 11. Basic Graphs Creating a Graph Bar Plot attach(mtcars) counts <- table(mtcars\$gear) plot(wt, mpg) barplot(counts, main="Car Distribution", abline(lm(mpg~wt)) xlab="Number of Gears") title("Regression of MPG on Weight") Pie Charts Boxplot slices <- c(10, 12,4, 16, 8) boxplot(mpg~cyl,data=mtcars, mai lbls <- c("US", "UK", "Australia", n="Car Milage Data", "Germany", "France") xlab="Number of Cylinders", pie(slices, labels = lbls, main="Pie Chart of ylab="Miles Per Gallon") Countries")
13. 13. Select data from matrix 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),] Operators and & or |
14. 14. Distributions Basic distributions in RBeta ?beta d – densityBinomial ?binom q – quantileCauchy ?cauchy r – randomChi-squared ?chisqExponential ?expF ?fGamma ?gammaGeometric ?geomHypergeometric ?hyperLog-normal ?lnormMultinomial ?multinomNegative binomial ?nbinomNormal ?normPoisson ?poisStudents t ?tUniform ?unifWeibull ?weibull
15. 15. Distributions Plot density of chosen distribution… x <- seq(-4, 4, length=100) dx <- d?????(x) plot(x, hx, type=“l”) Generate random variables of chosen distribution … x<-rnorm(1000)
16. 16. Distributions What is this distribution ? hist (?) density (?) ?
17. 17. Estimation of parameters Let’s estimate parameters of chosen distribution…. library(MASS) fitdistr(x,"normal") params<-fitdistr(x,"normal")\$estimate Compare theoretical and empirical distributions… hist(x, freq = FALSE,ylim=c(0,0.4)) curve(dnorm(x, params[1], params[2]), col = 2, add = TRUE)
18. 18. Correlations y<-rnorm(1000) cor(x,y) cor(x,y, ,method = ?????) acf(y)
19. 19. Linear least-squares method x<-seq(0,10,length=1000) y<-1+2*x+sin(x)*rnorm(1000,0,2) plot(x,y) How to estimate this parameters? lm(y ~ x) summary(lm(y ~ x)) abline(lm(y ~ x),col="red",lwd=3)
20. 20. Nonlinear least-squares method x<-seq(0,10,length=1000) y<-2*sin(3*x)+rnorm(1000,0,0.8) How to estimate this parameters? help(nls) nls(y ~ A*sin(B*x)) nls(y ~ A*sin(B*x),start=list(A=1.8,B=3.1))
21. 21. Advanced graphics Add few diagrams to graph par(mfrow=c(2,2)) plot(rnorm(100),rbeta(100,12,1)) Add legend to graph legend("topright", inset=.05, title="legend", c("4","6","8"), horiz=TRUE)
22. 22. Package lattice library(lattice)bwplot(sign(rnorm(30))~rnorm(30)|runif(3)) cloud(y~x*y)xyplot(rnorm(100)~rnorm(100)|rnorm(4)) densityplot(rnorm(4))
23. 23. Package ggplot2 library(ggplot2) qplot(rnorm(100)) qplot(rnorm(100),geom=density) qplot(rnorm(100),rnorm(100),qplot(rnorm(100),rnorm(100)) size=sign(rnorm(100))+1)
24. 24. Download Data Package quantmod Package rusquantgetSymbols("GOOG",src="yahoo", getSymbols("SPFB.RTS", from="2011-01-from = "2007-01-01“, to = 01", src="Finam“, period="hour" ,Sys.Date()) auto.assign=FALSE) 1min, 5min, 10min, 15min,getSymbols("USD/EUR",src="oanda") 30min, hour, day, week, month
25. 25. Working with package quantmodData visualization Add technical indicatorsbarChart(AAPL)candleChart(AAPL,multi.col=TRUE,theme="white") addMACD()chartSeries(AAPL,up.col=white,dn.col=blue) addBBands()Select data Data managementAAPL[2007] to.weekly(AAPL)AAPL[2007-03/2007]AAPL[/2007] to.monthly(AAPL)AAPL[2007-01-03] dailyReturn(AAPL) weeklyReturn(AAPL) monthlyReturn(AAPL)
26. 26. Load Data from DatabasePackage RODBClibrary(RODBC)odbcDriverConnect(“”)channel <- odbcConnect("psu_schs",“student","Qwerty1")sqlQuery(channel, “select * from LPPL_MODELS”)
27. 27. Using package RMiFITlibrary(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
28. 28. Practice
29. 29. Practice № 1. Working with data TASK: a. Download Data of your instrument1. AFLT b. Plot price2. GAZP c. Add technical indicators3. RTKM d. Calculate price returns4. ROSN5. SBER6. SBERP7. HYDR8. LKOH Commands to help :9. VTBR barChart(AAPL)10. GMKN chartSeries(AAPL,up.col=white,dn.col=blue)11. SIBN AAPL[2007-03/2007]12. PLZL addMACD()13. MTSS dailyReturn(AAPL)14. CHMF15. SNGS
30. 30. Practice № 2. Distribution of price returns1. AFLT2. GAZP TASK :3. RTKM a. Download Data of your instrument4. ROSN b. Calculate returns of close prices5. SBER c. Plot density of distribution6. SBERP d. Estimate parameters of distribution7. HYDR e. Plot in one graph empirical and theoretical8. LKOH distributions9. VTBR10. GMKN11. SIBN Commands to help :12. PLZL13. MTSS getSymbols("AFLT",14. CHMF src="Finam", period="day" , auto.assign=FALSE)15. SNGS library(MASS) fitdistr(x,"normal") hist(x) density(x) curve(dnorm(x, params[1], params[2]), col = 2, add = TRUE)
31. 31. Practice № 3. Estimation of correlation1. AFLT2. GAZP TASK :3. RTKM a. Download Index Data (ticker: “MICEX”)4. ROSN b. Download Data of your instrument5. SBER c. Calculate returns of close prices6. SBERP d. Calculate correlation of returns7. HYDR e. Calculate correlation of returns in 2012 year8. LKOH f. Calculate correlation of returns in 2008 year9. VTBR g. Calculate autocorrelation function of returns10. GMKN11. SIBN Commands to help :12. PLZL13. MTSS getSymbols(" MICEX ",14. CHMF src="Finam", period="day" , auto.assign=FALSE)15. SNGS AAPL[2007] AAPL[2007-03/2007] AAPL[/2007] AAPL[2007-01-03]
32. 32. Practice № 4. Volatility estimation1. AFLT2. GAZP TASK :3. RTKM a. Download Data of your instrument4. ROSN b. Calculate returns of close prices5. SBER c. Plot clusterization of volatility6. SBERP d. Estimate model garch7. HYDR e. garchFit(data=x) @sigma.t8. LKOH9. VTBR10. GMKN11. SIBN Commands to help :12. PLZL13. MTSS AAPL[2007]14. CHMF AAPL[2007-03/2007]15. SNGS AAPL[/2007] AAPL[2007-01-03]
33. 33. Practice № 5.Estimation of long memory of order flow1. AFLT2. GAZP TASK :3. RTKM a. Download order data of your instrument4. ROSN b. Calculate long memory of limit orders, cancellations5. SBER6. SBERP7. HYDR8. LKOH9. VTBR10. GMKN11. SIBN Commands to help :12. PLZL13. MTSS help (getFinData)14. CHMF15. SNGS
34. 34. The practical task № 6. Calculation of VaR1. AFLT2. GAZP TASK :3. RTKM a. Download Data of your instrument4. ROSN b. Calculate returns of close prices5. SBER c. Calculate historical VaR6. SBERP d. Calculate parametric VaR7. HYDR e. library(PerformanceAnalytics)8. LKOH f. help(VaR)9. VTBR10. GMKN11. SIBN Commands to help :12. PLZL13. MTSS quantile(x,0.95, na.rm=TRUE)14. CHMF15. SNGS AAPL[2007] AAPL[2007-03/2007] AAPL[/2007] AAPL[2007-01-03]
35. 35. The practical task № 7. Estimate LPPL modelTASK :a. Download Index Data(ticker: “MICEX”) from 2001 to 2009b. Estimate parameters of model LPPLMODEL LPPL:Commands to help :help(nsl)
36. 36. Вопросы?arbuzov@prognoz.ru