使用R語(yǔ)言進(jìn)行機(jī)制檢測(cè)的隱馬爾可夫模型HMM
原文鏈接:http://tecdat.cn/?p=9686
?
在本文中,將對(duì)“牛市”和“熊市”兩個(gè)獨(dú)立機(jī)制下的市場(chǎng)收益進(jìn)行模擬。隱馬爾可夫模型識(shí)別處于特定狀態(tài)的概率。
在概述了模擬數(shù)據(jù)的過程之后,將隱馬爾可夫模型應(yīng)用于股票數(shù)據(jù),以確定基本機(jī)制。
市場(chǎng)體制
將隱馬爾可夫模型應(yīng)用于狀態(tài)檢測(cè)是棘手的,因?yàn)樵搯栴}實(shí)際上是無監(jiān)督學(xué)習(xí)的一種形式。也就是說,沒有“基礎(chǔ)事實(shí)”或標(biāo)記數(shù)據(jù)用來“訓(xùn)練”模型。是否有兩個(gè),三個(gè),四個(gè)或更多個(gè)“真正的”隱藏市場(chǎng)機(jī)制?
這些問題的答案在很大程度上取決于要建模的資產(chǎn)類別,時(shí)間范圍的選擇以及所使用數(shù)據(jù)的性質(zhì)。?
模擬數(shù)據(jù)
在本節(jié)中,從獨(dú)立的高斯分布中生成模擬的收益率數(shù)據(jù),每個(gè)分布都代表“看漲”或“看漲”的市場(chǎng)機(jī)制??礉q收益來自均值正且方差低的高斯分布,而看跌收益來自均值略為負(fù)但方差較高的高斯分布。
第一個(gè)任務(wù)是安裝depmixS4和quantmod庫(kù),然后將它們導(dǎo)入R。
install.packages('depmixS4')
install.packages('quantmod')
library('depmixS4')
library('quantmod')
set.seed(1)
牛市分布N(0.1,0.1)而空頭市場(chǎng)分布為N(?0.05,0.2)。通過以下代碼設(shè)置參數(shù):
#創(chuàng)建牛市和熊市收益分布
Nk_lower <- 50
Nk_upper <- 150
bull_mean <- 0.1
bull_var <- 0.1
bear_mean <- -0.05
bear_var <- 0.2
所述Nk值是隨機(jī)選擇的:
# 為每個(gè)方案創(chuàng)建時(shí)間列表(以天為單位)
days <- replicate(5, sample(Nk_lower:Nk_upper, 1))
第k個(gè)周期的收益是隨機(jī)抽取的:
# 創(chuàng)建各種牛市和熊市收益
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 )
創(chuàng)建真實(shí)狀態(tài)
# 創(chuàng)建真實(shí)的機(jī)制狀態(tài)列表和完整的收益列表
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)
繪制收益圖顯示機(jī)制切換之間均值和方差的明顯變化:
plot(returns, type="l", xlab='', ylab="Returns")
[R

?
在此階段,可以使用Expectation Maximization算法指定隱馬爾可夫模型并進(jìn)行擬合:
在模型擬合之后,可以繪制處于特定狀態(tài)的后驗(yàn)概率。post_probs
包含后驗(yàn)概率。

?
財(cái)務(wù)數(shù)據(jù)
在本節(jié)中,將執(zhí)行兩個(gè)單獨(dú)的建模任務(wù)。第一種將使HMM具有兩個(gè)機(jī)制狀態(tài)以擬合S&P500收益率,而第二個(gè)將利用三個(gè)狀態(tài)。比較兩個(gè)模型之間的結(jié)果。
使用quantmod庫(kù)下載:
繪制時(shí)間序列:
plot(gspcRets)
[

?
使用EM算法擬合隱馬爾可夫模型。每種方案的收益率和后驗(yàn)概率作圖:

?
請(qǐng)注意,在2004年和2007年期間,市場(chǎng)較為平穩(wěn),因此在此期間,隱馬爾可夫模型第二種機(jī)制的可能性較高。然而,在2007年至2009年之間發(fā)生次貸危機(jī)。
市場(chǎng)在2010年變得較為平靜,但在2011年又出現(xiàn)了更多動(dòng)蕩,這導(dǎo)致HMM再次給第一類機(jī)制帶來了較高的后驗(yàn)概率。2011年之后,市場(chǎng)再次趨于平靜,HMM始終給第二種機(jī)制以高概率。2015年,市場(chǎng)再次變得更加混亂,這反映在HMM機(jī)制之間的切換增加。
?

?
由于該模型考慮三個(gè)單獨(dú)的機(jī)制,因此在2004-2007年的平靜時(shí)期導(dǎo)致了機(jī)制2和機(jī)制3之間的轉(zhuǎn)換。但是,在2008、2010和2011年的動(dòng)蕩時(shí)期,機(jī)制1主導(dǎo)著后驗(yàn)概率,表明高度波動(dòng)狀態(tài)。在2011年之后,模型恢復(fù)為在機(jī)制2和機(jī)制3之間切換。
?