Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用R语言进行机制检测的隐马尔可夫模型HMM

使用R语言进行机制检测的隐马尔可夫模型HMM

原创
作者头像
拓端
修改于 2020-08-24 02:07:06
修改于 2020-08-24 02:07:06
1.3K00
代码可运行
举报
文章被收录于专栏:拓端tecdat拓端tecdat
运行总次数:0
代码可运行

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


在本文中,将对“牛市”和“熊市”两个独立机制下的市场收益进行模拟。隐马尔可夫模型识别处于特定状态的概率。

在概述了模拟数据的过程之后,将隐马尔可夫模型应用于美国股票数据,以确定基本机制。

市场体制

将隐马尔可夫模型应用于状态检测是棘手的,因为该问题实际上是无监督学习的一种形式。也就是说,没有“基础事实”或标记数据可在其上“训练”模型。 是否有两个,三个,四个或更多个“真正的”隐藏市场机制?

这些问题的答案在很大程度上取决于要建模的资产类别,时间范围的选择以及所使用数据的性质。 

模拟数据

在本节中,从独立的高斯分布中生成模拟的收益率数据,每个分布都代表“看涨”或“看涨”的市场机制。看涨收益来自均值正且方差低的高斯分布,而看跌收益来自均值略为负但方差较高的高斯分布。

第一个任务是安装depmixS4和quantmod库,然后将它们导入R。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
install.packages('depmixS4')install.packages('quantmod')library('depmixS4')library('quantmod')set.seed(1)

在牛市分布N(0.1,0.1)N(0.1,0.1)而空头市场分布为N(−0.05,0.2)N(−0.05,0.2)。通过以下代码设置参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Create the parameters for the bull and# bear market returns distributionsNk_lower <- 50Nk_upper <- 150bull_mean <- 0.1bull_var <- 0.1bear_mean <- -0.05bear_var <- 0.2

所述NkNk值是随机选择的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Create the list of durations (in days) for each regimedays <- replicate(5, sample(Nk_lower:Nk_upper, 1))

第kk个周期的收益是随机抽取的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Create the various bull and bear markets returnsmarket_bull_1 <- rnorm( days[1], bull_mean, bull_var ) market_bear_2 <- rnorm( days[2], bear_mean, bear_var ) market_bull_3 <- rnorm( days[3], bull_mean, bull_var ) market_bear_4 <- rnorm( days[4], bear_mean, bear_var ) market_bull_5 <- rnorm( days[5], bull_mean, bull_var )

创建真实状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Create the list of true regime states and full returns listtrue_regimes <- c( rep(1,days[1]), rep(2,days[2]), rep(1,days[3]), rep(2,days[4]), rep(1,days[5]))returns <- c( market_bull_1, market_bear_2, market_bull_3, market_bear_4, market_bull_5)

绘制收益图可显示切换之间均值和方差的明显变化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plot(returns, type="l", xlab='', ylab="Returns") 

[R

在此阶段,可以使用Expectation Maximization算法指定隐马尔可夫模型并进行拟合:

在模型拟合之后,可以绘制处于特定状态的后验概率。post_probs包含后验概率。

财务数据

在本节中,将执行两个单独的建模任务。第一种将使HMM具有两个机制状态以拟合S&P500收益率,而第二个将利用三个状态。比较两个模型之间的结果。

使用quantmod库下载:

绘制gspcRets时间序列显示2008和2011时期:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plot(gspcRets)

[

使用EM算法拟合隐马尔可夫模型。每种方案的收益率和后验概率作图:

请注意,在2004年和2007年期间,市场较为平静,因此在此期间,隐马尔可夫模型第二种机制的可能性较高。然而,在2007年至2009年之间,由于次贷危机

市场在2010年变得较为平静,但在2011年又出现了更多动荡,这导致HMM再次给第一类机制带来了较高的后验概率。2011年之后,市场再次趋于平静,HMM始终给第二种机制以高概率。2015年,市场再次变得更加混乱,这反映在HMM机制之间的切换增加。

数据的长度使后验概率图难以解释。由于该模型被迫考虑三个单独的机制,因此在2004-2007年的平静时期导致了机制2和机制3之间的转换。但是,在2008、2010和2011年的动荡时期,机制1主导着后验概率,表明高度波动状态。在2011年之后,模型恢复为在机制2和机制3之间切换。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言中的马尔科夫机制转换(Markov regime switching)模型
金融分析师通常关心检测市场何时“发生变化”:几个月或至几年内市场的典型行为可以立即转变为非常不同的行为。投资者希望及时发现这些变化,以便可以相应地调整其策略,但是这样做可能很困难。
拓端
2020/08/07
1K0
R语言隐马尔可夫模型(HMM)识别不断变化的股市状况股票指数预测实战|附代码数据
最近我们被客户要求撰写关于隐马尔可夫模型(HMM)的研究报告,包括一些图形和统计输出。
拓端
2023/07/21
3480
R语言中的马尔可夫区制转移(Markov regime switching)模型|附代码数据
最近我们被客户要求撰写关于马尔可夫区制转移模型的研究报告,包括一些图形和统计输出。
拓端
2023/11/20
2570
MATLAB中的马尔可夫区制转换(Markov regime switching)模型
分析师通常关心检测市场何时“发生变化”:几个月或几年内市场的典型行为可以立即转变为非常不同的行为。投资者希望及时发现这些变化,以便可以相应地调整其策略,但是这样做可能很困难。
拓端
2020/11/11
2.1K0
MATLAB中的马尔可夫区制转换(Markov regime switching)模型
R语言隐马尔可夫模型HMM识别股市变化分析报告
某些策略在波动剧烈的市场中表现良好,而其他策略则需要强劲而平稳的趋势,否则将面临长时间的下跌风险。搞清楚什么时候开始或停止交易策略,调整风险和资金管理技巧,甚至设置进入和退出条件的参数都取决于市场“状态”或当前的情况。
拓端
2020/12/14
7780
R语言隐马尔可夫模型HMM识别股市变化分析报告
用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)股票指数预测实战
“了解不同的股市状况,改变交易策略,对股市收益有很大的影响。弄清楚何时开始或何时止损,调整风险和资金管理技巧,都取决于股市的当前状况。
拓端
2020/09/04
2K0
用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)股票指数预测实战
MATLAB中的马尔可夫区制转移(Markov regime switching)模型|附代码数据
最近我们被客户要求撰写关于马尔可夫区制转移(Markov regime switching)模型的研究报告,包括一些图形和统计输出。
拓端
2023/03/30
4130
HMM(隐马尔可夫模型)
概率图用图的形式来表示概率分布:其中结点表示变量,结点之间直接相连的边表示相应变量之间的概率关系。
流川疯
2024/09/05
1310
HMM(隐马尔可夫模型)
用hmmlearn学习隐马尔科夫模型HMM
    在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结。本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用。关于hmmlearn的更多资料在官方文档有介绍。
