R語言隨機波動模型SV:馬爾可夫蒙特卡羅法MCMC、正則化廣義矩估計|附代碼數據

2023-05-08     tecdat拓端

原標題:R語言隨機波動模型SV:馬爾可夫蒙特卡羅法MCMC、正則化廣義矩估計|附代碼數據

全文連結: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模型

文章來源: https://twgreatdaily.com/zh-cn/78157ac3f1864959155968798b2b0a6a.html