李迎路
隨著人們對加密貨幣認可度的提升、各國政府出臺的寬松政策以及投資者的進入,加密貨幣市場呈現出火熱態勢,大量的線上交易平臺在全球范圍內建立起來,如今全球加密貨幣市場已達萬億級別。而加密貨幣自身不同于傳統金融工具的性質使得其價格存在巨大的波動性,同時加密貨幣市場不存在漲跌限制,某種加密貨幣的價格在一天內的漲跌幅度可能高達30到40個百分點,投資者面臨著巨大的投資風險。隨著人們對加密貨幣市場理解與研究的深入,出于幫助投資者規避風險、增加市場透明度的目的,加密貨幣市場上出現了類似于股指的被稱作加密貨幣指數的金融工具:它通過對從市場中收集到的交易信息進行加權平均來刻畫市場整體的走向,或者通過特定算法對收集到的市場信息進行匯總來勾畫市場中交易者的整體狀態。加密貨幣指數能夠像證券市場中的上證綜指、滬深300一類的指數一樣成為市場的晴雨表、為投資者提供可投資的風險相對較低的加密貨幣指數基金。
本文著眼于國內有關加密貨幣市場的預測這一課題研究較少的現狀,嘗試通過構建BP神經網絡對加密貨幣指數這種新生事物的收盤價進行預測,希望能夠起到拋磚引玉的作用,以激發起更多優秀的研究者的研究興趣與熱情,從而豐富這一課題的理論與實踐,最終能為投身于加密貨幣市場的投資者提供切實可行的預測工具與理論指導。
國外有大量和加密貨幣市場的預測有關的文獻,有直接預測單一加密貨幣價格的,有預測加密貨幣指數的,也有利用創造出的加密貨幣指數去預測其他幣種的價格。Alex Greaves和Benjamin Au分別使用線性回歸、logistic回歸、支持向量機、神經網絡四種機器學習算法實現了對未來一小時比特幣價格的預測,結果顯示:神經網絡的預測精度達到了55.1%,效果最好。McNally S使用循環神經網絡(RNN)和長期短期記憶網絡(LSTM)以及預測了比特幣價格指數(Bitcoin Price Index),并且使用ARIMA模型做了對比,實證的結果發現:LSTM模型的預測效果較好,實現了52.78%的預測精度。Li等通過將推特上的信息進行匯總成兩種指數,然后使用了梯度提升決策樹(Extreme Gradient Boosting Regression Tree Model)預測了ZClassic價格的波動。國內有關加密貨幣市場預測的研究屈指可數,并且都是對單一加密貨幣的價格進行的預測,未發現和加密貨幣指數預測相關的研究,這是本文的一個創新點。梁秋等使用小波分析方法對比特幣價格進行了時間跨度為一個季度預測,實證的結果顯示預測結果在短期內與實際變化趨勢大致相同。艾青先通過實驗證明了比特幣的交易趨勢是可預測的,然后分別使用混合模型、多元回歸模型、SVM模型、貝葉斯線性回歸模型對比特幣的價格進行了預測,之后又使用改進的貝葉斯模型將預測的準確率提高到了74.14%。孫堅提出了一種基于集成經驗模態分解方法(EEMD)的比特幣價格波動分析及預測方法。先從三個時間尺度分別對比特幣價格時間序列進行理論分析和特征分析,之后對比特幣價格展開預測,實證的結果顯示此方法比單一的LSTM模型要好。
本文選擇CCi30指數作為實證部分的研究對象。CCi30指數發行于2017年1月1日,作為一個基于規則的加密貨幣指數,它通過跟蹤30種按調整后的市值計算占市場份額最大的加密貨幣,來反映區塊鏈板塊的整體增長、日變化和長期走勢。CCi30指數最初的目標是成為加密貨幣市場的晴雨表以及為消極交易者提供參與到具有增長潛力的加密貨幣市場的投資工具。CCi30指數通過在計算過程中引入調整函數很好地解決了比特幣和萊特幣市場份額占據過大從而致使權重計算不公平的問題,通過使用調整后的市值代替原始市值的方法避免了因加密貨幣極高的波動率帶來成分的劇烈變動。
1986年,為了解決感知機(Multilayer Perceptron,MLP)網絡無法處理非線性問題的缺陷,Rumelhart和McClelland提出了BP神經網絡(Back Propagation Neural Network)的概念,它使用多層網絡學習的誤差反向傳播學習算法,即BP算法,較好地解決了多層網絡的學習問題。經過30年的發展,BP神經網絡已成為應用最為廣泛的神經網絡模型,它的適用范圍覆蓋了模式識別、數據聚類、時間序列預測等熱門領域。BP神經網絡自1986年誕生至今的30多年里已經得到了很大發展,相關的理論越來越成熟,各種新的學習算法、優化改進方法的出現使得網絡的預測精度以及迭代速度都有了很大的提升,其應用范圍得到了極大的拓展,因此本文選擇了BP神經網絡作為預測使用的模型。
本節為實證分析部分,是本文的中心,整個分析過程可分為3個步驟:
第一步:數據的選取和預處理,這一步用來獲取實驗所用的數據,并對其進行歸一化處理來消除不同量綱對實驗的影響。
第二步:網絡拓撲結構的設計,即確定BP網絡的層數以及最優隱層的節點數目。
第三步:使用第二步建立的BP神經網絡對CCi30指數的收盤價進行預測,并分析預測的結果,進行總結。
本文使用的實驗環境為MATLAB的神經網絡工具箱。作為三大數學軟件之一,MATLAB側重于數值計算與矩陣運算,它所使用的腳本語言語法簡潔,結構清晰,具有高度的可讀性。神經網絡工具箱是MATLAB用來實現神經網絡功能所開發的官方擴展功能包,它用于實現神經網絡功能的語句十分高級,往往使用幾條指令就能完成網絡的構建、訓練與預測。
本文所用的數據下載自CCi30的官方網站,時間范圍自2018年3月1日至2019年3月26日,共計391天。在實證分析中,取前361天的數據作為訓練樣本,后30天的數據作為測試樣本。
預測所涉及的指標為:開盤價、最高價、最低價、交易量。要預測的指標為:收盤價。為了消除量綱的影響,本文采用最常見的歸一化方法——Max-Min標準化函數變換對數據進行歸一化:

