首页 > 编程语言 >拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数

时间:2022-11-10 12:00:51浏览次数:49  
标签:plot PMMH MCMC 模型 Metropolis SV length dnorm 后验

在这个例子中,我们考虑随机波动率模型 SV0 的应用,例如在金融领域。

统计模型

随机波动率模型定义如下

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_直方图

并为

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_数据_02

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_数据_03

其中 yt 是因变量,xt 是 yt 的未观察到的对数波动率。N(m,σ2) 表示均值 m 和方差 σ2 的正态分布。

α、β 和 σ 是需要估计的未知参数。

BUGS语言统计模型

文件内容 ​​'sv.bug'​​:

1.  moelfle = 'sv.bug' # BUGS模型文件名
2. cat(readLies(moelfle ), sep = "\n")
3. # 随机波动率模型SV_0
4. # 用于随机波动率模型
5. var y[t_max], x[t_max], prec_y[t_max]
6.
7.
8. model
9. {
10. alha ~ dnorm(0,10000)
11. logteta ~ dnorm(0,.1)
12. bea <- ilogit(loit_ta)
13. lg_sima ~ dnorm(0, 1)
14. sia <- exp(log_sigma)
15.
16. x[1] ~ dnorm(0, 1/sma^2)
17. pr_y[1] <- exp(-x[1])
18. y[1] ~ dnorm(0, prec_y[1])
19. for (t in 2:t_max)
20. {
21. x[t] ~ dnorm(aa + eta*(t-1]-alha, 1/ia^2)
22. pr_y[t] <- exp(-x[t])
23. y[t] ~ dnorm(0, prec_y[t])
24. }

设置

设置随机数生成器种子以实现可重复性

set.seed(0)

加载模型并加载或模拟数据

1.  sample_data = TRUE # 模拟数据或SP500数据
2. t_max = 100
3.
4. if (!sampe_ata) {
5. # 加载数据 tab = read.csv('SP500.csv')
6. y = diff(log(rev(tab$ose)))
7. SP5ate_str = revtab$te[-1])
8.
9. ind = 1:t_max
10. y = y[ind]
11. SP500_dae_r = SP0dae_tr[ind]
12. SP500_e_num = as.Date(SP500_dtetr)

模型参数

1. 
1. if (!smle_dta) {
2. dat = list(t_ma=ax, y=y)
3. } else {
4. sigrue = .4; alpa_rue = 0; bettrue=.99;
5. dat = list(t_mx=_mx, sigm_tue=simarue,
6. alpatrue=alhatrue, b1. et_tue=e_true)
2. }

如果模拟数据,编译BUGS模型和样本数据

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_数据_04

data = mdl$da()

绘制数据

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_r语言_05

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_数据_06

对数收益率

Biips粒子边际Metropolis-Hastings

我们现在运行Biips粒子边际Metropolis-Hastings (Particle Marginal Metropolis-Hastings),以获得参数 α、β 和 σ 以及变量 x 的后验 MCMC 样本。

PMMH的参数

  1.  n_brn = 5000 # 预烧/适应迭代的数量
  2.  n_ir = 10000 #预烧后的迭代次数
  3.  thn = 5 #对MCMC输出进行稀释
  4.  n_art = 50 # 用于SMC的nb个粒子
  5.  para_nmes = c('apha', 'loit_bta', 'logsgma') # 用MCMC更新的变量名称(其他变量用SMC更新)。
  6.  latetnams = c('x') # 用SMC更新的、需要监测的变量名称

初始化PMMH

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_数据_07

运行 PMMH

update(b_pmh, n_bun, _rt) #预烧和拟合迭代

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_r语言_08

samples(oj_mh, ter, n_art, thin=hn) # 采样

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_直方图_09

汇总统计

summary(otmmh, prob=c(.025, .975))

计算核密度估计

density(out_mh)

参数的后验均值和置信区间

  1.  for (k in 1:length(pram_names)) {
  2.  suparam = su_pmm[[pam_as[k]]]
  3.  cat(param$q)
  4.  }

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_r语言_10

参数的MCMC样本的踪迹


1.  if (amldata)
2. para_tue = c(lp_tue, log(dt$bea_rue/(-dta$eatru)), log(smtue))
3. )
4.
5. for (k in 1:length(param_aes)) {
6. smps_pm = tmmh[[paranesk]]
7. plot(samlespram[1,]

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_数据_11

PMMH:跟踪样本参数

参数后验的直方图和 KDE 估计


1.  for (k in 1:length(paramns)) {
2. samps_aram = out_mmh[[pramnaes[k]]]
3. hist(sple_param)
4. if (sample_data)
5. points(parm_true)
6. }

拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_r语言_12

PMMH:直方图后验参数

    1.  for (k in 1:length(parm) {
    2. kd_pram =kde_mm[[paramames[k]]]
    3. plot(kd_arm, col'blue
    4. if (smpldata)
    5. points(ar_true[k])
    6. }

    拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_数据_13

    PMMH:KDE 估计后验参数

    x 的后均值和分位数


    1.  x_m_mean = x$mean
    2. x_p_quant =x$quant
    3. plot(xx, yy)
    4. polygon(xx, yy)
    5. lines(1:t_max, x_p_man)
    6. if (ame_at) {
    7. lines(1:t_ax, x_true)
    8.
    9. } else
    10. legend(
    11. bt='n)

    拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_数据_14

    PMMH:后验均值和分位数

    x 的 MCMC 样本的踪迹


    1.  par(mfrow=c(2,2))
    2. for (k in 1:length) {
    3. tk = ie_inex[k]
    4.
    5. if (sample_data)
    6. points(0, dtax_t
    7. }
    8. if (sml_aa) {
    9. plot(0
    10. legend('center')
    11. }
    12.

    拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_r语言_15

    PMMH:跟踪样本 x

    x 后验的直方图和核密度估计


    1.  par(mfow=c(2,2))
    2. for (k in 1:length(tie_dex)) {
    3. tk = tmnex[k]
    4. hist(ot_m$x[tk,]
    5. main=aste(t=', t, se='')
    6. if (sample_data)
    7. points(ata$x_re[t],
    8. }
    9. if (saml_dta) {
    10. plot(0, type='n', bty='n', x
    11. legend('center
    12. bty='n')
    13.
    14. }

    拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_直方图_16

    PMMH:后边际直方图

    1.  par(mfrow=c(2,2))
    2. for (k in 1:length(idx)) {
    3. tk =m_dx[k]
    4. plot(kmmk]] if (alata)
    5. point(dat_r[k], 0)
    6. }
    7. if (aldt) {
    8. plot(0, type='n', bty='n', x, pt.bg=c(4,NA)')
    9. }
    10.

    拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_r语言_17


    拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数_r语言_18



    标签:plot,PMMH,MCMC,模型,Metropolis,SV,length,dnorm,后验
    From: https://blog.51cto.com/u_14293657/5840247

    相关文章

    • 拓端tecdat|R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型
      简介世界卫生组织估计全世界每年有1200万人死于心脏病。在美国和其他发达国家,一半的死亡是由于心血管疾病。心血管疾病的早期预后可以帮助决定改变高危患者的生活方式,从......
    • Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法Python用MCM
      相关视频:马尔可夫链原理可视化解释与R语言区制转换Markovregimeswitching实例马尔可夫链原理可视化解释与R语言区制转换Markov regime switching实例,时长07:25相关视频......
    • R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
      近似​​贝叶斯​​计算和近似技术基于随机模拟模型中的样本计算近似似然值,在过​​去几年中引起了很多关注,因为它们有望为任何随机过程提供通用统计技术。一位同事向我询问......
    • 如何在VS2022中添加SVN插件
      1、现在官网下载适合你VS版本的SVN插件https://www.visualsvn.com/visualsvn/download/2、关闭打开的VS,并运行刚下载的SVN插件3、再次打开VS2022并选择VisualSVN  ......
    • 用SVG解决移动端1px的技巧
      今天介绍一个通过svg来实现移动端1px效果的小技巧SVG的描边方式通常我们在使用一些设计软件时,描边会有三种选择,分别是内描边、居中描边和外描边,比如photoshop那么,svg中的......
    • SVM多分类--PYTHON
      importmatplotlib.pyplotaspltfromsklearnimportsvmfromsklearn.model_selectionimporttrain_test_splitimportnumpyasnpimportpandasaspdfromsklearn.svm......
    • 通过css 改变通过img标签引入的svg颜色
      前言修改svg颜色,一般直接修改文件的svg的fill属性就可以了,可以直接改svg属性,也可以通过css修改,但是前端一般都是通过img标签直接引入的svg图片,这样不管是从后期维护还是代......
    • 关于SVN状态图标不显示的解决办法
      一、参考网址地址:https://blog.csdn.net/qq_33521184/article/details/126562881二、详情:方法一:通过svn的设置来解决右键->TortoiseSVN->setting->IconOverlays->Sta......
    • 盘点一个Pandas写入csv文件的小问题
      大家好,我是皮皮。一、前言前几天在Python铂金交流群【红色基因代代传】问了一个、Pandas处理的问题,提问截图如下:原始数据如下图所示:下面是他自己写的代码:withopen("r......
    • 1、SVC的核函数
      1、解释分类模型。2、导包fromsklearn.svmimportSVC3、核函数介绍3.1、linear:线性核函数,是在数据线性可分的情况下使用的,运算速度快,效果好。不足在于它不能......