R語言隨機(jī)波動(dòng)模型SV:馬爾可夫蒙特卡羅法MCMC、正則化廣義矩估計(jì)和準(zhǔn)最大似然估計(jì)上
全文鏈接:http://tecdat.cn/?p=31162
最近我們被客戶要求撰寫關(guān)于SV模型的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
本文做SV模型,選取馬爾可夫蒙特卡羅法(MCMC)、正則化廣義矩估計(jì)法和準(zhǔn)最大似然估計(jì)法估計(jì)。
模擬SV模型的估計(jì)方法:
sim <- svsim(1000,mu=-9, phi = 0.97, sigma = 0.15)print(sim)summary(sim)

plot(sim)

繪制上證指數(shù)收益時(shí)間序列圖、散點(diǎn)圖、自相關(guān)圖與偏自相關(guān)圖
我們選取上證指數(shù)5分鐘高頻數(shù)據(jù):
data=read.csv("上證指數(shù)-5min.csv",header=TRUE)#open:開盤價(jià) ?close:收盤價(jià) vol:成交量 amount:成交額head(data,5) ?#觀察數(shù)據(jù)的頭5行tail(data,5) ?#觀察數(shù)據(jù)的最后5行Close.ptd<-data$close
Close.rtd<-diff(log(Close.ptd)) ?#指標(biāo)一:logReturnrets=diff(data$close)/data$close[-length(data$close)] ?#指標(biāo)二:Daily Returns,我們選擇Daily Returnslibrary(tseries)
adf.test(rets)## 繪制上證指數(shù)收益時(shí)間序列圖、散點(diǎn)圖、自相關(guān)圖與偏自相關(guān)圖Close.ptd.ts<-ts(Close.ptd,start=c(2005,1,4),freq=242) ?
plot(Close.ptd.ts, type="l",main="(a) 上證指數(shù)日收盤價(jià)序列圖",
acf(Close.rtd,main='',xlab='Lag',ylab='ACF',las=1) ? ?
title(main='(b) 上證指數(shù)收益率自相關(guān)檢驗(yàn)',cex.main=0.95)
pacf(Close.rtd,main='',xlab='Lag',ylab='PACF',las=1) ? ? ? ? ? ? ?
title(main='(c) 上證指數(shù)收益率偏自相關(guān)檢驗(yàn)',cex.main=0.95)
def.off## Q-Q圖、經(jīng)驗(yàn)累積分布ecdf圖、密度圖、直方圖 qqnorm(Close.rtd,main="(a) 上證指數(shù)收益率Q-Q圖",cex.main=0.95, ? ? ? xlab='理論分位數(shù)',ylab='樣本分位數(shù)') ? ? ? ? ? ?
qqline(Close.rtd) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
#經(jīng)驗(yàn)累積分布ecdf圖plot(ECD,lwd = 2,main="(b) 上證指數(shù)收益率累積分布函數(shù)圖",cex.main=0.95,las=1)
xx <- unique(sort(c(seq(-3, 2, length=24), knots(ECD)))) ? ? ? ?
abline(v = knots(ECD), lty=2, col='gray70') ? ? ? ? ? ? ? ? ? ? ? ? ?
x1 <- c((-4):3) ? ? ? ? ? ? # 設(shè)定區(qū)間范圍lines(x1,pnorm(x1,mean(Close.rtdC[1:10]),sd(Close.rtd[1:10]))) ?#密度圖plot(D, main="(c) 上證指數(shù)核密度曲線圖 ",xlab="收益", ylab='密度', ? ? xlim = c(-7,7), ylim=c(0,0.5),cex.main=0.95) ? ? ?
polygon(D, col="gray", border="black") ? ? ? ? ? ? ? ?
curve(dnorm,lty = 2, add = TRUE) ? ? ? ? ? ? ? ? ? ? ? ?
lines(x2,dnorm(x2,mean=0,sd=1)) ? ? ?
abline(v=0,lty = 3) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
legend("topright", legend=c("核密度","正態(tài)密度"),lty=c(1,2),cex=0.5)#直方圖hist(Close.rtd[1:100],xaxt='n',main='(d) 上證指數(shù)收益率直方圖', ? ? xlab='收益/100',ylab='密度', freq=F,cex.main=0.95,las=1) ? ? ? ?
lines(x2,dnorm(x2,mean(Close.rtd[1:100]),sd(Close.rtd[1:100])))
axis(1,at=axTicks(1),labels = as.integer(axTicks(1))/100 ) ? ?



SV模型
{
?N <- length(logReturn)
?mu <- (1/N)*sum(logReturn) ?sqrt((1/N) * sum((logReturn - mu)^2))
}
?return=-1.5*log(h)-y^2/(2*h)-(log(h)-mu)^2/(2*sigma2)
}
馬爾可夫鏈蒙特卡羅估計(jì)
該模型使用了Kastner和Fruhwirth-Schnatter所描述的算法。使用的R代碼是:
###Markov Chain Monte Carlosummary(mcmc)

準(zhǔn)最大似然估計(jì)
SV模型可以用QML方法在R中用許多不同的狀態(tài)空間和Kalman濾波包來估計(jì)。
? a0=c(parm[1])
? P0=matrix(parm[3]^2/(1-parm[2]^2))
? dt=matrix(parm[1]*(1-parm[2]))
? ct=matrix(-1.27)
? Tt=matrix(parm[2])
? Zt=matrix(1)
? HHt=matrix(parm[3]^2)
? GGt=matrix(pi^2/2)
? ans<-fkf(a0=sp$a0,P0=sp$P0,dt=sp$dt,ct=sp$ct,Tt=sp$Tt,Zt=sp$Zt,HHt=sp$HHt,GG

正則化廣義矩陣
在R函數(shù)中定義矩條件,然后估計(jì)參數(shù)0。
moments <- c (??? m1 = sqrt(2/pi)*exp(mu/2 + sig2h/8),??? m2 = exp(mu +? sig2h/2 ) ,??? m3 = 2*sqrt ( 2/pi ) * exp( 3*mu/2 + 9*sig2h/8 ) ,
? ?gmm(g = sv.moments , x =rets , t0=c(mu=-10, phi=0.9,sigmaeta= 0.2),


最受歡迎的見解
1.R語言對(duì)S&P500股票指數(shù)進(jìn)行ARIMA + GARCH交易策略
2.R語言改進(jìn)的股票配對(duì)交易策略分析SPY—TLT組合和中國股市投資組合
3.R語言時(shí)間序列:ARIMA GARCH模型的交易策略在外匯市場預(yù)測應(yīng)用
4.TMA三均線期指高頻交易策略的R語言實(shí)現(xiàn)
5.r語言多均線量化策略回測比較
6.用R語言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實(shí)例
7.r語言預(yù)測波動(dòng)率的實(shí)現(xiàn):ARCH模型與HAR-RV模型
8.R語言如何做馬爾科夫轉(zhuǎn)換模型markov switching model
9.matlab使用Copula仿真優(yōu)化市場風(fēng)險(xiǎn)