時間序列的變動

一個時間序列往往是以下幾類變化形式的疊加和耦合。

  • 趨勢變動:在長時期內按某種規則穩定地呈現出來的持續向上或向下或保持在某一水平。
  • 季節變動:在一個年度內重複出現的周期性波動。它是諸如氣候條件、生產條件、節假日或人們的風俗習慣等各種因素影響的結果。
  • 循環波動:是時間序列呈現出得非固定長度的周期性變動。循環波動的周期可能會持續一段時間,但與趨勢不同,它不是朝著單一方向的持續變動,而是漲落相同的交替波動。
  • 不規則波動(隨機變動):是許多不可控的偶然因素共同作用的結果,致使時間序列產生一種波浪形或震蕩式的變動。

隨機時序分析的基本概念

  • 隨機過程

現象的變化沒有確定的形式,沒有必然的變化規律。隨機過程是隨機變數的集合。 若一隨機系統的樣本點是隨機函數,則稱此函數為樣本函數,這一隨機系統全部樣本函數的集合是一個隨機過程。

在研究隨機過程時人們透過表面的偶然性描述出必然的內在規律並以概率的形式來描述這些規律,從偶然中悟出必然正是這一學科的魅力所在。隨機變數:簡單的隨機現象,如某班一天學生出勤人數,是靜態的。 隨機過程:隨機現象的動態變化過程。動態的。如某一時期各個時刻的狀態。 所謂過程就是事物的發展變化過程,儘管過程的形式各異,但歸納起來不外乎兩種:一種是確定性的,一種是隨機性的。 所謂確定性過程,就是指事物的發展有必然的變化規律,用數學語言來說,就是事物變化的過程可以用一個(或幾個)時間t的確定的函數來描述。可重複性。如自由落體。 所謂隨機過程,就是說現象的變化沒有確定形式,沒有必然的變化規律。用數學語言來說,就是事物變化的過程不能用一個(或幾個)時間t的確定的函數來描述。不可重複性。也就是說,如果對事物變化的全過程進行一次觀測得到一次觀察結果是一個時間t的函數,但對同一事物的變化過程獨立地重複進行多次觀測所得的結果是不相同的。 如果對於每一特定的t屬於T(T是時間集合),X(t)是一個隨機變數,則稱這一族無窮多個隨機變數{X(t),t屬於T}是一個隨機過程。

  • 白雜訊序列

隨機變數X(t)(t=1,2,3……),如果是由一個不相關的隨機變數的序列構成的,即對於所有s不等於k,隨機變數Xs和Xk的協方差為零,則稱其為純隨機過程

如果一個純隨機過程的期望和方差均為常數,則稱之為白雜訊過程。白雜訊過程的樣本實稱成為白雜訊序列,簡稱白雜訊。

——白雜訊序列是一個有限均值、有限方差的獨立同分布隨機變數序列(隨機過程)。之所以稱為白雜訊,是因為他和白光的特性類似,白光的光譜在各個頻率上有相同的強度,白雜訊的譜密度在各個頻率上的值相同。

如果白雜訊具體是服從均值為0、方差為常數的正態分布,那就是高斯白雜訊序列。

  • 平穩性序列

平穩性可以說是時間序列分析的基礎。平穩的通俗理解就是時間序列的一些行為不隨時間改變, 所謂平穩過程就是其統計特性不隨時間的平移而變化的過程。

——即時間序列內含的規律和邏輯,要在被預測的未來時間段內能夠延續下去。這樣我們才能用歷史信息去預測未來信息,類似機器學習中的訓練集和測試集同分布。

——如果時間序列的變化是沒有規律的、完全隨機的,那麼預測模型也就沒有用。

——平穩性的數學表達:如果時間序列在某一常數附近波動且波動範圍有限,即有常數均值和常數方差,並且延遲k期的序列變數的自協方差和自相關係數是相等的或者說延遲k期的序列變數之間的影響程度是一樣的,則稱該序列為平穩序列。簡單說就是沒有明顯趨勢且波動範圍有限。

嚴平穩/強平穩

通俗來說,就是時間序列的聯合分布隨著時間變化嚴格保持不變。

數學表達:如果對所有的時刻 t, (yt1,yt2,…ytm)的聯合分布與(y(t1+k),(yt2+k),…y(tm+k))的聯合分布相同,我們稱時間序列 {yt} 是嚴平穩的。也就是時間序列的聯合分布在時間的平移變換下保持不變。

弱平穩

