欢迎光临散文网 会员登陆 & 注册

R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上

2023-01-05 16:50 作者:拓端tecdat  | 我要投稿

全文链接: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))  #指标一:logReturnrets=diff(data$close)/data$close[-length(data$close)]  #指标二:Daily Returns,我们选择Daily Returnslibrary(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模型

{  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 Carlosummary(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),

最受欢迎的见解

1.R语言对S&P500股票指数进行ARIMA + GARCH交易策略

2.R语言改进的股票配对交易策略分析SPY—TLT组合和中国股市投资组合

3.R语言时间序列:ARIMA GARCH模型的交易策略在外汇市场预测应用

4.TMA三均线期指高频交易策略的R语言实现

5.r语言多均线量化策略回测比较

6.用R语言实现神经网络预测股票实例

7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.R语言如何做马尔科夫转换模型markov switching model

9.matlab使用Copula仿真优化市场风险


R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上的评论 (共 条)

分享到微博请遵守国家法律