目錄
7. 數據
俗話說,“輸入垃圾,輸出垃圾”。數據的重要性不言而喻。系統輸入變量的屬性決定了可以利用系統進行哪些工作。如果寬客得到的是緩慢變化的宏觀經濟數據,那麼就不可能建立一個快速交易模型。此外存儲和提取數據所使用的數據庫技術很大程度上也取決於數據的屬性。因此,絕大部分頂級的公司都是自己從源頭直接蒐集數據,而不是從數據供應商那裏購買。
7.1 數據類型
寬客使用的數據基本上可以分爲價格數據(price data)和基本面數據(fundamental data)。
價格數據不僅僅是和金融產品價格相關的數據,也包括從交易行爲中提取或得到的其他信息。比如股票的交易量、每筆交易的時間和規模,以及各種指標水平相關的數據(如標普500指數每日記錄的波動百分比)。實際上,整個指令簿都可以看作是價格數據。
基本面數據泛指價格數據以外的所有數據。這些數據有助於決定金融產品未來的價格或者至少描述產品目前的狀況。常見的基本面數據種類有財務健康狀況(financial health)、財務表現(financial performance)、財物價值(financial worth)和情緒(sentiment)等。
一般來說,使用價格數據的相關交易策略通常是短期策略,而使用基本面數據的大都是長期策略。這是因爲價格數據通常比基本面數據更新的頻率更高。
7.2 數據來源
主要的數據來源及數據種類包括以下幾種:
- 交易所:價格、交易量、時間戳、持倉量、空頭持倉量、訂單簿數據;
- 監管機構:各個公司財務報表、個股的大股東持股情況、內部買賣活動;
- 政府:宏觀經濟數據,如失業率、通貨膨脹、國民生產總值等;
- 公司:財務報告和其他公告(如紅利的變化);
- 新聞機構:新聞報道;
- 數據專營供應商:可能有用的一些生產數據。如上市公司報告、基金的現金流數據等。
數據供應商可以解決把來自各種數據源的數據置於統一框架下並進行存儲和分類的問題。但是,不同數據供應商提供的數據類型可能不同。比如,對某一隻股票,數據供應商甲只提供價格數據,供應商乙只提供基本面數據,而且它們採用的識別股票的標識符可能也不一樣。因此,寬客必須找到一種有效的方法,將不同數據供應商的關於同一產品的數據與自己已已有的內部數據庫統一起來。
除了從數據供應商處購買數據以外,也可以從源頭直接獲取原始數據。好處是寬客可以最大限度地控制數據的清洗和存儲,但是這麼做往往也具有很高的成本。對每一個數據源,都需要相應的軟件,把它們轉化爲量化交易系統可以使用的某種格式。
7.3 數據清洗
數據清洗是一項必不可少的工作。即使是從數據供應商處買來的數據,通常也無法避免地存在各種數據缺失或錯誤的情況。常見的數據問題包括以下五種:缺失值、錯誤觀測值、由公司行爲導致的數據錯誤、時間戳錯誤以及前視偏差。
解決缺失值問題有兩種常用方法。一是使用最近的一個已知價格數據,直至出現一個新的可用價格數據爲止。二是在缺失值出現的位置進行插補,補上一個合理的數據。
錯誤觀測值也被稱爲壞點(bad prints)。解決錯誤觀測值問題的第一種方法是異常值過濾(spike filter)。該方法會對價格數據中那些幅度特別大、突然的變動進行平滑處理或者直接刪除。有時候例外的異常值確實存在,因此需要輔以系統監管人員進一步查看確認。當某一數據有多個數據源時,另一種方法是使用來自不同數據源的數據進行交叉覈實。此外,第三種方法與處理缺失值的方法類似,通過觀察壞點出現時前後的數據或者相關產品的表現,計算出一個近似值。
另一個常見的數據錯誤問題與公司的行爲有關,比如配股和分紅。一支股票的價格在配股之後往往會發生明顯的變動,如果數據供應商沒有記錄這次配股行爲,很可能會把發生變動後的數據當成壞點來處理。解決這類問題主要依賴於對公司行爲的獨立追蹤或者人工監管。
錯誤的時間戳通常出現在日間數據或者實時數據中。寬客可以通過對接收到的數據的時間戳與存儲數據時內部的時間進行對比來保證時間戳的正確性。同時,也可以通過對來自不同數據源的數據進行交叉檢驗來解決這一問題。
前視偏差(look-ahead bias)是指在某些事情真實發生之前便錯誤地假設已經知道了相關信息。這類問題通常是由於數據的不同步性造成的。有些數據在初次發佈幾個月以後會進行修正。如果寬客沒有仔細對數據的修正進行追蹤,在之後的研究過程中,很可能就會以爲自己第一次拿到的數據就是最可靠的數據。另一種去常見的前視偏差則是由世界上不同交易所收盤時間各不相同造成的。爲了解決這類問題,寬客可以記錄下數據更新的發佈日期。此外,也可以在關注的數據上加入人工滯後項。
7.4 數據存儲
數據存儲主要有兩種形式,即平面文件(flat file)和關係數據庫。
平面文件是沒有相對關係結構的文件,類似於普通的二維表格,比較簡潔。關係數據庫則允許數據集中出現更爲複雜的關係。
8. 研究
研究是量化交易的核心與靈魂。研究的目的是審查周密思考的投資策略。對於量化交易而言,要基於研究對投資策略進行選擇。
8.1 科學的方法
由於市場是不斷變化的,因此量化研究也是一個不斷持續的過程。研究必須基於科學的方法。
首先,科學方法始於所觀察的世界具有可解釋性的事物。市場也具備某些可解釋性的模式。其次,科學家形成理論去解釋他的觀察結果。第三,科學家必須對理論進行推斷。最後,理論需要進行檢驗。理論的檢驗不是“證明”理論,而是證僞(falsification),即恰當地尋找所推斷結論的反例。尚未被反駁的理論,就可以被認爲暫時是正確的。
8.2 思想的產生
量化研究理論的產生有四個共同來源,即對市場的觀察結果、學術文獻、研究員或投資組合經理在量化公司之間的遷移以及來自主觀判斷型交易者的經驗教訓。
8.3 檢驗
檢驗是研究的中心。其基本流程如下:首先,構建模型,並基於可行數據的某個子集(樣本內數據,in-sample period)訓練該模型;然後在數據集的另一個子集(樣本外數據,out-sample period)檢驗其是否盈利。
8.3.1 樣本內測試
檢驗的第一個步驟是基於樣本內數據尋找最優參數訓練模型。模型的參數是定義模型的某些特性並能影響其表現的變量。
樣本內測試的過程中包含一個重要的決策:如何選擇擬合模型樣本的寬度和長度?對寬客而言,樣本的寬度涉及到使用的股票數量以及如何選擇這些股票,而長度則代表着適用於擬合模型的數據時間窗口。
通過使用更多的數據,寬客構建的模型適用於更廣泛的情景和市場環境,這是的模型更加穩健。另一方面,模型使用的數據越多,當被調整的時候,風險就越大,因爲此時的模型僅僅能對過去進行很好的解釋。
8.3.2 模型好壞的度量指標
寬客使用各種方法衡量模型的好壞。常見的方法有累積盈利圖、平均收益率、收益率隨時間的變異性、波峯波谷間的最大降幅、預測力、勝率或盈利時間佔比、回報相對於風險的不同比率、與其他策略的關係、時間延遲以及特定參數的敏感性等。
累積盈利圖是檢驗過程最有力的輸出量,可以直觀地呈現盈利的時間段和持續時間、盈利的大小、回報流的波動起伏等信息。
平均收益率表明策略在過去的實際運行情況如何,常用的指標如年化收益率。
收益率隨時間的變異性描述的是平均收益率的不確定性。通常,變異性越小,策略越優。常用的指標如收益率的標準差。此外,塊度(lumpiness),即顯著高於平均收益的時間段內的收益佔策略總收益的比例,也是一個備受關注的重要統計量。
波峯波谷間的最大降幅測量的是盈利曲線從任意一個累計波峯開始的最大回測。策略的回測越低,策略越優。
預測力表示預測模型解釋被預測量的變異程度,通常用符號R2表示。如果該值爲1,則表示模型解釋了被預測量100%的變異信息。實際模型的預測力通常不會超過0.1。在模型檢驗中,寬客通常按照分位數的方法對金融產品的潛在預測的收益率進行分組。通常,具有可靠預測力的模型能夠顯示最壞的收益情況出現在最左邊的分組,同時每一個分組的收益率都高於前一個分組。
利用盈利週期與總週期數的比值,可以對盈利的一致性進行度量。該指標可以告訴研究者,系統盈利是來自小比例的偶然表現極其優秀的交易,還是來自多次交易。
對於回報相對於風險的不同比率,比較有名的兩個指標是夏普比率(Sharpe ratio)和信息比率(information ratio)。夏普比率是某週期內高於無風險利率的平均收益率與收益率的波動率之間的比值。夏普比率越高,策略越好。信息比率與之類似,不過在公式中去除了無風險利率。
許多寬客也會同時使用好幾個策略,通過有效的管理策略組合,分擔風險。但是,寬客需要頻繁測量新策略如何適應於已經使用的策略,確保新策略能夠增加價值。
時間延遲涉及到策略對接受信息及時性的敏感程度。但是,延遲信號的實施並不總是意味着導致壞結果。
如果小幅度改變模型的某個參數,結果發生很大變化,那麼我們應該對該參數改變前後的兩個結果都抱持懷疑態度,都不應該予以採用。這是因爲模型被證明對於該參數在此處的微小改變過於敏感。
8.3.3 過擬合
過擬合的本質是研究員使用了過多的數據,建立了一個能夠很好地解釋過去,但是對未來解釋性較差的模型。避免模型過於複雜和過於簡單都是寬客應該注意的事情。
參數擬合的最後一個注意點是參數或者只能適用於過去,或者隨着市場數據的不斷更新,能在未來不斷使用。
8.3.4 樣本外檢驗
到目前爲止,模型的參數已經通過樣本內檢驗(訓練)而固定下來,問題是基於已經被選定的這些參數,模型是否能在全新的樣本外數據集中起到作用。
樣本外檢驗有多種方法。最簡單的就是使用去除樣本內檢驗數據的剩下部分進行檢驗。一些研究員使用滾動樣本外數據的方法(rolling out-of-sample technique)。此外也可以使用不斷增長的數據窗口,隨着時間不斷改變,更多的數據被收集,樣本外檢驗將持續進行。
在進行樣本外檢驗之後,即使模型的檢驗效果不好,也不能在分析原因後重新對模型進行訓練。因爲這一做法實際上是把樣本外數據集當成了樣本內數據集來使用。因此,應該儘量避免在樣本內數據集和樣本外數據集之間來回切換。
Reference:
《打開量化投資的黑箱》,Rishi K. Narang