數學表達:均值不變,協方差Cov(yt,y(t-k))=γk,γk依賴於k。

——即協方差也不隨時間改變,而僅與時間差k相關。

可以根據根據時間序列的折線圖等大致觀察數據的(弱)平穩性:所有數據點在一個常數水平上下以相同幅度波動

弱平穩的線性時間序列具有短期相關性(證明見參考書),即通常只有近期的序列值對現時值得影響比較明顯,間隔越遠的過去值對現時值得影響越小。至於這個間隔,也就是下面要提到的模型的階數。

嚴平穩和弱平穩的關係

嚴平穩是一個很強的條件,難以用經驗的方法驗證,所以一般將弱平穩性作為模型的假設條件。

兩者並不是嚴格的包含與被包含關係,但當時間序列是正態分布時,二者等價。

  • 單位根非平穩序列(可轉換為平穩序列的非平穩序列)

在金融數據中,通常假定資產收益率序列是弱平穩的。但還有一些研究對象,比如利率、匯率、資產的價格序列,往往不是平穩的。對於資產的價格序列,其非平穩性往往由於價格沒有固定的水平,這樣的非平穩序列叫做單位根(unit-root)非平穩序列。

(1)最著名的單位根非平穩序列的例子是隨機遊走(random walk)模型:

pt=μ+p(t-1)+εt

μ是常數項(漂移:drift)。εt是白雜訊序列,則pt就是一個隨機遊走。它的形式和AR模型很像,但不同之處在於,AR模型中,係數的模需要小於1,這是AR的平穩性條件,而隨機遊走相當於係數為1的AR公式,不滿足AR模型的平穩性條件。

隨機遊走模型可作為(對數)股價運動的統計模型,在這樣的模型下,股價是不可預測的。因為εt關於常數對稱,所以在已知p(t-1)的條件下,pt上升或下降的概率都是50%,無從預測。

(2)帶趨勢項的時間序列

pt=β0+β1*t+yt

yt是一個平穩時間序列。

——帶漂移的隨機遊走模型,其均值和方差都隨時間變化;而帶趨勢項的時間序列,其均值隨時間變化,但方差則是不變的常數。

單位根非平穩序列可以進行平穩化處理轉換為平穩序列。比如用差分法處理隨機遊走序列,用用簡單的回歸分析移除時間趨勢處理帶趨勢項的時間序列。

  • 線性時間序列

y_{t}=μ+sum_{i=0}^{infty}{psi_{i}epsilon_{t-i}}

——μ是yt的均值;ψ是係數,決定了時間序列的線性動態結構,也被稱為權重,其中ψ0=1;{εt}為高斯白雜訊序列,它表示時間序列{yt}在t時刻出現了新的信息,所以εt稱為時刻t的innovation(新信息)或shock(擾動)。

線性時間序列模型,就是描述線性時間序列的權重ψ的計量經濟模型或統計模型,比如ARIMA。因為並非所有金融數據都是線性的,所以不是所有金融數據都適合ARIMA等模型。

  • 非線性時間序列

時間序列預測

一:ETS模型族(Error Trend Seasonality)

基於簡單的指數平滑法(加權移動平均法)的一系列模型。

移動平均的邏輯見下一節中介紹。

二:ARIMA模型

(Auto Regressive Integrated Moving Average Model)

ARIMA模型家族:

  • 自回歸模型(AR)

用變數自身的歷史時間數據對變數進行回歸,從而預測變數未來的時間數據。

p階(滯後值,可暫理解為每個移動窗口有p期)自回歸公式即AR(p):

y_{t}=c+sum_{i=1}^{p}{gamma_{i}y_{t-i}+epsilon_{t}}

c是常數(與序列的均值有關),γ是自相關係數(大於0.5才有意義),ε是誤差,{εt}是高斯白雜訊序列。

如果p=1,那麼有AR(1):yt=c+γ1y(t-1)+εt,因為εt是高斯白雜訊,所以yt的期望E(yt)=c+γ1y(t-1),即yt的值將以c+γ1y(t-1)為中心取值,其擾動(方差)就是{εt}的方差。

並且結合前面提到弱平穩線性時間序列的短期相關性,這說明yt只與yt-1相關,而與yt-i(i>1)都無關,這是AR(1)的馬爾可夫性質(類比一階馬爾可夫假設)。

擴展:與線性回歸模型的比較:

