全文連結:http://tecdat.cn/?p=31162
最近我們被客戶要求撰寫關於SV模型的研究報告,包括一些圖形和統計輸出
本文做SV模型,選取馬爾可夫蒙特卡羅法(MCMC)、正則化廣義矩估計法和准最大似然估計法估計。
模擬SV模型的估計方法:
sim <- svsim(1000,mu=-9, phi = 0.97, sigma = 0.15)
print(sim)
summary(sim)
plot(sim)
繪製上證指數收益時間序列圖、散點圖、自相關圖與偏自相關圖
我們選取上證指數5分鐘高頻數據:
data=read.csv("上證指數-5min.csv",header=TRUE)
#open:開盤價 close:收盤價 vol:成交量 amount:成交額
head(data,5) #觀察數據的頭5行
tail(data,5) #觀察數據的最後5行
Close.ptd<-data$close
Close.rtd<-diff(log(Close.ptd)) #指標一:logReturn
rets=diff(data$close)/data$close[-length(data$close)] #指標二:Daily Returns,我們選擇Daily Returns
library(tseries)
adf.test(rets)
## 繪製上證指數收益時間序列圖、散點圖、自相關圖與偏自相關圖
Close.ptd.ts<-ts(Close.ptd,start=c(2005,1,4),freq=242)
plot(Close.ptd.ts, type="l",main="(a) 上證指數日收盤價序列圖",
acf(Close.rtd,main='',xlab='Lag',ylab='ACF',las=1)
title(main='(b) 上證指數收益率自相關檢驗',cex.main=0.95)
pacf(Close.rtd,main='',xlab='Lag',ylab='PACF',las=1)
title(main='(c) 上證指數收益率偏自相關檢驗',cex.main=0.95)
def.off
## Q-Q圖、經驗累積分布ecdf圖、密度圖、直方圖
qqnorm(Close.rtd,main="(a) 上證指數收益率Q-Q圖",cex.main=0.95,
xlab='理論分位數',ylab='樣本分位數')
qqline(Close.rtd)
#經驗累積分布ecdf圖
plot(ECD,lwd = 2,main="(b) 上證指數收益率累積分布函數圖",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) # 設定區間範圍
lines(x1,pnorm(x1,mean(Close.rtdC[1:10]),sd(Close.rtd[1:10])))
#密度圖
plot(D, main="(c) 上證指數核密度曲線圖 ",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("核密度","正態密度"),lty=c(1,2),cex=0.5)
#直方圖
hist(Close.rtd[1:100],xaxt='n',main='(d) 上證指數收益率直方圖',
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模型原理和Python對標普SP500股票指數預測|數據分享
左右滑動查看更多
01
02
03
04
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)
}
馬爾可夫鏈蒙特卡羅估計
該模型使用了Kastner和Fruhwirth-Schnatter所描述的算法。使用的R代碼是:
###Markov Chain Monte Carlo
summary(mcmc)
准最大似然估計
SV模型可以用QML方法在R中用許多不同的狀態空間和Kalman濾波包來估計。
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函數中定義矩條件,然後估計參數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),
點擊文末 「閱讀原文」
獲取全文完整代碼數據資料。
本文選自《R語言隨機波動模型SV:馬爾可夫蒙特卡羅法MCMC、正則化廣義矩估計和准最大似然估計上證指數收益時間序列》。
點擊標題查閱往期內容
HAR-RV-J與遞歸神經網絡(RNN)混合模型預測和交易大型股票指數的高頻波動率
Matlab馬爾可夫鏈蒙特卡羅法(MCMC)估計隨機波動率(SV,Stochastic Volatility) 模型
R語言隱馬爾可夫模型HMM連續序列重要性重抽樣CSIR估計隨機波動率模型SV分析股票收益率時間序列
馬爾可夫Markov區制轉移模型分析基金利率
馬爾可夫區制轉移模型Markov regime switching
時變馬爾可夫區制轉換MRS自回歸模型分析經濟時間序列
馬爾可夫轉換模型研究交通傷亡人數事故時間序列預測
如何實現馬爾可夫鏈蒙特卡羅MCMC模型、Metropolis算法?
Matlab用BUGS馬爾可夫區制轉換Markov switching隨機波動率模型、序列蒙特卡羅SMC、M H採樣分析時間序列
R語言BUGS序列蒙特卡羅SMC、馬爾可夫轉換隨機波動率SV模型、粒子濾波、Metropolis Hasting採樣時間序列分析
matlab用馬爾可夫鏈蒙特卡羅 (MCMC) 的Logistic邏輯回歸模型分析汽車實驗數據
stata馬爾可夫Markov區制轉移模型分析基金利率
PYTHON用時變馬爾可夫區制轉換(MRS)自回歸模型分析經濟時間序列
R語言使用馬爾可夫鏈對營銷中的渠道歸因建模
matlab實現MCMC的馬爾可夫轉換ARMA - GARCH模型估計
R語言隱馬爾可夫模型HMM識別不斷變化的股票市場條件
R語言中的隱馬爾可夫HMM模型實例
用機器學習識別不斷變化的股市狀況—隱馬爾科夫模型(HMM)
Matlab馬爾可夫鏈蒙特卡羅法(MCMC)估計隨機波動率(SV,Stochastic Volatility) 模型
MATLAB中的馬爾可夫區制轉移(Markov regime switching)模型
Matlab馬爾可夫區制轉換動態回歸模型估計GDP增長率
R語言馬爾可夫區制轉移模型Markov regime switching
stata馬爾可夫Markov區制轉移模型分析基金利率
R語言如何做馬爾可夫轉換模型markov switching model
R語言隱馬爾可夫模型HMM識別股市變化分析報告
R語言中實現馬爾可夫鏈蒙特卡羅MCMC模型