深度學習與金融市場——這個模型像極了愛情

      我們可以看到網上有很多的用LSTM預測股價的模型,這個模型的真的是像極了財神爺!那麼它是真的能夠達到一定的準確率嗎?或者說它真的能給我們帶來收益嗎?

      我們先來看看LSTM,它的英文全稱是Long-Short Term Memory,中文叫長短期記憶。它是基於人的記憶特性來的,我們都知道,我們會忘掉低頻發生的事情,而記住高頻發生的事情。也就是說,你如果經常幹一件事,你肯定記得特別清楚,反之如果一個活,你乾的少,你肯定就不熟練,不熟練的意思就是你忘了。從邏輯上講,它比較適合一些比如寫文章啦,對話啦這樣的任務。由於它本身的特性,很多人將它用來預測股價,它其實也是一個模式識別,也就是說當它發現股價這樣這樣這樣之後,接下來的股價是這樣的。一般大家做的都是Seq-to-Price,也就是用多天的股價來預測接下來一天的股價。那麼LSTM到底是怎麼樣的一個原理呢?其實,說白了就是有一個遺忘機制,不常用的它就忘記了。

      那麼用LSTM模型的預測我們說到底靠譜不靠譜呢?我先用Keras來給出這個模型。

model = Sequential()

model.add(LSTM(32, input_shape=(30, 5), return_sequences=True))

model.add(Dropout(0.2))

model.add(LSTM(32, return_sequences=False))

model.add(Dropout(0.2))

model.add(Dense(1))

model.add(Activation("relu"))

opt = optimizers.adam(lr=1e-5)

model.compile(loss="mse", optimizer=opt)

這個模型裏我們用了2個LSTM層加一個dense層,每個LSTM層均有32個核心。我們用30天的OHLCV數據來預測下一天的Close Price。我們加了dropout來避免過擬合。我們的dense層輸出下一天的股價。看到這裏大家可能覺得,這麼簡單的模型,一定不能工作。好的模型和大小關係不大,那麼這個模型工作嗎?我們接下來一起來看。它的訓練也非常簡單,2G 顯存的顯卡足以搞定它的訓練。

      這裏我們就直接來放出它的預測結果,這個結果看起來是不是非常的激動人心,當然這個結果還是在我對數據沒有進行歸一化處理之前的結果,進行歸一化處理之後的預測更加能讓你小鹿亂撞,不,是心潮澎湃,感覺人生到達了高潮。看起來預測的曲線和實際的股價擬合的非常好,在這裏再告訴大家一個鐵律,一旦你發現你的股價和你的預測吻合的非常好,一定是因爲你的圖太小,時間週期太長,放大了看看就明白了,另外一個好辦法就是用回測來驗證你收益率有多少。基本上虧損和盈利都是隨機的,並且同樣的模型放在一支股票上挺好使,另外一隻股票上一坨屎。這就是說明模型的泛化能力不行。

      那麼是否說明LSTM不行呢?非也,是股價預測不行!你仔細思考一下,你的股價如果在28塊,你的股價預測基本都在它左右,最後的曲線擬合很好也很正常。但是股價預測用LSTM爲什麼不工作呢?很簡單,LSTM適合來做文本預測,我們漢字常用字纔多少個?股價到分的話一塊錢都有100個,這是原因之一,其二,“我”,“在”這兩個字是有明確的意義和上下文的,它的搭配是固定的那麼多個。那麼股價10塊和10塊1毛之間有固定的聯繫嗎?沒有!有180-200個股價和10塊的組合是有可能的,對應漲停與跌停!但這不是等於猜嗎?所以如果我們要去預測股價,我們至少需要對數據進行一些特殊的離散化處理!這部分我們以後再來討論。

最後,我們的結論很明確了,用文中的LSTM模型結合OHLCV來預測股價是不靠譜的,儘管看起來很美!瞭解更多深度學習和量化知識,請移步我的星球:AI量化(https://t.zsxq.com/RvfY37y) 星球限時免費,如需加入,請私信我獲得免費邀請碼!微信公衆號:QTechAI

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章