類似AR這種也叫做動態模型,它與線性回歸模型的形式很像,但其實有很多不同,比如這裡的常數c是有含義的,與序列的均值相關,而且其係數γi的模必須小於1,而線性回歸中的參數沒有限制。

  • 移動平均模型(MA)

移動平均模型關注的是誤差項的累加,能夠有效消除預測中的隨機波動。

可以看作是白雜訊序列的簡單推廣,是白雜訊序列的有限線性組合。

也可以看作是參數受到限制的無窮階AR模型。

y_{t}=c+epsilon_{t}-sum_{i=1}^{q}{	heta_{i}epsilon_{t-i}}

c是常數(yt序列的均值),{εt}是高斯白雜訊序列。

  • 自回歸移動平均模型(ARMA)

有時候,要用很多階數的AR和MA模型(見後面的定階問題),為解決這個問題提出ARMA模型。

對於金融中的收益率序列,直接使用ARMA模型的時候較少,但其概念與波動率建模很相關,GARCH模型可以認為是對{εt}的ARMA模型。

y_{t}=c+sum_{i=1}^{p}{gamma_{i}y_{t-i}}+epsilon_{t}-sum_{i=1}^{q}{	heta_{i}epsilon_{t-i}}

換一個形式輔助理解:

y_{t}-sum_{i=1}^{p}{gamma_{i}y_{t-i}}=c+epsilon_{t}-sum_{i=1}^{q}{	heta_{i}epsilon_{t-i}}

左邊是AR,右邊是MA,要使這個方程有意義,需要γ和θ不相等,否則這個方程所決定的過程就變成一個白雜訊序列。

  • 自回歸差分移動平均模型(ARIMA)

ARIMA比ARMA僅多了個"I",代表的含義可理解為差分。

——一些非平穩序列經過d次差分後,可以轉化為平穩時間序列。我們對差分1次後的序列進行平穩性檢驗,若果是非平穩的,則繼續差分。直到d次後檢驗為平穩序列。

from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(stock_train, order=(1, 1, 1))
model_results = model.fit()
# print result.summary():可以列印出更多的模型信息

order元組中傳入的是三個超參數p/d/q。

模型的建立過程就是輸入訓練數據求解最佳參數γ和θ。

流程:

1、平穩性檢驗

  • 繪製滾動統計:我們可以繪製移動平均數和移動方差,觀察它是否隨著時間變化。

# (1)繪製滑動均值和滑動方差曲線,看均值和方差是否隨時間變化
tpa_rolmean = pd.rolling_mean(tpa_train, window=12)
tpa_rolstd = pd.rolling_std(tpa_train, window=12)
# 畫圖
fig = plt.figure(figsize=(15,8))
plt.plot(tpa_train, color=blue,label=Original)
plt.plot(tpa_rolmean, color=red, label=Rolling Mean)
plt.plot(tpa_rolstd, color=black, label = Rolling Std)
plt.legend()

  • ADF檢驗(單位根檢驗):這是一種檢查數據穩定性的統計測試。原假設(無效假設):時間序列是不穩定的。測試結果由測試統計量和一些置信區間的臨界值組成。如果「測試統計量」少於「臨界值」,我們可以拒絕原假設,並認為序列是穩定的。或者根據p值檢驗,如果p值小於顯著性水平,我們可以拒絕原假設,認為序列穩定。