其中,x表示原始樣本數據,x*為歸一化后數據,xmin和xmax分別是樣本數據最小值和最大值。(1)式為歸一化處理公式,它將原始數據變換到[0,1]區間或[-1,1]區間內,(2)式為反歸一化處理公式,它起到恢復預測值的量綱的作用。
1.隱含層數目的確定
一個BP神經網絡由輸入層、隱含層、輸出層構成。其中輸入層和輸出層都是一層,但是隱含層的數目需要額外設置。一般的觀點認為設計BP神經網絡時,隱含層的確定應優先考慮一層的情況。而且已有理論證明,任何非線性連續函數都可以通過使用一個三層的網絡(單隱層)以任意精度逼近。所以基于以上的考慮,本文選擇具有一個隱含層的三層BP神經網絡。
2.隱含層節點數目的確定
輸入層和輸出層的結點數會隨訓練集(實證中所使用的數據)的確定而確定,但是隱含層的節點數目需要額外設置。隱層節點數目過多或過少都會影響神經網絡的整體性能——前者會增加學習時間、出現訓練過度、降低容錯率和泛化能力,后者會使學習過程不收斂。因此隱層節點數目的最優選取對于提高神經網絡的預測效果具有重要意義。對于隱含層最優節點數目的選取問題,現在尚沒有被廣泛接受的理論。一般的做法是先通過經驗公式將節點的數目確定到一個大致的范圍內,然后使用“試湊法”通過實驗確定最優節點個數。

本文選取(3)式作為隱層節點數目范圍的經驗公式,n和l分別表示輸入層和輸出層節點數,a為1~10之間的常數。通過上述公式計算可得,隱層節點數目的范圍為:3~12個。使用“試湊法”進行多次實驗,最終得到以下結果:

表1 不同隱節點預測MSE
本文采用的評價指標為MSE(均方誤差),MSE是最常用的性能函數,它可以計算預測值和真實值之間的差別,進而衡量網絡的預測效果。由表1的結果可以知道:當隱節點數目為3的時候,模型預測的平均誤差最小,且預測平均誤差隨隱節點數目大體呈上升趨勢,因此本文選擇隱節點數目為3個。
使用上節確立的BP神經網絡模型,使用MATLAB神經網絡工具箱進行建模計算,并將真實值的折線圖和神經網絡輸出的預測值的折線圖放置在一起進行比較,得到結果如圖1:

圖1 改進后的BP網絡預測效果
在圖1中,黑色的折線表示模型給出的預測結果,灰色的折線表示真實值,預測天數為30天,由圖像可知:除了個別點有比較大的偏差外,預測值總體上能夠比較好地擬合真實值,本文所使用的優化了隱層節點數的模型取得了比較好的預測效果。
本文嘗試構建BP神經網絡對加密貨幣指數CCi30指數的收盤價進行預測,先確定了神經網絡隱含層的層數,然后使用“試湊法”確定了隱結點數目,之后使用MATLAB進行建模計算,取得了比較好的預測效果。本文的不足之處在于僅僅從數據易于獲取的角度考慮,選取了CCi30指數391天的數據作為實證分析的對象,因此內容比較單薄、片面;而且本文未對神經網絡的其他參數,比如說:學習函數、訓練函數、學習率進行優化。希望后續的研究者能夠在這些方面展開研究,以彌補本文的不足。