2013-01-08 69 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

你是否能夠改善自從你發佈以來你有什麼?我正在嘗試做同樣的事情,並對您的解決方案非常感興趣。 –