刘建平Pinard
2018/08/07
3.8K0
R语言隐马尔可夫模型HMM识别不断变化的股票市场条件
某些策略在波动剧烈的市场中表现良好,而其他策略则需要强劲而平稳的趋势,否则将面临长时间的下跌风险。搞清楚什么时候开始或停止交易策略,调整风险和资金管理技巧,甚至设置进入和退出条件的参数都取决于市场“制度”或当前的情况。
拓端
2020/09/04
9130
R语言隐马尔可夫模型HMM识别不断变化的股票市场条件
MATLAB中的马尔可夫区制转移(Markov regime switching)模型|附代码数据
最近我们被客户要求撰写关于马尔可夫区制转移(Markov regime switching)模型的研究报告,包括一些图形和统计输出。
拓端
2023/03/29
5460
MATLAB中的马尔可夫区制转移(Markov regime switching)模型
分析师通常关心检测市场何时“发生变化”:几个月或几年内市场的典型行为可以立即转变为非常不同的行为。投资者希望及时发现这些变化,以便可以相应地调整其策略,但是这可能很困难。
拓端
2023/08/31
4020
MATLAB中的马尔可夫区制转移(Markov regime switching)模型
R语言股价跳跃点识别:隐马尔可夫hmm和 GARCH-Jump对sp500金融时间序列分析
在突发事件发生后,股价会相应的发生较大幅度的上涨或下跌,称为跳跃现象,跳跃现象会给金融投资带来极大风险,因而对跳跃点的识别对于风控而言是很重要的(点击文末“阅读原文”获取完整代码数据)。
拓端
2024/08/27
1910
R语言股价跳跃点识别:隐马尔可夫hmm和 GARCH-Jump对sp500金融时间序列分析
机器学习23:概率图--隐马尔可夫模型(HMM)
隐马尔可夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。
用户5473628
2019/08/08
1.9K0
机器学习23:概率图--隐马尔可夫模型(HMM)
R语言如何做马尔可夫转换模型markov switching model|附代码数据
假设 有时间序列数据,如下所示。经验表明,目标变量y似乎与解释变量x有关。然而,乍一看,y在水平中间波动,所以它似乎并不总是有稳定的关系(背后有多个状态)
拓端
2023/01/11
7430
MATLAB中的马尔可夫区制转移(Markov regime switching)模型|附代码数据
最近我们被客户要求撰写关于马尔可夫区制转移模型的研究报告,包括一些图形和统计输出。
拓端
2023/05/11
3630
R语言中的隐马尔可夫HMM模型实例|附代码数据
最近我们被客户要求撰写关于隐马尔可夫HMM模型的研究报告,包括一些图形和统计输出。
拓端
2023/06/10
5780
NLP硬核入门-隐马尔科夫模型HMM
(1)小明所在城市的天气有{晴天,阴天,雨天}三种情况,小明每天的活动有{宅,打球}两种选项。
zenRRan
2019/11/12
8320
【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享|附代码数据
在金融建模的背景下,随机建模迭代随机变量的连续值,这些值彼此不独立。非独立的意思是虽然变量的值会随机变化,但其起点将取决于其先前的值,因此取决于其先前的值,依此类推;这描述了所谓的随机游走。
拓端
2022/11/15
7650
理解隐马尔可夫模型
隐马尔可夫模型(Hidden Markov Model,简称HMM)由Baum等人在1966年提出[1],是一种概率图模型,用于解决序列预测问题,可以对序列数据中的上下文信息建模。所谓概率图模型,指用图为相互依赖的一组随机变量进行建模,图的顶点为随机变量,边为变量之间的概率关系。
SIGAI学习与实践平台
2019/03/04
1.7K0
理解隐马尔可夫模型
推荐阅读
相关推荐
R语言中的马尔科夫机制转换(Markov regime switching)模型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档