寫在前面
下面這篇文章的內容主要是來自論文《A novel data-driven stock price trend prediction system》,其提出了一種基于數據驅動的股票價格趨勢的預測系統,并附上了系統的源碼。這篇論文提出的方法較為新穎和實用,所以整理了一下與大家分享。原論文以及該系統的源碼鏈接在文末。
01 摘要
這篇論文中提出了一種股票價格趨勢預測系統,它可以預測股票的價格波動方向以及在一段時間內的漲幅或者跌幅。這個系統主要分為了兩部分,第一部分是通過一種非監督的算法對價格數據進行切分,并對切分得到的切片(clips)數據進行分類,來表示不同的價格趨勢;第二部分是根求前面得到的切片來訓練預測模型,預測模型用到了Random Forest(隨機森林)。最后通過七年的深市創業板數據來驗證了模型的有效性。
02 模型框架
通常對于監督性學習來說,模型的訓練都需要基于標注的數據,而對于股票趨勢分類來說的話,這個工作不免有些巨大和繁瑣。所以這篇文中首先通過啟發式非監督算法來劃分價格的模式。具體分為了四種:
Up:表示上漲模式,同時這個模式又根據上漲范圍的大小被劃分了兩個子模式,如上漲區間在[10%, 30%]內和大于30%。Down:表示下降模式,同上漲模式一樣,它也根據下降范圍的大小被劃分為了子模式。Flat:表示近似平緩的模式。Unknown:表示以大振幅波動的模式。其中識別算法在下面的03模型訓練部分中進行了展示。
這個系統的目的是根據一段時間(如過去一段時間到現在)的模式,來預測它是否可以構成前面劃分的幾種模式,并預測其生成這個模式的概率。由于這里不是傳統的01分類,而是一種模式預測的概率,所以這里的實際用處還是相對比較高的。
預測模式的持續時間文中稱作PD(Pattern Duration),用于訓練的持續時間文中稱作MD(Model Duration)。具體如下面的圖所示:

對于不同持續時間的組合在其系統中也有進行預先設計,以便于這個系統可以開箱即用。
在實際的應用中,整個過程其實就可以看做是通過一個滑動窗口的形式,不斷的對股票價格序列進行切片,訓練以及模式識別的過程,具體如下面論文中的過程圖:

模型的預測部分用到的是隨機森林模型,畢竟對于要求高可解釋性的量化交易領域中,像決策樹或者邏輯回歸這類較為透明的算法還是較為合理的。預測的訓練過程部分也在03模型訓練部分中。
最后,整個交易系統的模型框架,包括整個系統的軟件設計架構在下面進行了展示:

03 模型訓練
對于面前定義的非監督算法進行模式識別的具體步驟如下面的Algorithm1所示,由于上漲模式的識別其他模式識別的算法類似,所以Algorithm1只展示了上漲模式的識別步驟:

而預測部分的Random Forest的訓練步驟如下面的算法Algorithm2過程所示,這里的算法流程與傳統的Random Forest的訓練過程還有些不同,因為考慮到了模式類中的不平衡性,所以這里還加入了undersampling的方法。

04 實驗驗證
實驗的驗證部分用到了真實的股票數據,來自深市科創板的495支股票,時間是從2010年1月25到2016年1月26日,并與常見的機器學習模型,如SVM、ANN以及KNN算法進行了預測準確率和收益率的比較。比較的效果如下面的表所示:


在不考慮各種滑點、手續費等因素的前提下,可以看出,論文中提出的方法的效果還是很客觀的。
05 總結以及感悟
對于高噪聲高不可預測性的股票市場,各種探究方式包括機器學習、統計推理等技術,作為理論研究學習一下還是不錯的,但是實際應用起來還是需要更加充分的準備以及針對市場真實環境來改進的。
由于這篇文章涉及的理論性創新并不是很多,但是其工程實現方面還是很充分的,并且這個系統中還可以結合各種機器學習的模型用于預測,所以拓展性還是很強的。另外,通過結合其他方式的特征選擇來識別更多趨勢形態以提高預測準確率也是很有價值的。
論文中提出的系統的鏈接是:
https://sourceforge.net/p/xuanwu/svn/HEAD/tree/
關注公眾號《人工智能量化實驗室》,后臺發送008可獲取原論文。

以上就是【我怎么沒早點發現!干貨滿滿(關于機器人的論文參考文獻是什么)近些年機器人論文參考文獻-論文解讀:一種基于機器學習的數據驅動股票價格預測系統(附系統代碼鏈接)】的全部內容。


評論