1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 拓端tecdat|使用R语言进行机制检测的隐马尔可夫模型HMM

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

时间:2024-05-27 20:47:21

相关推荐

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

原文链接:/?p=9686

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

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

市场体制

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

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

模拟数据

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

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

install.packages('depmixS4')install.packages('quantmod')library('depmixS4')library('quantmod')set.seed(1)

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

#创建牛市和熊市收益分布Nk_lower <- 50Nk_upper <- 150bull_mean <- 0.1bull_var <- 0.1bear_mean <- -0.05bear_var <- 0.2

所述Nk值是随机选择的:

# 为每个方案创建时间列表(以天为单位)days <- replicate(5, sample(Nk_lower:Nk_upper, 1))

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

# 创建各种牛市和熊市收益market_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 )

创建真实状态

# 创建真实的机制状态列表和完整的收益列表true_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)

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

plot(returns, type="l", xlab='', ylab="Returns")

[R

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

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

财务数据

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

使用quantmod库下载:

绘制时间序列:

plot(gspcRets)

[

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

请注意,在和期间,市场较为平稳,因此在此期间,隐马尔可夫模型第二种机制的可能性较高。然而,在至之间发生次贷危机。

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

由于该模型考虑三个单独的机制,因此在-的平静时期导致了机制2和机制3之间的转换。但是,在、和的动荡时期,机制1主导着后验概率,表明高度波动状态。在之后,模型恢复为在机制2和机制3之间切换。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。