R语言中的马尔科夫机制转换(Markov regime switching)模型

科技   科技互联网   2024-07-30 17:40   浙江  

原文链接:http://tecdat.cn/?p=12187


金融分析师通常关心检测市场何时“发生变化”:几个月或至几年内市场的典型行为可以立即转变为非常不同的行为点击文末“阅读原文”获取完整代码数据


相关视频


投资者希望及时发现这些变化,以便可以相应地调整其策略,但是这样做可能很困难。

RHmm从CRAN不再可用,因此我想使用其他软件包复制功能实现马尔可夫区制转移(Markov regime switching)模型从而对典型的市场行为进行预测,并且增加模型中对参数的线性约束功能。

 

r


load.packages('quantmod')
y=returns
ResFit = HMM(y, nStates=2)
DimObs = 1

r

matplot(fb$Gamma, type='l', main='Smoothed Probabilities', ylab='Probability')
legend(x='topright', c('State1','State2'), fill=1:2, bty='n')

 

 


点击标题查阅往期内容


MATLAB中的马尔可夫区制转移(Markov regime switching)模型


左右滑动查看更多


01

02

03

04



r


fm2 = fit(mod, verbose = FALSE)

使用logLik在迭代69处收敛:125.6168

 

r

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')

 

r

#*****************************************************************
# #添加一些数据,看看模型是否能够识别状态 #******************************************************************
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

r


plot(data, type='h', x.highlight=T)
plota.legend('Returns + Detected Regimes')

 

r

#*****************************************************************
# 加载历史价格
#******************************************************************
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

r

print(summary(fm2))

 

Initial state probabilties model pr1 pr2 pr3 pr4 0 0 1 0

Transition 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-01

Response 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.sd
St1 0.000289759401378951 0.00628551404616354 1.16475474419891 0.118151350440916
St2 -6.98018749098021e-05 0.00818643307634358 1.65540488736983 0.187196307284941
St3 0.000213458358141314 0.00569448330115608 0.453749781945066 0.156457606460757
St4 -0.00044591612667264 0.0154192070819596 2.75583620018895 0.72972830143278

 

r

probs = posterior(fm2)

print(head(probs))
rownames(x)	state	S1	S2	S3	S4
1 3 0 0 1 0
2 3 0 0 1 0
3 3 0 0 1 0
4 3 0 0 1 0
5 3 0 0 1 0
6 3 0 0 1 0

 

 

r

layout(1:3)
plota(temp, type='l', col='darkred')
plota.legend('Market Regimes', 'darkred')

 

r

layout(1:4)



本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群!



点击文末“阅读原文”

获取全文完整代码数据资料


本文选自《R语言中的马尔科夫机制转换(Markov regime switching)模型》。




点击标题查阅往期内容

R语言连续时间马尔科夫链模拟案例 Markov Chains
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
R语言BUGS/JAGS贝叶斯分析: 马尔科夫链蒙特卡洛方法(MCMC)采样
MATLAB随机波动率SV、GARCH用MCMC马尔可夫链蒙特卡罗方法分析汇率时间序列
R语言如何做马尔可夫转换模型markov switching model
matlab用马尔可夫链蒙特卡罗 (MCMC) 的Logistic逻辑回归模型分析汽车实验数据
【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
R语言BUGS/JAGS贝叶斯分析: 马尔科夫链蒙特卡洛方法(MCMC)采样
马尔可夫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模型



拓端数据部落
拓端(tecdat.cn)创立于2016年,提供专业的数据分析与挖掘服务,致力于充分挖掘数据价值。
 最新文章