【七夕特輯のML初體驗】Passive Aggressive,探索因子模型的新姿勢
一把年紀還在ML初探,好羞恥啊!七夕快到了,小編有一條祖傳的染色體,不知道。。。
作者:Myron 原文鏈接:【ML初探】Passive Aggressive,探索因子模型的新姿勢
本文旨在利用 Online 機器學習演算法做因子模型的實踐。
【序言】
- 本文接上篇,依舊探索 sklearn 中的分類器演算法。這次要討論的是另一個經典演算法: Passive Aggressive。
- 很多朋友會說,機器學習,在投資領域才只是個概念性的東西,真正能拿來做策略的方法缺疏於展露。但事實上,機器學習的演算法思維本質上是在模擬人認識和學習事物的本質。在投資的過程中,我們將各種信息量化成指標,依據指標去做投資,如何斷定指標是否有用呢?回測,從統計意義上去判定一個指標是否有效。觀察的樣本越多,對一個指標的認識就越準確。機器學習的方法也是同樣的道理。一個模型,通過不斷的觀察整合新樣本,來自適應的調整自己的最優參量,識別模式,然後做出預測。AlphaGo所用的方法,即通過不斷增加的新的棋盤樣本去調整模型識別某種棋路的能力。這種不斷整合、添加新樣本然後自適應調整模型的演算法通常被稱為 Online 的演算法。本文所介紹的 Passive Aggressive,是經典的 online 線性分類器,它可以不斷的整合新樣本去調整分類模型,增強模型的分類能力。Sklearn 中給出 Passive Aggresive Classifier的具體實現和其參考演算法,有興趣的朋友可以去看看。
【策略原理】
我們知道,一隻股票的因子中包含有很重要的信息,因子在某一段時間的變化率也就自然包含了很重要的信息。那麼,股票因子的變化率對於股票的漲跌有沒有預測作用呢?如果有,該如何去學習出這種預測作用呢?帶著這種疑問,小編有了這樣的想法:
假設按照M的間隔把時間分開, 代表 (t?M)?t這段時間。
對某隻股票,選擇其時段某些因子的變化率作為特徵輸入,其時段的漲跌作為標籤,構成一個訓練樣本。
利用如上所述的訓練樣本,分類器便成了預測器,可以預測某隻股票在下個周期的漲跌。其輸入輸出為:
輸入:某隻股票當前周期下的因子變化數值所構成的特徵向量;
輸出:該股票下個周期的漲跌預測。
每 M 天調倉一次,選股方法為:將分類器預測下個周期會漲的股票納入購選清單。
每次調倉時,universe 中每隻股票都可以貢獻一個新的訓練樣本,先用這些樣本更新模型,再進行選股。
【策略流程】
上圖為策略運行的流程(可看作是 T+M 時刻的 handle_data 過程):
T?M?T : 記錄某隻股票相應因子的變化率,組成特徵向量
T?T+M : 記錄某隻股票的漲跌,組成標籤
T+M 時刻:
將T?M?T 時段的特徵向量與 T?T+M 時段的漲跌組合形成訓練樣本;
利用產生的訓練樣本更新分類器;
利用分類器對 universe 中的股票進行預測其下個周期的漲跌,將預測要漲的股票計入組合;
按資金等分方式買入組合。
【因子監測器】
鑒於策略要對因子的變化進行監測,因此附一個因子檢測器,可以比較方便的依據監測時間、監測時間長度、股票池、因子的不同去獲取相應的變化率。(點擊查看原文代碼)
secID retRatio ASSI BLEV CTP5 MACD
000001.XSHE 1.23% 0.00% 0.00% 0.00% 4.66%
【策略回測】
回測時間: 2015-01-01 ~ 2016-07-01
因子選擇:[MACD,MA5,VOL5,REVS5,VR]
鑒於我們選取因子的變化率作為特徵,基本面因子變化周期很長,因此不適合用作本策略的演算法特徵,所選因子以短線的技術面因子為主。
調倉頻率:兩周一調倉(點擊查看原文代碼)
以上策略13年來的表現,這個相對收益和回撤,如果拿來參加大賽,起碼回測得分可以是很優秀的,只不過15年8月往後的對沖收益就開始慢跌了。
上面為策略14年和15年兩年的表現,如果稍微仔細看,這還是一個相對不錯的絕對收益產品。
【總結】
- 事實上沒必要過於在意上面差強人意的回測結果,這個做法體系中可優化和調參的部分很多,因子的選擇,模型的選擇,股票池的選擇等等。
- 至少來說,機器學習為做因子模型提供了一種新姿勢,模型、因子和訓練方法選擇得當的話,總有一款適合你。
- ps. 上面的代碼主要為了驗證想法,寫的比較耿直,其實還可以優化取數據的部分,省得它跑這麼慢...
【參考文獻】
- [1] Online Passive-Aggressive Algorithms. Koby Crammer? Ofer Dekel, etc.
- [2] http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.PassiveAggressiveClassifier.html#sklearn.linear_model.PassiveAggressiveClassifier
後排廣告位:2000萬實盤FOF基金投資經理正在招募中,感興趣的朋友歡迎報名參加 報名地址
推薦閱讀: