R语言中的马尔科夫机制转换(Markov regime switching)模型
时间:2022-07-22
本文章向大家介绍R语言中的马尔科夫机制转换(Markov regime switching)模型,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文链接:http://tecdat.cn/?p=12187
金融分析师通常关心检测市场何时“发生变化”:几个月或至几年内市场的典型行为可以立即转变为非常不同的行为。投资者希望及时发现这些变化,以便可以相应地调整其策略,但是这样做可能很困难。
RHmm从CRAN不再可用,因此我想使用其他软件包复制功能实现马尔科夫机制转换(Markov regime switching)模型从而对典型的市场行为进行预测,并且增加模型中对参数的线性约束功能。
library(SIT)load.packages('quantmod') # find regimes load.packages('RHmm', repos ='http://R-Forge.R-project.org') y=returns ResFit = HMMFit(y, nStates=2) VitPath = viterbi(ResFit, y)
DimObs = 1
matplot(fb$Gamma, type='l', main='Smoothed Probabilities', ylab='Probability') legend(x='topright', c('State1','State2'), fill=1:2, bty='n')
fm2 = fit(mod, verbose = FALSE)
使用logLik在迭代69处收敛:125.6168
probs = posterior(fm2) layout(1:2) plot(probs$state, type='s', main='Implied States', xlab='', ylab='State') matplot(probs[,-1], type='l', main='Probabilities', ylab='Probability') legend(x='topright', c('State1','State2'), fill=1:2, bty='n')
#***************************************************************** # Add some data and see if the model is able to identify the regimes #****************************************************************** bear2 = rnorm( 100, -0.01, 0.20 ) bull3 = rnorm( 100, 0.10, 0.10 ) bear3 = rnorm( 100, -0.01, 0.25 ) true.states = c(true.states, rep(2,100),rep(1,100),rep(2,100)) y = c( bull1, bear, bull2, bear2, bull3, bear3 )
DimObs = 1
plota(data, type='h', x.highlight=T) plota.legend('Returns + Detected Regimes')
#*****************************************************************# Load historical prices#****************************************************************** data = env()getSymbols('SPY', src = 'yahoo', from = '1970-01-01', env = data, auto.assign = T)price = Cl(data$SPY) open = Op(data$SPY)ret = diff(log(price)) ret = log(price) - log(open)atr = ATR(HLC(data$SPY))[,'atr']fm2 = fit(mod, verbose = FALSE)
使用logLik在迭代30处收敛:18358.98
print(summary(fm2))
Initial state probabilties model pr1 pr2 pr3 pr4 0 0 1 0Transition matrix toS1 toS2 toS3 toS4 fromS1 9.821940e-01 1.629595e-02 1.510069e-03 8.514403e-45 fromS2 1.167011e-02 9.790209e-01 8.775478e-68 9.308946e-03 fromS3 3.266616e-03 8.586650e-47 9.967334e-01 1.350529e-69 fromS4 3.608394e-65 1.047516e-02 1.922545e-130 9.895248e-01Response parameters Resp 1 : gaussian Resp 2 : gaussian Re1.(Intercept) Re1.sd Re2.(Intercept) Re2.sd St1 2.897594e-04 0.006285514 1.1647547 0.1181514 St2 -6.980187e-05 0.008186433 1.6554049 0.1871963 St3 2.134584e-04 0.005694483 0.4537498 0.1564576 St4 -4.459161e-04 0.015419207 2.7558362 0.7297283 Re1.(Intercept) Re1.sd Re2.(Intercept) Re2.sdSt1 0.000289759401378951 0.00628551404616354 1.16475474419891 0.118151350440916St2 -6.98018749098021e-05 0.00818643307634358 1.65540488736983 0.187196307284941St3 0.000213458358141314 0.00569448330115608 0.453749781945066 0.156457606460757St4 -0.00044591612667264 0.0154192070819596 2.75583620018895 0.72972830143278
probs = posterior(fm2)print(head(probs))
rownames(x) state S1 S2 S3 S41 3 0 0 1 02 3 0 0 1 03 3 0 0 1 04 3 0 0 1 05 3 0 0 1 06 3 0 0 1 0
layout(1:3)plota(temp, type='l', col='darkred') plota.legend('Market Regimes', 'darkred')
layout(1:4)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring编译源代码解决spring-core缺少cglib和objenesis的jar包的办法
- 尤大 3 天前发在 GitHub 上的 vue-lit 是啥?
- CSS3旋转实例学习(附3D旋转实例)
- 学会23个linux常用命令,不做前端切图仔~
- Python新手之pycharm调试指南
- 【设计模式系列】行为型之状态模式
- PHP运行模式
- 马上2021年了线性表你还不知道原理?给老王整的明明白白
- 分治-芯片测试问题
- 你说啥什么?注解你还不会?
- Mybatis系列第五讲 Mapper接口多种方式传参详解、原理、源码解析
- Mybatis系列第十讲 动态SQL,这么多种你都会?
- 3D图形学线代基础
- Splash抓取jd
- codeforces 1395C(暴力枚举)