# (2)ADF檢驗
from statsmodels.tsa.stattools import adfuller
tpa_adf = adfuller(tpa_train, autolag=AIC)
# 將輸出放入一個序列中
tpa_output = pd.Series(tpa_adf[0:4], index=[Test Statistic,p-value,#Lags Used,Number of Observations Used])
print (tpa_output)
print("--------------------------------")
print (tpa_adf[4])

2、平穩化處理

導致數據不平穩的原因有很多,如果是以下兩種原因我們可以進行平穩化後仍然使用ARIMA模型。

  • 趨勢-隨著時間產生不同的平均值。舉例:在飛機乘客這個案例中,我們看到總體上,飛機乘客的數量是在不斷增長的。
  • 季節性-特定時間框架內的變化。舉例:在特定的月份購買汽車的人數會有增加的趨勢,因為車價上漲或者節假日到來。

平穩化的基本思路是:通過建模並估計趨勢和季節性這些因素,並從時間序列中移除,來獲得一個穩定的時間序列,然後再使用統計預測技術來處理時間序列,最後將預測得到的數據,通過加入趨勢和季節性等約束,來還原到原始時間序列數據。

2.0 對數變換

對某些時間序列需要取對數處理,一是可以將一些指數增長的時間序列變成線性增長,二是可以穩定序列的波動性。對數變換在經濟金融類時間序列中常用。

tpa_train_st = tpa_train.apply(lambda x:np.log(x+1))

一般首先進行對數變換,然後根據實際情況和效果分別選擇差分法、平滑法或分解法。

2.1 差分法

如果是單位根非平穩的(比如隨機遊走模型),可以對其進行差分化。它能讓數據呈現一種更加平穩的趨勢。

——ARIMA模型可以自帶差分,不過好像只能處理三階以內?注意之前手動差分和ARIMA模型指定差分很容易重複差分。

差分階數的選擇通常越小越好,只要能夠使得序列穩定就行。我們可以通過選擇不同的階數,然後進行平穩性檢測,選擇平穩性表現良好的階數就行,一般一階和二階用的比較多。

# 一階差分
data[diff_1] = data[column1].diff(1)
# 二階差分
data[diff_2] = data[diff_1].diff(1)

2.2 平滑法

移動平均

moving_avg = pd.rolling_mean(data,12)
# 做差
diff = data - moving_avg

指數加權移動平均

expwighted_avg=pd.ewma(data,halflife=12)
# 做差
diff = data - expwighted_avg

兩種平滑法區別:移動平均數需要指定window,並且對所有的數一視同仁;而採用指數加權移動平均方法,會對當前的數據加大權重,對過去的數據減小權重。halflife半衰期,用來定義衰減量。其他參數,如跨度span和質心com也可以用來定義衰減。

這些平滑法也可以作為經驗方法對時間序列進行預測,比如簡單的指數平滑法非常類似於自回歸階數為0、差分階數為1、移動平均值階數為1 且沒有常量的ARIMA 模型。但效果和應用範圍都有限制。

——註:經差分或平滑後的數據可能因包含缺失值而不能使用檢驗,需要將缺失值去除:

tpa_1.dropna(inplace=True)

2.3 分解法

建立有關趨勢和季節性的模型,並從模型中刪除它們。

#時間序列分解
from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(ts_log)
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid

季節性調整

有些時間序列呈現出一定的循環或周期性,這樣的時間序列叫季節性時間序列。例如月入境旅遊人數,公司股票的每股的季度盈利,以及一些與天氣相關的衍生產品、能源期貨的價格等。

在有些應用中,需要將季節性波動這種特徵消除(如GDP增長率和失業率),這種操作叫季節性調整,例如X12 季調方法、STL分解法等。

3、建立模型:模型選擇和模型的定階

模型的選擇即在AR、MA、ARMA、ARIMA中間如何選擇。

模型的定階即指定上面過程中產生的超參數p、q和d(差分的階數)。

  • 相關係數

ρ_{xy}=frac{Cov(X,Y)}{Var(X)Var(Y)}

  • 自相關係數/序列相關函數(Auto correlation Function,ACF)

ACF(k)=frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}=frac{γ_k}{γ_0}

——因為是弱平穩,所以yt和y(t-k)的方差一樣,都是γk,而自協方差只與k有關,所以自相關函數是一個關於k的函數。

一個變數與其過去的值的相關性。兩者之間有一個時間間隔k,叫做時間間隔為k的自相關係數。

——因為序列的短缺相關性,也就是說隨著延遲期數的增加,平穩序列的自相關係數會比較快的衰減趨向於零,並在零附近隨機波動。而非平穩序列的自相關係數衰減的速度比較慢。(魏鴻鑫

如果對所有k>0,都有ACF(k)=0,我們說這個弱平穩序列是序列不相關的。前面說了白雜訊序列是序列不相關的,也就是其自相關函數為0(現實中接近0即可)。資本資產定價模型(CAPM)理論的一種形式,就是假定資產收益率序列是不可預測的,且沒有自相關性。零自相關係數的檢驗被用來作為有效市場假說是否成立的判定工具。然而,現實中,尤其是高頻金融數據,收益率序列可能具有自相關性。

通常用ACF來刻畫數據的線性動態關係,可以說一個線性時間序列,是由其ACF決定的。

  • 偏自相關函數(Partial Autocorrelation Function,PACF)

ACF其實不能真正表現y(t)和y(t-k)之間的相關性,它還摻雜了兩者之間的k-1個變數(比如y(t-1)、y(t-2)等)與其的相關性,PACF則能夠剔除這些其他變數的影響,單純的表現y(t)和y(t-k)之間的相關性。

# 需要安裝statsmodels庫
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

acf = plot_acf(stock_diff, lags=20)
plt.title("ACF")
acf.show()

pacf = plot_pacf(stock_diff, lags=20)
plt.title("PACF")
pacf.show()

可以觀察ACF和PACF圖,可以判斷p和q的階數。(係數越大,說明越序列相關,對應的階數可選,係數趨於0,說明越序列無關,對應的階數不可選)

(1)用ACF和PACF圖判斷使用哪種線性時間序列模型

AR模型:ACF拖尾,PACF截尾,看PACF定階。

MA模型:ACF截尾,PACF拖尾,看ACF定階。

ARMA模型:都拖尾。(EACF定階)

——截尾:在某階後迅速趨於0(後面大部分階的對應值在二倍標準差以內);

——拖尾:按指數衰減或震蕩,值到後面還有增大的情況。

ARIMA模型:適用於差分後平穩的序列。

(2)利用 信息準則 函數選擇合適的階

對於個數不多的時序數據,可以通過觀察自相關圖和偏相關圖來進行模型識別,倘若要分析的時序數據量較多,例如要預測每隻股票的走勢,就不可能逐個去調參了。這時可以依據AIC或BIC準則識別模型的p, q值,通常認為AIC或BIC值越小的模型相對更優。

AIC或BIC準則綜合考慮了殘差大小和自變數的個數,殘差越小AIC或BIC值越小,自變數個數越多AIC或BIC值越大。AIC或BIC準則可以說是對模型過擬合設定了一個標準。

  • AIC(Akaike information criterion,赤池信息度量準則)

AIC=2k-2ln(L)

  • BIC(Bayesian information criterion,貝葉斯信息度量準則)

BIC=kln(n)-2ln(L)

——k為模型的超參數個數,n為樣本數量,L為似然函數。

——類比機器學習中的損失函數=經驗損失函數+正則化項。

模型選擇標準:AIC和BIC越小越好(在保證精度的情況下模型越簡單越好)

4、模型檢驗和評估(之前應切分訓練集和驗證 集)

  • 檢驗殘差是否符合標準(QQ圖):是否服從均值為0,方差是常數的正態分布(εt是否是高斯白雜訊序列)。
  • 擬合優度檢驗(模型的評估):R^2和調整後的R^2(R^2隻適用於平穩序列)。

5、預測

需要數據以時間列作為索引

# 以第0列即時間列作為索引並且將其解析為標準時間格式
stock = pd.read_csv(data/T10yr.csv, index_col=0, parse_dates=[0])

預測

pred = result.predict(20140609, 20160701,dynamic=True, typ=levels)

如果之前進行了標準化、差分化等,需要進行還原:

標準化的還原要注意是log(x+1)還是log(x)。

用ARIMA中自帶的差分不需要還原差分,只需要預測時傳入參數 dynamic=True 即可。但是ARIMA自帶的差分似乎只支持3階以下的差分。

預測值和真實值的比較

plt.figure(figsize=(6, 6))
plt.xticks(rotation=45)
plt.plot(pred)
plt.plot(stock_train)

三:條件異方差模型

1、基礎概念

波動率

在期權交易中,波動率是標的資產的收益率的條件標準差。之前的平穩序列假設方差為常數,但當序列的方差不是常數時,我們需要用波動率對其變化進行描述。

對於金融時間序列,波動率往往具有以下特徵:

  • 存在波動率聚集(volatility cluster)現象。 即波動率在一些時間段上高,一些時間段上低。
  • 波動率以連續時間變化,很少發生跳躍。
  • 波動率不會發散到無窮,而是在固定的範圍內變化(統計學角度上說,其是平穩的)
  • 槓桿效應:波動率對價格大幅上升和大幅下降的反應是不同的。

波動率模型/條件異方差模型

給資產收益率的波動率進行建模的模型叫做條件異方差模型。這些波動率模型試圖刻畫的數據有這樣的特性:它們是序列不相關或低階序列相關的(比如股票的日收益率可能相關,但月收益率則無關),但又不是獨立的。波動率模型就是試圖刻畫序列的這種非獨立性。

定義信息集F(t-1)是包含過去收益率的一切線性函數,假定F(t-1)給定,那麼在此條件下時間序列yt的條件均值和條件方差分別表示為:

均值方程:μ_{t}=E(y_{t}|F_{t-1})

波動率方程: sigma^{2}_{t}=Var(y_{t}|F_{t-1})=E((y_{t}-μ_{t})^{2}|F_{t-1})

條件異方差模型就是描述σt^2的演變的,σt^2隨時間變化的方式可以用不同的波動率模型來表示。其建模方式就是對時間序列增加一個動態方程,來刻畫資產收益率的條件方差隨時間演變的規律。

2、ARCH(AutoRegressive Conditional Heteroskedasticity,自回歸條件異方差)

ARCH模型將當前一切可利用信息作為條件,並採用某種自回歸形式來刻劃方差的變異。對於一個時間序列而言,在不同時刻可利用的信息不同,而相應的條件方差也不同,利用ARCH 模型,可以刻划出隨時間而變異的條件方差。

模型的基本假設

資產收益率序列的擾動 {εt} 序列不相關,但又不獨立。

{εt}的不獨立性可以用其延遲值的簡單二次函數來描述。

數學形式:

varepsilon_{t}=σ_{t}η_{t}

σ^{2}_{t}=α_{0}+sum_{i=1}^{m}{α_{i}varepsilon_{t-i}^{2}}

——{ηt}是均值為0方差為1的獨立同分布隨機變數序列,通常假定其服從標準正態分布或標準化學生-t分布 ;α0>0、αi(i>0)≥0,且能夠保證εt的無條件方差是有限的。

ARCH效應

從上面模型的結構看,大的過去的平方「擾動」會導致信息εt大的條件異方差。從而εt有取絕對值較大的值的傾向。這意味著:在ARCH的框架下,大的"擾動"會傾向於緊接著出現另一個大的"擾動"。這與波動率聚集的現象相似。

所謂ARCH模型效應,也就是條件異方差序列既是序列無關、但又不是獨立的。

ARCH效應檢驗(結合ARIMA模型的第4步)

用混成檢驗(Ljung-Box)來對前面創建的均值模型(如ARMA或ARIMA)的殘差進行檢驗,判斷是否具有ARCH效應,如果具有ARCH效應,對殘差建立條件異方差模型。

ARCH的缺點

無法表現金融資產的價格對正的擾動和負的擾動反應是不同的這一特性;

對參數的限制很強;

只是表現了條件方差的變化,但不能解釋為何發生這種變化。

3、GARCH(Generalized AutoRegressive Conditional Heteroskedasticity,廣義ARCH)

雖然ARCH模型簡單,但為了充分刻畫收益率的波動率過程,往往需要很多參數,有時會需要很高的ARCH(m)模型。因此,Bollerslev(1986)年提出了一個推廣形式,稱為廣義的ARCH模型(GARCH)。

varepsilon_{t}=σ_{t}eta_{t}

 σ^{2}_{t}=α_{0}+sum_{i=1}^{m}{α_{i}varepsilon_{t-i}^{2}}+sum_{j=1}^{s}{β_{j} σ^{2}_{t-j}}

α0>0,?i>0:αi?0,βi?0,(αi+βi)<1。對αi+βi的限定保證擾動序列的無條件方差是有限的。αi和βi分別叫做ARCH參數和GARCH參數。

與之前的ARCH模型建立過程類似,不過GARCH(m,s)的定階較難,一般使用低階模型如GARCH(1,1)、GARCH(2,1)、GARCH(1,2)等。

4、更多條件異方差模型

求和GARCH、GARCH-M模型、指數GARCH、EGARCH模型等。還有另外一類波動率模型,比如隨機波動率模型。


時間序列回歸

即研究兩個時間序列之間的關係,比如個股收益率與市場指數收益率的研究、利率的期限結構的研究(不同期限的利率之間的關係)等。比如一個簡單的形式:

y_{1t}=α+βy_{2t}+ε_{t}

如果εt是白雜訊,那我們用OLS即可。但如果εt是序列相關的,那就不能用OLS去估計。

一個解決方法是為殘差序列{εt}構建一個簡單AR/MA/ARMA模型。比如觀察ACF發現MA模型是適合的,那麼建模:εt=ηt-θa(t-1)。其中{ηt}是白雜訊序列。

也就是說,這裡我們簡單地用不帶常數項的AR/MA/ARMA模型去刻畫εt序列的這種相關性。


參考:

利用Python進行數據分析

優達學城時間序列預測分析

網易雲課堂Python數據分析與機器學習實戰

fyiqi金融時間序列分析入門

金融時間序列分析(中文第2版)

時間序列分析王振龍

伍德里奇計量經濟學導論

Python實現時間序列分析


推薦閱讀:
相关文章