拓端tecdat|R語言指數(shù)加權模型EWMA預測股市多變量波動率時間序列
原文鏈接:http://tecdat.cn/?p=25872?
原文出處:拓端數(shù)據(jù)部落公眾號
從廣義上講,復雜的模型可以實現(xiàn)很高的預測準確性。
但是您的讀者需要快速理解。他們沒有意愿或時間去處理任何太乏味的事情,即使它可以稍微準確一些。簡單性是商業(yè)中非常重要的模型選擇標準。在多元波動率估計中,最簡單的方法是使用歷史協(xié)方差矩陣。但這太簡單了,我們已經(jīng)知道波動性是隨時間變化的。您經(jīng)常看到從業(yè)者使用滾動標準差來模擬隨時間變化的波動率。它可能不如其他最先進的方法準確,?但它實現(xiàn)起來非常簡單,也很容易解釋。
什么是滾動窗口估計。如果我們有一個包含 5 個觀察值的向量并且我們使用 2 個窗口,那么用于估計的權重向量是 [0,0,0,0.5,0.5]。更進一步的做法是對更遠的過去給予少一些權重,但要對最近的觀察樣本給予更大的權重,比如權重向量 [0.05, 0.1, 0.15, 0.3, 0.4]。
根據(jù)低波動率跟著低波動率走,高波動率跟著高波動率走(波動率聚類)的典型事實,這個想法完全適合于多變量波動率預測。請考慮以下情況。
(1)?

其中?

?是協(xié)方差矩陣的當前估計,并且?

?是基于過去直到時間段 t-1 的協(xié)方差矩陣。我們使用最簡單的估計,即歷史協(xié)方差矩陣,但增加了一些權重(

)到僅基于最近的觀察估計的協(xié)方差矩陣。這真的很容易解釋,幾乎是一個行業(yè)標準。可以估計我們希望權重下降的速度,但您也可以根據(jù)一些先前的研究,將衰減參數(shù)估計為 0.94。
我繪制幾個不同 lambda 值隨時間變化的相關矩陣:
k <- 10 # 幾年前?
end<- format(Sys.Date(),"%Y-%m-%d")
start<-format(Sys.Date() - (k*365),"%Y-%m-%d")
dat0 = getSymbols
for (i in 1:l){
da0 = getSymbols(sym[i])
ret[2:n,i]
}
EWMAplot
legend
?

您可以看到,如果您為最后一次觀察樣本分配 15% 的權重,您會得到一些不穩(wěn)定的估計。僅 5% (lambda = 0.95) 的權重給出了更平滑的估計,但可能不太準確。
除了簡單之外,另一個重要的優(yōu)點是不需要關心可逆性,因為在每個時間點上,估計值只是兩個有效的相關矩陣的加權平均數(shù)。還有,你可以將這種方法應用于任何金融工具,不管是流動的還是非流動的,這是它受歡迎的另一個原因。
EWMA <-
function {
## ###輸入。
## factors N x K的數(shù)字因素數(shù)據(jù)。數(shù)據(jù)是類data.frame
## N是時間長度,K是因素的數(shù)量。??
## lambda 標量。指數(shù)衰減系數(shù)在0和1之間。
## return.cor 如果是TRUE則返回EWMA相關矩陣
##輸出。??
covewma = array
covf = var(factors)??# 時間=0時的無條件方差為EWMA
mfas <- apply(factors,2, mean)
for (i in 2:t.factor) {
FF
cov.f.ewma
}
}
if(return.cor) {
cewma
for (i in 1:dim[1]) {
corewma= covr(coewm[i, ,])
這個函數(shù)不適合用于樣本外的預測。原因是我們向樣本協(xié)方差矩陣收縮,而協(xié)方差矩陣是基于全樣本的,在樣本結束前我們還不知道。在現(xiàn)實的設置中,我們只能使用到我們希望預測的那一點為止的信息。隨后,我改變了原始函數(shù),加入了一個額外的參數(shù)(用于估計協(xié)方差矩陣的初始窗口長度)。然后,初始協(xié)方差矩陣的取值只使用到預測時為止的信息,標準化也是如此。修改后的新函數(shù)如下?
?
EWMAs <- function{
# 調整了樣本外的協(xié)方差預測
## 輸入。
##因素N x K數(shù)字因素數(shù)據(jù)。數(shù)據(jù)是類data.frame
## N是時間長度,K是因素的數(shù)量。??
## la指數(shù)衰減因子在0和1之間。
## retu 邏輯的,如果是TRUE則返回EWMA相關矩陣
##輸出。??
coa = array(,c(t.cor,k.tor,k.aor))
fas <- apply
covf = var
co.ewa[(wind-1),,] = (1-lad)*FF??+ ada*cov.f
for (i in wind : t.factor) {
covf = var# 到t的無條件方差。
FF = (fators[i,]- mctors) %*% t(factors[i,]- mfcrs)
coma[i,,] = (1-laa)*FF??+ laba*coma[(i-1),,]
for (i in wn:dim) {
orma[i, , ] = covr(owma[i, ,])

最受歡迎的見解
1.R語言對S&P500股票指數(shù)進行ARIMA + GARCH交易策略
2.R語言改進的股票配對交易策略分析SPY—TLT組合和中國股市投資組合
3.R語言時間序列:ARIMA GARCH模型的交易策略在外匯市場預測應用
4.TMA三均線期指高頻交易策略的R語言實現(xiàn)
5.r語言多均線量化策略回測比較
6.用R語言實現(xiàn)神經(jīng)網(wǎng)絡預測股票實例
7.r語言預測波動率的實現(xiàn):ARCH模型與HAR-RV模型
8.R語言如何做馬爾科夫轉換模型markov switching model
9.matlab使用Copula仿真優(yōu)化市場風險