R語(yǔ)言隱馬爾可夫模型HMM連續(xù)序列重要性重抽樣CSIR估計(jì)隨機(jī)波動(dòng)率模型SV分析股票收益率
原文鏈接:http://tecdat.cn/?p=26678
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
在本筆記本中,我們向讀者介紹了基本的隨機(jī)波動(dòng)率模型,并通過(guò)連續(xù)順序重要性重采樣討論了它們的估計(jì)。我們使用收益率數(shù)據(jù)集來(lái)討論 CSIR 在隨機(jī)波動(dòng)率模型估計(jì)中的實(shí)現(xiàn)和性能。
第一個(gè)隨機(jī)波動(dòng)率模型
令 yt 為時(shí)間 t?的股票收益,σt 為其標(biāo)準(zhǔn)差??紤]以下離散時(shí)間隨機(jī)波動(dòng)率模型:
?

zt~N(0,1) 和 ηt~N(0,τ2) ,
τ>0 和 |φ1|<1 以確保波動(dòng)率遵循平穩(wěn)過(guò)程。直觀地說(shuō),波動(dòng)過(guò)程被建模為一個(gè)潛在過(guò)程,其中 log(σ2t) 遵循 AR(1) 過(guò)程。在下一個(gè)塊中,我們模擬了這個(gè)過(guò)程。在筆記本上,我們將繼續(xù)處理這些模擬數(shù)據(jù)。為簡(jiǎn)潔起見(jiàn),我們定義 αt=log(σ2t) 和 θ=(?0,?1,τ) 為參數(shù)向量。
## ##我們模擬數(shù)據(jù)。
##我們?cè)O(shè)定pi_0 = 0.05, pi = 0.98, tau = 0.02
##模擬數(shù)據(jù)的函數(shù)
#Input 2: T - 時(shí)間序列的大小
#Ouput: retF - 模擬的收益率(y)和波動(dòng)率(alpha)。
pi <- thta[2] # 自相關(guān)系數(shù) phi
tu2 <- heta[3] # 具有tau2方差的正常誤差
eta <- rorm(T, 0, sqrt(tau2)) # AR(1)波動(dòng)率模型的誤差
z <- rnrm(T, 0, 1) # 倍增項(xiàng)回報(bào)模型
alha[1] <- cost # 在開(kāi)始階段沒(méi)有自相關(guān)的觀察值
# 仿真時(shí)間序列
smdf <- s_sm(theta, T)
y <- smdf$y
lpa <- smdf$apha

隱馬爾可夫模型:定義
上面顯示的模型屬于更一般的隱馬爾可夫模型類(lèi)。設(shè) h(αt|αt-1;θ) 為躍遷密度,g(yt|αt;θ) 為測(cè)量密度。那么在這種情況下,躍遷密度和測(cè)量密度都是高斯的,其中?

?和?

.
序列蒙特卡羅
對(duì)于估計(jì),我們使用序列蒙特卡羅,通過(guò)生成 P?隨機(jī)抽取,稱(chēng)為“粒子”,以近似預(yù)測(cè)和過(guò)濾密度。雖然有很多變體,但我們只討論(連續(xù))序列重要性重采樣(SIR)。
SIR有兩個(gè)步驟,預(yù)測(cè)和過(guò)濾步驟。
預(yù)測(cè)步驟?如下:?
輸入:粒子?

從?

;
輸出:對(duì)于每個(gè)粒子?

?利用躍遷密度對(duì)系統(tǒng)進(jìn)行傳播,得到一個(gè)新的預(yù)測(cè)粒子,即?

具有連續(xù)序列重要性重采樣的過(guò)濾步驟:算法
連續(xù)序列重要性重采樣(CSIR) 是 SIR 的一種變體,它提供了過(guò)濾粒子的連續(xù)版本。該方法的主要優(yōu)點(diǎn)是它確保模擬似然相對(duì)于參數(shù) θ?的向量是“平滑的”,以便能夠使用基于梯度的優(yōu)化方法進(jìn)行優(yōu)化。
使用 CSIR 的過(guò)濾步驟的算法如下:
輸入:
具有條目 u(j) 的排序均勻隨機(jī)采樣向量(拒絕采樣);
對(duì)于定義為 W(i)t 的每個(gè)粒子 α(i)t 在 yt 處評(píng)估的正態(tài) PDF;
從預(yù)測(cè)密度 α(i)t 中排序。
代碼
下面我們生成粒子集,并使用 SIR 近似過(guò)濾和預(yù)測(cè)密度。在第一個(gè)圖中,我們顯示了預(yù)測(cè)密度平均值及其 95 和 5 分位數(shù)。在同一個(gè)圖中,我們還繪制了波動(dòng)率的真實(shí)值。在第二個(gè)圖中,我們繪制了過(guò)濾密度的熱圖。黑線(xiàn)是真正的波動(dòng)率。
# --> (原始)序列重要性取樣算法:過(guò)濾步驟
# 輸入 1: appr - 預(yù)測(cè)密度
# 輸入 2: aha_t - 在 y[t]評(píng)估的正態(tài) pdf
# 輸入 3: u - 排序均勻的隨機(jī)采樣向量(拒絕采樣)
# 輸出:alphp - 粒子過(guò)濾
# 排序和加權(quán)的速度減慢
alhawt <- alph_wt/sum(alpha_wt)
alpa_rt <- cbind(seq(1,P,1),alpha_pr)
alhapr_id <- lpha_sort[order(alha_r[,2]),]。
alhapr <- alpha_ridx[,2]
alph_ix <- alha_p_idx[,1]
alha_wt <- alp_w[alpha_idx]
alhacwt <- c(0, cumsum(alpha_wt))
j <- 1
for (i in 1:P)
while((aphawt[i] < u[j]) && (u[j] <= alpawt[i+1])){
lp_up[j] <- alpa_r[i] 。
}
# ----------------------------------------------------------------------
# 設(shè)置粒子過(guò)濾
# ----------------------------------------------------------------------
P <- 200 # 設(shè)置粒子的數(shù)量
lph_up <- rnorm(P,0,0.1)
alpar <- rep(0,P)
aha_w <- rep(1,P)/P
alphup_mt <- matrix(rep(0,T*3),T)
ala_pmat <- matrix(rep(0, T*3),T)
ah_prare <- matrix(rep(0, T*20),T)
# 從一個(gè)近似值中生成一個(gè)由P個(gè)隨機(jī)抽樣組成的粒子集
# 每個(gè)時(shí)間序列點(diǎn)的預(yù)測(cè)和過(guò)濾分布的近似值
for (t in 1:T){
# 預(yù)測(cè)步驟
appr <- nst + phi * alpp + rnorm(P,0,srt(tau2))
# 更新/過(guò)濾步驟(態(tài)密度)
ahat <- dnorm(y[t]*rep1,P), mean=0 , sd = exp(phar/2)
alpap <- sir(alhapr=aph_r,alhawt=alpa_t, u=sort(runif(P,0,1))
# 繪制預(yù)測(cè)密度圖
plot(sqrt(252) * exp(alpha/2), type='l')
## 篩選密度熱圖
het <- matrix(rep(1,T*20), T, 20)
plot(NULL, xlim = c(1, T), ylim = c(0, 160), main="過(guò)濾密度熱圖",

在下一部分中,我們提供了 CSIR 的 R 和 C 版本。R 版本僅出于代碼可讀性的目的而提供。
###連續(xù)序列重要性重取樣:過(guò)濾步驟
# 輸入 1: alppr - 預(yù)測(cè)密度
# 輸入 2: alhawt - 在 y[t]處評(píng)估的正態(tài) pdf
# 輸入 3: u - 排序均勻的隨機(jī)采樣向量(拒絕采樣)
# 輸出:ala_up - 粒子過(guò)濾(連續(xù)版本)。
# R版本(性能較慢)
cir <- function(aph_r, phwt, u) {
P <- length(aphpr)
al_p <- rep(0,P)
# 排序和加權(quán)的速度減慢
alpha_wt <- alpha_wt/sum(alpha_wt)
j <- 1
for (i in 1:P){
while((a_ct[i] < u[j]) & (u[j] <= alhwt[i+1])){
alh_u[j] <- aph_pr[i] + ((apapr[i+1]-alar[i])/(ala_ct[i+1]-alpha_cwt[i]) * (u[j]-ala_wt[i])
}
csir.c <- function(alppr, aht, u) {
P <- length(alpap)
ala_u <- rep(0,P)
.C("cir", alpup=as.dole(aphup),
alha_pr=as.double(aha_r),
alh_wt=as.doublephawt),
u=as.double(u),
我們現(xiàn)在提供用于最大化對(duì)數(shù)似然和估計(jì)參數(shù) θ 的代碼。為了計(jì)算標(biāo)準(zhǔn)誤差,我們使用在 MLE 評(píng)估的對(duì)數(shù)似然的 Hessian 矩陣的逆矩陣的對(duì)角線(xiàn)。
我們現(xiàn)在可以轉(zhuǎn)到參數(shù) θ 的估計(jì)。使用 C 中的函數(shù)進(jìn)行估計(jì)。
vas <- sfit(y, c(0.5,0.5,0.5), P, 1)
?
## 顯示結(jié)果
matrix <- cbind(heta_mle
,eta_se)
矩陣


最受歡迎的見(jiàn)解
1.用R語(yǔ)言模擬混合制排隊(duì)隨機(jī)服務(wù)排隊(duì)系統(tǒng)
2.R語(yǔ)言中使用排隊(duì)論預(yù)測(cè)等待時(shí)間
3.R語(yǔ)言中實(shí)現(xiàn)馬爾可夫鏈蒙特卡羅MCMC模型
4.R語(yǔ)言中的馬爾科夫機(jī)制轉(zhuǎn)換(Markov regime switching)模型
5.matlab貝葉斯隱馬爾可夫hmm模型
6.用R語(yǔ)言模擬混合制排隊(duì)隨機(jī)服務(wù)排隊(duì)系統(tǒng)
7.Python基于粒子群優(yōu)化的投資組合優(yōu)化
8.R語(yǔ)言馬爾可夫轉(zhuǎn)換模型研究交通傷亡人數(shù)事故預(yù)測(cè)
9.用機(jī)器學(xué)習(xí)識(shí)別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用