寫給你的金融時間序列分析:基礎篇
來自專欄川流不息17 人贊了文章
1 前言
時間序列分析(time series analysis)是量化投資中的一門基本技術。時間序列是指在一定時間內按時間順序測量的某個變數的取值序列。比如變數是股票價格,那麼它隨時間的變化就是一個時間序列;同樣的,如果變數是股票的收益率,則它隨時間的變化也是一個時間序列。時間序列分析就是使用統計的手段對這個序列的過去進行分析,以此對該變數的變化特性建模、並對未來進行預測。
時間序列分析試圖通過研究過去來預測未來。
時間序列分析在工程學、經濟學、氣象學、金融學等眾多領域有著廣泛的應用。在金融學領域,介紹時間序列分析的優秀書籍層出不窮。其中最家喻戶曉之一的要數美國芝加哥大學商學院 Ruey S. Tsay 教授撰寫的金融時間序列分析 —— Analysis of Financial Time Series(下圖,該書也同時有中文版)。
金融時間序列分析要求使用者具備一定的高等數學知識。特別是其中一些高級的模型,如分析波動率的 ARCH/GARCH 模型、極值理論、連續隨機過程、狀態空間模型等都對使用者的數學水平有著極高的要求。因此,在很多人眼中,金融時間序列分析無疑帶著厚厚的面紗,令人望而卻步。
然而,如果學習的目的是為了解金融時間序列的特點、熟悉金融時間序列分析的目的、並使用線性但非常實用的模型(比如 ARMA 模型)對金融時間序列進行預測並以此制定量化策略,那麼只要具備簡單的統計學基礎,就完全能夠實現這些目標。
出於這個目的,從本周開始,量化核武研究這個專題下將推出四篇文章,深入淺出的介紹金融時間序列分析的相關知識。該系列不會涉及上面提到的那些高級模型;相反的,本系列以對股票收益率建模並構建投資策略為目標,按部就班的把實現這個目標所需要的每一塊「積木」清晰地呈獻給讀者。這四篇文章的結構為:
- 基礎篇(本文):介紹金融時間序列的特性和進行金融時間序列分析的目的;解釋時間序列分析中的核心概念:序列相關性(又稱自相關性)。
- 初級篇:說明時間序列建模的過程;介紹時間序列分析中的最基本模型:白雜訊和隨機遊走。
- 進階篇:介紹時間序列分析中常用的線性模型:AR、MA、ARMA 等。
- 應用篇:利用 ARMA 對上證指數收益率序列建模,並以此產生交易信號、構建投資策略,以此展示時間序列分析在量化投資領域的應用。
本系列文章會避免過多羅列晦澀難懂的大數學(但會涉及必要的數學知識),希望帶你走入金融時間序列分析的大門,為你今後學習更高級的模型奠定一些基礎。
這是寫給你的金融時間序列分析。
2 金融時間序列分析
為了避免下文中涉及的概念過於抽象,我們假設本文討論的金融時間序列為投資品的收益率序列。
金融時間序列分析考慮的是金融變數(比如投資品收益率)隨時間演變的理論和實踐。任何金融時間序列都包含不確定因素,因此統計學的理論和方法在金融時間序列分析中至關重要。金融資產的時間序列常被看作是未知隨機變數序列隨時間變化的一個實現。通常假設該隨機變數序列僅在時間軸上的離散點有定義,則該隨機變數序列就是一個離散隨機過程。比如股票的日收益率就是離散的時間序列。
在量化投資領域,我們的目標是通過統計手段對投資品的收益率這個時間序列建模,以此推斷序列中不同交易日的收益率之間有無任何特徵,以此來預測未來的收益率併產生交易信號。
一個時間序列可能存在的特徵包括以下幾種:
- 趨勢:趨勢是時間序列在某一方向上持續運動(比如牛市時股市每天都在上漲,股票收益率持續為正;熊市時股市每天都在下跌,股票收益率持續為負)。趨勢經常出現在金融時間序列中,特別是大宗商品價格;許多商品交易顧問(CTA)基金在他們的交易演算法中都使用了複雜的趨勢識別模型。
- 季節變化:許多時間序列中包含季節變化。在金融領域,我們經常看到商品價格的季節性變化,特別是那些與生長季節或溫度變化有關的商品,比如天然氣。
- 序列相關性:金融時間序列的一個最重要特徵是序列相關性(serial correlation),又稱為自相關性(autocorrelation)。以投資品的收益率序列為例,我們會經常觀察到一段時間內的收益率之間存在正相關或者負相關。此外,波動聚類(volatility clustering)也是一種序列相關性,它意味著高波動的階段往往伴隨著高波動的階段出現、低波動的階段往往伴隨著低波動的階段出現,這在量化投資中尤為重要。比如下圖為 2001 年到 2017 年上證指數日收益率的標準差,從中可以清晰的看到波動聚類。
- 隨機雜訊:它是時間序列中除去趨勢、季節變化和自相關性之後的剩餘隨機擾動。由於時間序列存在不確定性,隨機雜訊總是夾雜在時間序列中,致使時間序列表現出某種震蕩式的無規律運動。
量化投資的交易者的目標是利用統計建模來識別金融時間序列中潛在的趨勢、季節變化和序列相關性。利用一個好的模型,金融時間序列分析的主要應用包括:
- 預測未來:為了成功交易,我們需要在統計上「準確」預測未來的投資品價格或者收益率。
- 序列模擬:一旦發現了金融時間序列的統計特徵,我們可以使用它們來模擬時間序列並進行場景分析。這對於估計交易次數、期望交易成本、期望收益率至關重要,從而最終定量的計算一個策略或者投資組合的風險分布和盈利水平。
上文說到,金融時間序列的關係中,最重要的當屬自相關性。這是因為我們很容易從一個時間序列中識別出趨勢以及季節變換。當除去這些關係後,剩下的時間序列往往看來十分隨機。然而對於金融時間序列,比如投資品的收益率,看似隨機的時間序列中往往存在著驚人的自相關。對自相關建模並加以利用能夠大幅提高交易信號的準確性。配對交易的均值回復策略就是這麼一個例子。均值回復策略利用一對投資品價差序列的負相關性進行投資,產生做多或者做空的交易信號,實現盈利。
金融時間序列分析的核心就是挖掘該時間序列中的自相關性。
本文的下面幾節就來介紹如何計算時間序列的自相關性。為此,首先來看兩個基礎概念:協方差和相關係數。之後會談及時間序列的穩定性,它是時間序列分析的一個必要前提。最後介紹時間序列的自相關性。
3 協方差和相關係數
本節介紹概率論中的基礎概念:協方差和相關係數。熟悉它們的讀者可跳過。
假設兩個隨機變數 和 滿足未知的概率分布(可以是同分布也可以是不同的分布)。 為求解數學期望的運算符。 和 的總體協方差(population covariance)為:
其中, 和 分別為 和 的總體均值(population mean)。
協方差告訴我們兩個隨機變數是如何一起移動的。
在實際中,由於總體的概率分布未知,我們只能通過 和 的觀測值來計算樣本均值(sample mean)。假設我們各有 和 的觀測值 個,則它們的樣本協方差(sample covariance)為:
其中, 和 為 和 的樣本均值。上面公式中右側之所以除以 而非 的原因是,這麼做可以保證樣本協方差是(未知)總體協方差的一個無偏估計(unbiased estimator)。
假設我們隨機生成兩個隨機變數 和 的序列,它們的散點圖如下。
按照上面的公式, 和 的樣本協方差為 893.215203。它有什麼意義呢?在回答這個問題之前,讓我們再來看另外兩個變數,我們稱之為 和 。它們分別定義為 和 。可見,它們僅僅是 和 各乘以 100 得到的。 和 的樣本協方差為 8932152.03,這是 和 的協方差的 10000 倍。然而,如果僅僅因此就得出 和 的相關性高於 和 的相關性就大錯特錯了。事實上,由於 和 是由 和 分別乘以 100 得到的,因此它們之間的相關性顯然和 與 的相關性相同。
上面這個例子說明使用協方差衡量變數相關性的致命缺點:協方差是有量綱的,因此它的大小受隨機變數本身波動範圍的影響。在上個例子中,當兩個隨機變數的波動範圍擴大 100 倍後,它們的協方差擴大了 10000 倍。因此,人們希望使用某個和協方差有關,但是又是無量綱的測量來描述兩個隨機變數的相關性。最簡單的做法就是用變數自身的波動對協方差進行標準化。相關係數(correlation 或者 correlation coefficient)便由此得來。
令 表示 和 的總體相關係數(population correlation),它的定義為:
其中 和 分別為 和 的總體標準差(population standard deviation)。通過使用 和 的標準差對它們的協方差歸一化, 的取值範圍在 -1 到 +1 之間,即 [-1, +1]:
- 表示 和 之間存在確切的線性正相關;
- 表示 和 之間不存在任何線性相關性;
- 表示 和 之間存在確切的線性負相關。
值得一提的是,相關係數僅僅刻畫 和 之間的線性相關性;它不描述它們之間的(任何)非線性關係。在實際中,由於總體的概率分布未知,我們只能通過 和 的觀測值來計算 和 的樣本相關係數(sample correlation):
在上面的例子中,無論考慮 和 還是 和 (即無論如何縮放 和 ),它們的相關係數都是 0.894655,這和我們的預期相符。由於這個數值非常接近 1,它意味著 和 之間存在很強的線性正相關。
4 時間序列的平穩性
平穩性(stationarity)是時間序列分析的基礎。
為了通俗的理解平穩性,來看下面這個類比(這是我能想到的最好的例子)。假如某股票的日收益率由轉輪盤賭決定:轉到不同數字就對應不同的收益率。在每個時刻 ,我們都轉同一個輪盤賭並確定收益率 。只要這個輪盤不變,那麼對於所有的 , 的概率分布都是一樣的、不隨時間變化。這樣的時間序列 就是(嚴格)平穩的。如果從某個時刻 開始,輪盤發生了變化(比如輪盤上面的數字變多了),那麼顯然從 開始, 的分布就便隨之發生變化,因此時間序列 就不是平穩的。
在數學上,時間序列的嚴平穩(strictly stationary)有著更精確的定義:它要求時間序列中任意給定長度的兩段子序列都滿足相同的聯合分布。這是一個很強的條件,在實際中幾乎不可能被滿足。因此我們還有弱平穩(weakly stationary)的定義,它要求時間序列滿足均值平穩性(stationary in mean)和二階平穩性(secondary order stationary)。
如果一個時間序列 滿足以下兩個條件,則它是弱平穩的:
- 對於所有的時刻 ,有 ,其中 是一個常數。
- 對於所有的時刻 和任意的間隔 , 和 的協方差 ,其中 與時間 無關,它僅僅依賴於間隔 。特別的,當 時,這個特性意味著 —— 的方差 —— 不隨時間變化,等於一個與時間 無關的常數 ,這稱為方差平穩性(stationary in variance)。
弱平穩假設對於分析投資品收益率至關重要。
為了解釋這一點,來看一個例子。假設我們想知道 2017 年 5 月 16 日這天上證指數收益率的均值是多少,而我們的猜想是它來自一個未知的分布。也許你會馬上說「查一下 Wind 不就知道了?上證指數那天的收益率是 0.74%」。注意,0.74% 這個數值僅僅是那天上證指數未知收益率分布的一個實現(realization)!它不是均值,因此從時間序列分析的角度來說僅僅知道 0.74% 遠遠不夠。
對於一般的未知概率分布,只要通過進行大量重複性實驗,就可以有足夠多的獨立觀測點來進行統計推斷(計算均值和方差這些統計量)。按照這個思路,我們必須把 2017 年 5 月 16 日這一天經歷許多遍,得到許多個那天的收益率觀測值,然後用這些觀測值計算出收益率的均值。不幸的是,歷史只發生一次,時間也一去不復返,我們只能實實在在的經歷一遍 2017 年 5 月 16 日,只能得到一個收益率的觀測點,即 0.74%。因此這個方法對於金融數據是行不通的。
然而,如果我們假設上證指數的收益率序列滿足弱平穩,就柳暗花明了。根據弱平穩假設,上證指數的日收益率序列 的均值是一個與時間無關的常數,即 。這樣便可以利用一段時間的歷史數據來計算出日收益率的均值。比如我們可以對上證指數在 2017 年交易日的日收益率序列取平均,把它作為對總體均值 的一個估計。根據弱平穩性,該平均值也正是 2017 年 5 月 16 日的收益率均值。
同樣的道理,在弱平穩的假設下,可以根據歷史數據方便的對時間序列的諸多統計量進行推斷。在金融文獻中,也通常假定投資品收益率序列是弱平穩的。只要有足夠多的歷史數據,這個假定可以用實證方法驗證。比如,我們可以把數據分成若干個子集,並分別計算每個子集的統計量,然後通過統計的手段檢驗這些來自不同子集的統計量的一致性。
需要說明的是,即便是弱平穩性,有時金融數據也無法滿足。回想第二節中那個上證指數日收益率標準差的圖,它清晰的說明,在 2001 到 2017 年之間,標準差是隨時間變化的。這意味著在這段時間內,收益率序列不滿足二階平穩性。對於此,我們可以通過更複雜的非線性模型對波動率建模(比如 GARCH),又或者可以把時間段細分為更短的區間,使得在每個小區間內的收益率序列盡量滿足弱平穩性。
有了上一節和本節的內容做鋪墊,下面我們就可以聊聊時間序列的自相關性了。
5 自相關性和自相關函數
假設我們有弱平穩的投資品收益率序列 。自相關性考察的是 時刻的收益率 和距當前任意間隔 時刻的收益率 之間的線性相依關係( 的取值是所有 的整數)。由於 和 來自同一個時間序列,因此我們將第三節中的相關係數的概念應用到 和 上,便推廣出自相關係數(autocorrelation)。
定義: 和 的相關係數稱為 的間隔為 的自相關係數。
在弱平穩假設下,這個間隔為 的自相關係數與時間 無關,而僅僅與間隔 有關,由 表示。由第三節中介紹的相關係數的定義可知:
上面的推導中用到了弱平穩的性質,即協方差和方差平穩性(換句話說,二階平穩性)。從這個定義不難看出,當 時有:
這表示 的間隔為 0 的自相關係數恆定為 1。此外, 還有如下的性質:
和第三節一樣,上面定義的 是總體的統計特性。實際中,我們仍然只能通過有限的樣本數據來計算樣本的統計特性。令 為與 對應的樣本統計量,則有:
上式中, 是 的間隔為 的樣本自協方差(sample autocovariance of lag ); 為 的間隔為 的樣本自相關係數(sample autocorrelation of lag )。
如果把 看作是 的方程,則它通常被稱為樣本自相關方程(sample autocorrelation function;同樣的, 為總體自相關方程),它刻畫了時間序列的重要特性。利用相關圖(correlogram)可以清晰地看到 是如何隨間隔 變化的。
下圖為兩個假想時間序列的相關圖。它們呈現出完全不同結構的自相關性。事實上,第一個相關圖的時間序列存在明顯的趨勢;而第二個相關圖的時間序列存在明顯的周期性。這兩個例子說明相關圖可以告訴我們很多時間序列的內在特性。
金融時間序列的相關圖雖然遠沒有這兩個假象序列的相關圖這麼有結構,但相關圖在我們對時間序列建模時至關重要。之前已經說過,金融時間序列,特別是收益率序列,最重要的特性是一些不容易被發現的自相關性。(通常股票的收益率序列沒有季節性或者明顯的趨勢性;即便是弱趨勢也可以由自相關性反應。)因此,拿來一個收益率序列,只要畫出相關圖,就可以檢測該序列在任何間隔 有無統計上顯著的自相關性。
對金融時間序列建模,最重要的就是挖掘出該序列中的不同間隔 的自相關性。相關圖可以幫助我們判斷模型是否合適。這是因為金融時間序列的特徵中往往包括相關性和隨機雜訊。如果模型很好的捕捉了自相關性,那麼原始時間序列與模型擬合的時間序列之間的殘差應該近似的等於隨機雜訊。殘差序列自然也是一個時間序列,因此可以對它畫出相關圖。一個標準隨機雜訊的自相關滿足 以及 , 即對於任意不為 0 的間隔,隨機雜訊的自相關均為 0。下圖為一個隨機雜訊的相關圖(我們是用標準正態分布構造了有 500 個點的隨機雜訊序列):
關於這個圖:
- 顯然,間隔為 0 的自相關係數為 1;
- 對於任意的 ,藍色的陰影區域為 95% 的置信區間。因此,自相關係數只要沒有超過藍色陰影區域,我們就無法在 5% 的顯著性水平下拒絕原假設(原假設為間隔為 的自相關係數為 0)。上圖的結果說明當 不為 0 時,隨機雜訊的自相關係數為 0。
因此,在評價對金融時間序列的建模是否合適時,我們首先找到原始時間序列和它的擬合序列之間的殘差序列;然後只要畫出這個殘差序列的相關圖就可以看到它是否含有任何模型未考慮的額外自相關性:
如果殘差的相關圖和上面這個圖相似,則可以認為殘差是一個隨機雜訊,而模型已經很好的捕捉了原始時間序列中的自相關性;
如果殘差的相關圖體現了額外的自相關性,它們將為我們改進已有的模型提供依據,因為這些額外的自相關說明已有模型沒有考慮原始時間序列在某些特定間隔上的自相關。
6 下文預告
作為金融時間序列分析系列的開篇,本文介紹金融時間序列的特性和進行金融時間序列分析的目的;並解釋時間序列分析中的核心概念:自相關性。對金融時間序列建模的核心就是捕捉該序列中不同間隔上的自相關性。相關圖可以清晰地刻畫任何一個時間序列在不同間隔的自相關性。
在下一篇中,我們將會從最簡單的白雜訊和隨機遊走出發,說明它們無法有效刻畫投資品收益率序列中體現出來的自相關性。這會促使我們提出更高級的模型,包括 AR,MA,以及 ARMA。這些模型背後的理論是什麼?如何正確的挑選模型的參數以構建最適當的模型?這些將會在本系列後面幾篇文章中探討。
原創不易,請保護版權。如需轉載,請聯繫獲得授權,並註明出處,謝謝。已委託「維權騎士」(維權騎士_免費版權監測/版權保護/版權分發) 為進行維權行動。
推薦閱讀:
※美林數據王璐:價值可衡量——工業大數據的實用主義
※數據挖掘的知識大綱
※數據分析之數據可視化
※numpy的高緯數組轉置方法transpose()
※為什麼你的女神總缺一支口紅?一張可視化圖表告訴你!