朱智賢
(中國計量大學,浙江 杭州 310018)
在投資策略里,人們一直以來在為收益與風險想方設法,以此獲得盡可能高的收益,同時承擔盡可能低的風險。在過去,投資策略往往來自于主觀性的決策,比如投資經理憑借自身對技術指標的經驗,從而做出買賣決策,這樣的行為即存在很大的主觀性。在瞬息萬變的金融市場中,主觀交易者要處事不驚同時又要眼疾手快地捕捉到稍縱即逝的機遇,如此需要精力的狀態每天持續,也難免會力不從心。相反,量化投資在面對大量信息的時候,可以利用編程語言等工具來構建算法,做到客觀地分析數據,實現無限精力,概率取勝,紀律性強的自動化交易,大大地提高了分析數據信息和交易的效率。
為了將機器學習應用到我們的真實世界的策略中,一般將采用6個步驟:
在大多數情況下,需要收集文本文件、電子表格或者數據庫等的單一數據源。
任何機器學習項目的質量基本取決于它的數據的質量,所以要了解數據信息,在使用前,需要花費大量時間去修復或者清理一些不規范的數據,刪除不必要的數據并標準化,以便后期的模型處理。
在已經準備好用于分析的數據時,很有可能已經有了對數據如何處理的想法,選擇合適的機器學習算法。
由于機器學習模型會產生一個問題的有未知偏差的解決辦法,所以評價算法從經驗中學習是很重要的,那么可用測試集來評價其準確性。
需使用更高級的方法來提高模型性能。比如可以更換一個完全不同的模型;補充一些其他的變量數據或者對數據進行額外的準備工作等。
如果模型性能令人滿意,就可以將之用到預期的任務里,比如預測股價等。
現今的大數據時代下,基于機器學習的數據運用越來越頻繁,比如翻譯語言中的語音識別、信息檢索和自動駕駛。可以看到,越來越多的人注意到機器學習這個領域。特別是最近幾年興起的量化投資,已是每一位股票研究員值得關注與學習的條件。
以機器學習為工具,均進行隨機森林(RM)、邏輯斯蒂(Logistic)、支持向量機(SVM)、平均神經網絡(Neural network)和XGBoost模型訓練測試,比較他們的準確性、敏感性和特異性。模型之間對比之后選擇最佳的模型建立股票池,接著利用各股等權重比例構建量化投資策略,進行回測得出每一年的收益率和累計收益率,并與大盤進行比較。
從Wind數據庫獲得到這些財務指標數據,在建立機器學習模型之前,需要對數據進行收集(從Wind數據庫里導出)、處理缺失值(數據刪除和填補)、數據歸一化,PCA對數據進行降維等。對財務指標輸入變量的處理大部分為缺失值的處理,缺失值處理本文采用的是最近鄰插值和近五年平均數及整體平均數的數據填補方法。對Y輸出變量的處理需要用到收盤價的數據,當股票的收盤價漲跌幅大于 HS300 指數的漲跌幅,Y的值取1,反之則取 0。相比之下,在R語言編程語言中,對輸出變量的處理速度要比輸入變量快很多。將數據處理至符合訓練測試的要求時,利用五種算法對數據進行訓練測試,得出準確性、敏感性和特異性綜合水平最佳的算法。使用最佳的算法預測出每一年上漲概率前20的股票,按等權配重分配,建倉、調倉8次構建一個長期的投資策略,最后回測得出該投資策略的收益率是否令人滿意。
本文將更傾向于隨機森林和XGBoost能得到不錯的預測概率,結果:比較準確率的話,隨機森林>平均神經網絡>XGBoost>邏輯斯蒂>支持向量機。隨機森林算法是合適的量化選股型,在這里本文基于隨機森林模型使用填補和歸一化后的財務指標數據,每年依照模型預測出的上漲(up)的概率從高到低選20只優質股。收益率高出HS300大盤51.5%,跑贏了大盤。