首頁?學習  »   正文

機器學習技術如何應用于股票價格預測?(上)

機器學習的應用已經非常廣泛,其中之一就是預測時間序列。最有趣(或許也是最賺錢)的預測時間序列之一的當屬股價了。

最近我讀了一篇用機器學習技術預測股價的博客文章。這是一篇寫得很好的文章,其中探討了各種技術。然而,我覺得這個問題可以用更嚴謹的學術態度來處理。例如,文章中的方法“移動平均”、“線性回歸”、“k-近鄰”、“Auto ARIMA”和“Prophet”具有預測期,而“Long – Short Term Memory (LSTM)”具有1天的預測期。在文章的最后,它指出“LSTM已經輕松地超過了我們目前看到的任何算法。但很明顯,我們并不是在拿蘋果和蘋果做比較。這是我對這個問題的看法。

問題陳述

我們的目標是利用前N天的數據預測Vanguard Total Stock Market ETF (VTI)每日調整后的收盤價。我們將使用2015年11月25日至2018年11月23日這三年VTI的歷史價格,可以從雅虎財經輕松下載。下載后,數據集如下:

機器學習技術如何應用于股票價格預測?(上)

VTI下載的數據集。

我們將把這個數據集分成60%的序列、20%的驗證和20%的測試。模型將使用列車組進行培訓,模型超參數將使用驗證集進行調整,最后將使用測試集報告模型的性能。下圖顯示了調整后的收盤價拆分為相應的列車、驗證和測試集。

機器學習技術如何應用于股票價格預測?(上)

將數據集分為60%的訓練、20%的驗證和20%的測試。

為了評估我們的方法的有效性,我們將使用均方根誤差(RMSE)和平均絕對百分比誤差(MAPE)指標。對于這兩個指標,值越低,預測效果越好。

最后一個值

在最后一個值方法中,我們將簡單地將預測設置為最后一個觀測值。在我們的上下文中,這意味著我們將當前調整后的收盤價設置為前一天調整后的收盤價。這是最具成本效益的預測模型,通常用作比較更復雜模型的基準。這里沒有需要優化的超參數。

下圖顯示了使用最后一個值方法進行的預測。如果你仔細觀察,你會發現每一天的預測(紅十字)僅僅是前一天的值(綠十字)。

機器學習技術如何應用于股票價格預測?(上)

使用最后一個值方法進行預測。

移動平均線

在移動平均法中,預測值是前N個值的平均值。在我們的上下文中,這意味著我們將當前調整后的收盤價設置為前N天調整后收盤價的平均值。需要調整超參數N。

下圖顯示了驗證集上實際值和預測值之間的RMSE,對于不同的N值,我們將使用N=2,因為它給出了最低的RMSE。

機器學習技術如何應用于股票價格預測?(上)

驗證集上的實際值和預測值之間的RMSE,用于不同的N。

下圖顯示了使用移動平均法的預測結果。

機器學習技術如何應用于股票價格預測?(上)

使用移動平均法進行預測。

線性回歸

線性回歸是一種線性方法,用于建模因變量和一個或多個自變量之間的關系。我們在這里使用線性回歸的方法是將一個線性回歸模型與前面的n個值相匹配,并使用這個模型來預測當天的值。下圖是n=5的例子。實際調整后的收盤價顯示為深藍色十字,我們希望預測第6天的價值(黃色正方形)。我們將通過前5個實際值擬合一條線性回歸線(淺藍色線),并使用它在第6天(淺藍色圓)進行預測。

機器學習技術如何應用于股票價格預測?(上)

用N=5的線性回歸預測下一個值。

下面是我們用來訓練模型和做預測的代碼。

機器學習技術如何應用于股票價格預測?(上)

機器學習技術如何應用于股票價格預測?(上)

下圖顯示了驗證集上實際值和預測值之間的RMSE,對于不同的N值,我們將使用N=5,因為它給出了最低的RMSE。

機器學習技術如何應用于股票價格預測?(上)

下圖顯示了使用線性回歸方法進行的預測。可以看出,該方法沒有捕捉方向的變化(即下降趨勢到上升趨勢,反之亦然)。

機器學習技術如何應用于股票價格預測?(上)

使用線性回歸方法進行預測。

當然,今天我們是講不完的,休息一下,下次繼續學習。

歡迎關注ATYUN官方公眾號,商務合作及內容投稿請聯系郵箱:[email protected]

發表評論