如何用 Machine Learning 學習總體經濟?分析全球指數對 NASDAQ 的影響
今天這篇 paper是介紹總體經濟,現在全球的經濟是連動的,例如中美貿易大戰影響到全球股價,金價油價對於美國股市也有很大的影響,今天這篇 paper 就是要來研究不同的指數,對於 NASDAQ 指數的影響。
這篇文章利用美股開盤前的所有重要指數,例如油價、貴金屬價格、以及全球股市的對於美股的影響,既然全球市場是連動的,那這其中必定有一些關聯,下圖就是這篇 paper 所使用的重要指數:

建構 features
這篇文章想要找出股價的趨勢,而不是絕對數值,所以其 features 除了股價外,也有一段時間股價的變化,這邊先叫做 window size w,並且對於價格的變化進行 normalize。
分析 features
我覺得本文值得讚許的地方在於有提供一些簡單的方法做 features 的分析,可以由這些方法知道哪些 features 對於預測是非常有幫助的!
論文中使用了 cross correlation 來分析各種不同商品的價格對於 NASDAQ 影響。要說明 cross correlation,就要先從 correlation 說起,correlation 是兩種不同的數據,其相關性的係數。correlation 介於 -1 到 1 之間,分別代表這兩種時間序列之間的關聯性:
- correlation = -1:代表數據完全負相關,也就是 A 漲 B 就跌的概念
- correlation = 0:代表數據之間沒什麼關聯,也就是 A 漲跌跟 B 漲跌完全沒關係
- correlation = +1:代表數據之間是正相關,也就是 AB 同漲同跌的關係
那「cross」又是什麼意思呢?就是將兩組時間序列的時間錯開,差 N 天,並且觀察其 correlation。
下圖就是所有的商品對於 NASDAQ 的 cross correlation 分析,X 軸就是差 N 天的 N,而 Y 軸就是 correlation,可以看到,在 X = 0 時,NASDAQ 跟 NASDAQ 的相關性是 1,代表 NASDAQ 與自己的指數完全正相關,而很多商品都會在 N = 0 時有正相關性!

所以我們使用 N = 0 來預測 NASDAQ 的股價會是最好的,但是 N = 0 的資料是沒有辦法使用的,因為你不能在當天的開盤就知道 NASDAQ 的收盤價,這樣就代表用到未來數據了。
所以我們只能退而求其次,用 N < 0 的資料,也就是前 N 天的資料,我們可以發現 N = -1 的地方有一點小突起,代表某些資料對於 NASDAQ 的 correlation 也是很高的,可以拿來利用!
唯一想吐槽的是這張圖很多顏色都重複,所以根本看不太清楚是哪些商品,拿來預測 NASDAQ 比較準。
三個維度的 cross-correlation
另外,這篇 paper 也提供了不同股價區間差 w 對於漲跌的 correlation:

可以發現商品價格與 NASDAQ 股價之間是有一定的關係的,假如商品之間彼此沒有關聯,這張圖就不會呈現三角形的山丘狀,而是會看起來像是隨機的樣子。
上面這張圖說明了一件事情,股價變化越長時間來觀察 (w 越長),NASDQL 跟許多商品的前一天的 correlation 是越高的,可以藉由提高精準度!
藉由上述的兩個實驗,我們知道股價變化量的重要性,重點不是股價本身,而是股價的漲跌幅度才有辦法更好的預測股價~
除此之外,作者想要進一步知道哪些時間序列對於 NASDQL 是重要的,所以進行了一個簡單的預測實驗
預測明天的價格
作者也利用每一個單一序列當作單一 feature,來預測隔天的漲跌,發現利用 DAX 這個時間序列來預估 NASDQL 會得到最好的結果:

作者並沒有說這邊的 model 是哪一種,我猜應該是 SVM,因為 feature_size 很小。 這樣我們就可以找到比較重要跟不重要的時間序列,之所以要這樣是因為此篇 paper 有用 SVM 當作 model,而 SVM 比較適用於小 feature_size 的 traning set。
預測 N 天後的價格
除了每天的價格外,此 paper 也研究 K 天後的價格漲跌,發現 K 越大,則預測的能力越好,下圖中 K 為 x 軸

測試 w 的大小
接下來,此 paper 也測試了不同的 w 對於訓練的成效: f1 score 的影響,f1 score 是 precision 跟 recall 的綜合分數,其中:
- precision 是所有 model 顯示為 true,而真正為 true 的比例
- recall 是所有真正為 true 的資料,被 model 標示為 true 的比例
f1 score 就是 precision 和 recall 的 harmonic mean。harmonic mean 同時也被用在電阻的並聯計算上,你可以想像電阻並聯時,假如任何一個電阻太小,電流就會傾向從那裡通過,造成等效電阻很小。同理,你可以想像有一顆電阻叫做 precision,另一顆叫做 recall,任何一方太小,都會導致 f1 score 變得很小。於是 f1 score 就是同時可以兼具 recall 和 accuracy 的一個優化指標。

上圖中的兩條線分別是 positive 和 negative 的 f1 score。當 w 在 0 或是 50 時,f1 score 相對來說比較好。
以上就是分析 w、K、等參數怎麼設定比較好的一些分析,當我們得到這些參數,並且建構出預測漲跌的 model 後,就可以將 model 產生的結果拿來回測
回測績效
這邊總共用了三種方法來回測:
- 假如預測會漲,就持續於整段回測週期持有股票
- 當預測會漲機率上升時,持有股票,不然則賣出
- 當預測會漲時,持有,反之則賣出
以下是回測的結果:

可以發現利用第三種方式,回測的績效比較好,這邊跟我自己做出來的結論是差不多的。
總結
今天學到的一些知識:
- 用 cross-correlation 來分析 features
- 利用 SVM 來測驗單個 features 是否有辦法預測漲跌,進而分析 feature 的好壞
- 使用移動窗格來找出最佳的 f1_score
這篇 paper 利用 ML 的方式,找出世界上重要的商品價格之間的關聯,並且也有使用 SVM 或是 MART 來預測 NASDAQ 指數的漲跌,個人覺得滿有趣的。經總就應該這樣作研究!
美中不足的是應該可以歸納出一些現象,輔助一般不會程式的投資人,這樣會更好!