當前位置:
首頁 > 最新 > 如何從技術上成功預測比特幣價格?

如何從技術上成功預測比特幣價格?

關鍵時刻,第一時間送達!

許多論證聲稱,通過深度學習網路可以準確預測加密貨幣的價格波動。本文則用實際數據打臉:別被玩弄了!這種所謂的「準確預測」存在很多坑。

以下為譯文:

我試著建了個深度神經網路來預測比特幣的價格,結果准得不可思議。

想知道什麼情況嗎?先看看我的預測結果吧。

貌似很準確,是不是?

不用你問,我直接告訴你答案:沒錯,上面的測試是在沒遇到過的數據上做的,模型訓練時只用到了之前的數據(稍後解釋細節)。

看來這是個發家致富的搖錢樹!對吧?其實我都可以給你上面模型的代碼,然後這樣你就可以自己用了......

好了正經點,千萬別這麼干!別在交易中使用這種模型,雖然這些看似準確的結果相當有迷惑性,但是千萬不要被騙了。

下面我來具體解釋。

事出反常必有妖

前幾周甚至前幾個月,我看了太多文章,它們採用和上面類似的途徑顯示了加密貨幣價格的預測圖。

但是,這些準確得令人難以置信的價格預測,應該立刻引起你的警覺。「如果一件事情好得難以置信,那通常就是假的。——Emmy Rossum」

下面我想演示下為何事情會如此。

不過不要誤會——我不是要否定那些文章做出的努力。那些文章真的很好,值得人們為其鼓掌。實際上,許多方法在理論上來說確實非常準確。而本文的目的主要就是要揭示,為何在實踐中那些模型是不合理的?為何其預測不一定適合實際的交易?

利用LSTM預測比特幣的價格

為了便於說明,首先介紹一個利用多維LSTM(長短期記憶)神經網路來預測比特幣價格,並生成上面的預測結果的例子。

LSTM是一種特殊的RNN(遞歸神經網路),十分適合帶有時間序列的問題。因此,在預測加密貨幣價格和股市方面LSTM十分流行。

想深入了解LSTM可以讀一讀這兩篇文章:

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

http://blog.echen.me/2017/05/30/exploring-lstms/

下面的LSTM實現採用了Python和Keras(https://keras.io/)。

相應的Jupyter Notebook請參見我的Github:

https://github.com/neocortex/lstm-bitcoin-prediction

獲取數據

圖註:比特幣的歷史價格數據的一部分

這樣我們就有了過去2000日的BTC數據,從2012/10/10直到2018/4/4。

分割訓練集和測試集

接下來,我將數據分割成了訓練集和測試集。使用最後的10%數據作為測試,這樣分割線位於2017/9/14。所有在該日期之前的數據被用於訓練,該日期之後的數據用於測試訓練好的模型。下面,我畫出了DataFrame的close列,這就是我們要預測的每日收盤價格。

圖註:比特幣歷史價格數據分割成訓練集和測試集

構建模型

為了訓練LSTM,我們將數據按照7天的時間段分割(時間長度可以人選,我只是簡單地以一周為時間段),每個時間段內以零為基礎(zero base)將數據正規化(normalize),即每個時間段內的第一條數據為0,其他值表示與第一條數據之間的相對變化。因此,這裡預測的是價格變動,而不是絕對的價格。

這裡採用了一個簡單的神經網路,包含一個由20個神經元組成的LSTM層,dropout率為0.25,還有一個密集層(Dense),激活函數為簡單的線性函數。此外,損失函數用的是MAE(Mean Absolute Error,平均絕對誤差),優化器用的是Adam。

我將該網路訓練了50個epoch,batch大小為4。

注意:網路架構和所有參數都可以任意選擇,這裡我沒有做任何優化,因為這不是本文的中點。

結果

使用訓練好的模型預測剩下的測試集,得到本文開頭的那張圖。

那麼究竟這些結果有什麼問題?仔細看看並放大圖像到最近30日。

看到了嗎?

可能你已經猜到了,這個模型最根本的問題在於,對於給定某天的預測,它幾乎與前一天的實際結果相同。

預測曲線看起來只不過是把實際曲線平移了一天而已。

實際上,如果把預測曲線平移一天,這個結論就更明顯了。

如上圖所示,預測曲線和實際曲線完美地匹配在一起,這說明模型實際上在學習前一天的價格。

該結果與我在許多使用LSTM做單點預測的例子中看到的一樣。

為了更明確地說明這一點,我們來計算下模型預測的返回結果和實際的返回結果:

觀察實際和預測的返回結果,一個是原始形式,一個是平移了一天的形式,可以得到相同的結論。

實際和預測的返回結果,左側的圖形中預測結果調整了一天。

實際上,如果計算下實際和預測返回結果之間的關聯度,可以發現以下結論:

從上面的圖形中可見,實際和預測的返回結果實際上沒有相關性。但將預測返回結果偏移一天之後,就能觀察到極強的相關性,說明預測結果在重複實際的比特幣數據。

總結

本文的目的是討論我這幾個月看到的許多關於利用深度神經網路預測加密貨幣和股市價格的例子。這些文章用的方法與這裡類似:利用歷史價格數據實現一個LSTM,並預測未來的走勢。

而本文演示了為何這些模型無法在實際交易中使用。

沒錯,網路在學習方面很有效。但學習到的策略卻是預測一個盡量接近於前一天的數值,因為這樣能獲得最小的平均絕對誤差。但是,無論這種預測在損失函數上的結果多麼精確,在實際中,僅基於歷史價格數據的單點預測模型的結果依然很難準確,在實際交易中幾乎沒有任何用處。

當然,可能存在更複雜的方式,在價格預測方面實現更有用的LSTM。可以從使用更多的數據,同時優化網路結構和超參數開始。但是我認為,更可能的是採用歷史價格數據之外的數據和特徵。畢竟,投資的世界中已有共識——「過去的業績不代表未來的產出」。

同樣的結論對於加密貨幣應該也成立。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

拿 1% 月收入買比特幣,比養老金更靠譜!——CSDN 蔣濤答王峰十問
「WiFi 萬能鑰匙」盜 9 億用戶數據,如何看待運營平台濫用隱私的問題?

TAG:CSDN |