2013-01-08 46 views
3

WolframAlpha的 可以基于历史的参数生成对数正态分布随机游动 6个月,1年,提前生成数正态随机游动

例如GSPC索引2岁: http://www.wolframalpha.com/input/?i=GSPC

我想知道如何在R中做到这一点,我会很乐意提供一些指导。

library(quantmod) 
getSymbols("^GSPC", from ="2000-01-01") 
+1

您的免费试用版已过期吗? http://demonstrations.wolfram.com/MarkovVolatilityRandomWalks/ –

+6

类似'oldsteps < - diff(log(oldata)); exp(cumsum(rnorm(n_days,mean(oldsteps),sd(oldsteps))))? –

+0

非常感谢您的帮助。我已经填写了下面的代码。 –

回答

2

我怎样才能改善这种允许
波动根据一个简单的马尔可夫链通过时间而改变?

library(ggplot2) 
library(quantmod) 
getSymbols("^GSPC", from ="2000-01-01") 

oldata <-GSPC[,6] 
oldata <-na.omit(oldata) 

lastprice <-tail(olddata,1) 
oldsteps <- tail(diff(log(oldata)),-1) 
head(oldsteps) 
n_days =100 
percent <- exp(cumsum(rnorm(n_days,mean(oldsteps), apply(oldsteps, 2, sd)))) 
path2 <- exp(cumsum(rnorm(n_days,mean(oldsteps), apply(oldsteps, 2, sd)))) 
path3 <- exp(cumsum(rnorm(n_days,mean(oldsteps), apply(oldsteps, 2, sd)))) 

paths <- data.frame(T=c(1:100),path1,path2,path3) 

plot1 <- ggplot(data=paths, aes(x=T,y=percent)) + geom_line() 
plot1 <- plot1+ geom_line(aes(x=T,y=path2))+ geom_line(aes(x=T,y=path3)) 
plot1 <- plot1+ ggtitle("pathways") 
plot1 
+0

你是否能够改善自从你发布以来你有什么?我正在尝试做同样的事情,并对您的解决方案非常感兴趣。 –