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

简介: 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),

相关文章
|
21天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
6月前
|
机器学习/深度学习 数据挖掘 计算机视觉
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
|
6月前
|
存储 机器学习/深度学习 算法
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
|
6月前
|
数据采集 数据挖掘 测试技术
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
|
6月前
|
数据可视化
R语言汇率、股价指数与GARCH模型分析:格兰杰因果检验、脉冲响应与预测可视化
R语言汇率、股价指数与GARCH模型分析:格兰杰因果检验、脉冲响应与预测可视化
|
6月前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言神经网络模型金融应用预测上证指数时间序列可视化
R语言神经网络模型金融应用预测上证指数时间序列可视化
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为

热门文章

最新文章