李迎路
隨著人們對(duì)加密貨幣認(rèn)可度的提升、各國(guó)政府出臺(tái)的寬松政策以及投資者的進(jìn)入,加密貨幣市場(chǎng)呈現(xiàn)出火熱態(tài)勢(shì),大量的線上交易平臺(tái)在全球范圍內(nèi)建立起來,如今全球加密貨幣市場(chǎng)已達(dá)萬億級(jí)別。而加密貨幣自身不同于傳統(tǒng)金融工具的性質(zhì)使得其價(jià)格存在巨大的波動(dòng)性,同時(shí)加密貨幣市場(chǎng)不存在漲跌限制,某種加密貨幣的價(jià)格在一天內(nèi)的漲跌幅度可能高達(dá)30到40個(gè)百分點(diǎn),投資者面臨著巨大的投資風(fēng)險(xiǎn)。隨著人們對(duì)加密貨幣市場(chǎng)理解與研究的深入,出于幫助投資者規(guī)避風(fēng)險(xiǎn)、增加市場(chǎng)透明度的目的,加密貨幣市場(chǎng)上出現(xiàn)了類似于股指的被稱作加密貨幣指數(shù)的金融工具:它通過對(duì)從市場(chǎng)中收集到的交易信息進(jìn)行加權(quán)平均來刻畫市場(chǎng)整體的走向,或者通過特定算法對(duì)收集到的市場(chǎng)信息進(jìn)行匯總來勾畫市場(chǎng)中交易者的整體狀態(tài)。加密貨幣指數(shù)能夠像證券市場(chǎng)中的上證綜指、滬深300一類的指數(shù)一樣成為市場(chǎng)的晴雨表、為投資者提供可投資的風(fēng)險(xiǎn)相對(duì)較低的加密貨幣指數(shù)基金。
本文著眼于國(guó)內(nèi)有關(guān)加密貨幣市場(chǎng)的預(yù)測(cè)這一課題研究較少的現(xiàn)狀,嘗試通過構(gòu)建BP神經(jīng)網(wǎng)絡(luò)對(duì)加密貨幣指數(shù)這種新生事物的收盤價(jià)進(jìn)行預(yù)測(cè),希望能夠起到拋磚引玉的作用,以激發(fā)起更多優(yōu)秀的研究者的研究興趣與熱情,從而豐富這一課題的理論與實(shí)踐,最終能為投身于加密貨幣市場(chǎng)的投資者提供切實(shí)可行的預(yù)測(cè)工具與理論指導(dǎo)。
國(guó)外有大量和加密貨幣市場(chǎng)的預(yù)測(cè)有關(guān)的文獻(xiàn),有直接預(yù)測(cè)單一加密貨幣價(jià)格的,有預(yù)測(cè)加密貨幣指數(shù)的,也有利用創(chuàng)造出的加密貨幣指數(shù)去預(yù)測(cè)其他幣種的價(jià)格。Alex Greaves和Benjamin Au分別使用線性回歸、logistic回歸、支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)四種機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)了對(duì)未來一小時(shí)比特幣價(jià)格的預(yù)測(cè),結(jié)果顯示:神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)精度達(dá)到了55.1%,效果最好。McNally S使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和長(zhǎng)期短期記憶網(wǎng)絡(luò)(LSTM)以及預(yù)測(cè)了比特幣價(jià)格指數(shù)(Bitcoin Price Index),并且使用ARIMA模型做了對(duì)比,實(shí)證的結(jié)果發(fā)現(xiàn):LSTM模型的預(yù)測(cè)效果較好,實(shí)現(xiàn)了52.78%的預(yù)測(cè)精度。Li等通過將推特上的信息進(jìn)行匯總成兩種指數(shù),然后使用了梯度提升決策樹(Extreme Gradient Boosting Regression Tree Model)預(yù)測(cè)了ZClassic價(jià)格的波動(dòng)。國(guó)內(nèi)有關(guān)加密貨幣市場(chǎng)預(yù)測(cè)的研究屈指可數(shù),并且都是對(duì)單一加密貨幣的價(jià)格進(jìn)行的預(yù)測(cè),未發(fā)現(xiàn)和加密貨幣指數(shù)預(yù)測(cè)相關(guān)的研究,這是本文的一個(gè)創(chuàng)新點(diǎn)。梁秋等使用小波分析方法對(duì)比特幣價(jià)格進(jìn)行了時(shí)間跨度為一個(gè)季度預(yù)測(cè),實(shí)證的結(jié)果顯示預(yù)測(cè)結(jié)果在短期內(nèi)與實(shí)際變化趨勢(shì)大致相同。艾青先通過實(shí)驗(yàn)證明了比特幣的交易趨勢(shì)是可預(yù)測(cè)的,然后分別使用混合模型、多元回歸模型、SVM模型、貝葉斯線性回歸模型對(duì)比特幣的價(jià)格進(jìn)行了預(yù)測(cè),之后又使用改進(jìn)的貝葉斯模型將預(yù)測(cè)的準(zhǔn)確率提高到了74.14%。孫堅(jiān)提出了一種基于集成經(jīng)驗(yàn)?zāi)B(tài)分解方法(EEMD)的比特幣價(jià)格波動(dòng)分析及預(yù)測(cè)方法。先從三個(gè)時(shí)間尺度分別對(duì)比特幣價(jià)格時(shí)間序列進(jìn)行理論分析和特征分析,之后對(duì)比特幣價(jià)格展開預(yù)測(cè),實(shí)證的結(jié)果顯示此方法比單一的LSTM模型要好。
本文選擇CCi30指數(shù)作為實(shí)證部分的研究對(duì)象。CCi30指數(shù)發(fā)行于2017年1月1日,作為一個(gè)基于規(guī)則的加密貨幣指數(shù),它通過跟蹤30種按調(diào)整后的市值計(jì)算占市場(chǎng)份額最大的加密貨幣,來反映區(qū)塊鏈板塊的整體增長(zhǎng)、日變化和長(zhǎng)期走勢(shì)。CCi30指數(shù)最初的目標(biāo)是成為加密貨幣市場(chǎng)的晴雨表以及為消極交易者提供參與到具有增長(zhǎng)潛力的加密貨幣市場(chǎng)的投資工具。CCi30指數(shù)通過在計(jì)算過程中引入調(diào)整函數(shù)很好地解決了比特幣和萊特幣市場(chǎng)份額占據(jù)過大從而致使權(quán)重計(jì)算不公平的問題,通過使用調(diào)整后的市值代替原始市值的方法避免了因加密貨幣極高的波動(dòng)率帶來成分的劇烈變動(dòng)。
1986年,為了解決感知機(jī)(Multilayer Perceptron,MLP)網(wǎng)絡(luò)無法處理非線性問題的缺陷,Rumelhart和McClelland提出了BP神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network)的概念,它使用多層網(wǎng)絡(luò)學(xué)習(xí)的誤差反向傳播學(xué)習(xí)算法,即BP算法,較好地解決了多層網(wǎng)絡(luò)的學(xué)習(xí)問題。經(jīng)過30年的發(fā)展,BP神經(jīng)網(wǎng)絡(luò)已成為應(yīng)用最為廣泛的神經(jīng)網(wǎng)絡(luò)模型,它的適用范圍覆蓋了模式識(shí)別、數(shù)據(jù)聚類、時(shí)間序列預(yù)測(cè)等熱門領(lǐng)域。BP神經(jīng)網(wǎng)絡(luò)自1986年誕生至今的30多年里已經(jīng)得到了很大發(fā)展,相關(guān)的理論越來越成熟,各種新的學(xué)習(xí)算法、優(yōu)化改進(jìn)方法的出現(xiàn)使得網(wǎng)絡(luò)的預(yù)測(cè)精度以及迭代速度都有了很大的提升,其應(yīng)用范圍得到了極大的拓展,因此本文選擇了BP神經(jīng)網(wǎng)絡(luò)作為預(yù)測(cè)使用的模型。
本節(jié)為實(shí)證分析部分,是本文的中心,整個(gè)分析過程可分為3個(gè)步驟:
第一步:數(shù)據(jù)的選取和預(yù)處理,這一步用來獲取實(shí)驗(yàn)所用的數(shù)據(jù),并對(duì)其進(jìn)行歸一化處理來消除不同量綱對(duì)實(shí)驗(yàn)的影響。
第二步:網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的設(shè)計(jì),即確定BP網(wǎng)絡(luò)的層數(shù)以及最優(yōu)隱層的節(jié)點(diǎn)數(shù)目。
第三步:使用第二步建立的BP神經(jīng)網(wǎng)絡(luò)對(duì)CCi30指數(shù)的收盤價(jià)進(jìn)行預(yù)測(cè),并分析預(yù)測(cè)的結(jié)果,進(jìn)行總結(jié)。
本文使用的實(shí)驗(yàn)環(huán)境為MATLAB的神經(jīng)網(wǎng)絡(luò)工具箱。作為三大數(shù)學(xué)軟件之一,MATLAB側(cè)重于數(shù)值計(jì)算與矩陣運(yùn)算,它所使用的腳本語言語法簡(jiǎn)潔,結(jié)構(gòu)清晰,具有高度的可讀性。神經(jīng)網(wǎng)絡(luò)工具箱是MATLAB用來實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)功能所開發(fā)的官方擴(kuò)展功能包,它用于實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)功能的語句十分高級(jí),往往使用幾條指令就能完成網(wǎng)絡(luò)的構(gòu)建、訓(xùn)練與預(yù)測(cè)。
本文所用的數(shù)據(jù)下載自CCi30的官方網(wǎng)站,時(shí)間范圍自2018年3月1日至2019年3月26日,共計(jì)391天。在實(shí)證分析中,取前361天的數(shù)據(jù)作為訓(xùn)練樣本,后30天的數(shù)據(jù)作為測(cè)試樣本。
預(yù)測(cè)所涉及的指標(biāo)為:開盤價(jià)、最高價(jià)、最低價(jià)、交易量。要預(yù)測(cè)的指標(biāo)為:收盤價(jià)。為了消除量綱的影響,本文采用最常見的歸一化方法——Max-Min標(biāo)準(zhǔn)化函數(shù)變換對(duì)數(shù)據(jù)進(jìn)行歸一化:
其中,x表示原始樣本數(shù)據(jù),x*為歸一化后數(shù)據(jù),xmin和xmax分別是樣本數(shù)據(jù)最小值和最大值。(1)式為歸一化處理公式,它將原始數(shù)據(jù)變換到[0,1]區(qū)間或[-1,1]區(qū)間內(nèi),(2)式為反歸一化處理公式,它起到恢復(fù)預(yù)測(cè)值的量綱的作用。
1.隱含層數(shù)目的確定
一個(gè)BP神經(jīng)網(wǎng)絡(luò)由輸入層、隱含層、輸出層構(gòu)成。其中輸入層和輸出層都是一層,但是隱含層的數(shù)目需要額外設(shè)置。一般的觀點(diǎn)認(rèn)為設(shè)計(jì)BP神經(jīng)網(wǎng)絡(luò)時(shí),隱含層的確定應(yīng)優(yōu)先考慮一層的情況。而且已有理論證明,任何非線性連續(xù)函數(shù)都可以通過使用一個(gè)三層的網(wǎng)絡(luò)(單隱層)以任意精度逼近。所以基于以上的考慮,本文選擇具有一個(gè)隱含層的三層BP神經(jīng)網(wǎng)絡(luò)。
2.隱含層節(jié)點(diǎn)數(shù)目的確定
輸入層和輸出層的結(jié)點(diǎn)數(shù)會(huì)隨訓(xùn)練集(實(shí)證中所使用的數(shù)據(jù))的確定而確定,但是隱含層的節(jié)點(diǎn)數(shù)目需要額外設(shè)置。隱層節(jié)點(diǎn)數(shù)目過多或過少都會(huì)影響神經(jīng)網(wǎng)絡(luò)的整體性能——前者會(huì)增加學(xué)習(xí)時(shí)間、出現(xiàn)訓(xùn)練過度、降低容錯(cuò)率和泛化能力,后者會(huì)使學(xué)習(xí)過程不收斂。因此隱層節(jié)點(diǎn)數(shù)目的最優(yōu)選取對(duì)于提高神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)效果具有重要意義。對(duì)于隱含層最優(yōu)節(jié)點(diǎn)數(shù)目的選取問題,現(xiàn)在尚沒有被廣泛接受的理論。一般的做法是先通過經(jīng)驗(yàn)公式將節(jié)點(diǎn)的數(shù)目確定到一個(gè)大致的范圍內(nèi),然后使用“試湊法”通過實(shí)驗(yàn)確定最優(yōu)節(jié)點(diǎn)個(gè)數(shù)。
本文選取(3)式作為隱層節(jié)點(diǎn)數(shù)目范圍的經(jīng)驗(yàn)公式,n和l分別表示輸入層和輸出層節(jié)點(diǎn)數(shù),a為1~10之間的常數(shù)。通過上述公式計(jì)算可得,隱層節(jié)點(diǎn)數(shù)目的范圍為:3~12個(gè)。使用“試湊法”進(jìn)行多次實(shí)驗(yàn),最終得到以下結(jié)果:
表1 不同隱節(jié)點(diǎn)預(yù)測(cè)MSE
本文采用的評(píng)價(jià)指標(biāo)為MSE(均方誤差),MSE是最常用的性能函數(shù),它可以計(jì)算預(yù)測(cè)值和真實(shí)值之間的差別,進(jìn)而衡量網(wǎng)絡(luò)的預(yù)測(cè)效果。由表1的結(jié)果可以知道:當(dāng)隱節(jié)點(diǎn)數(shù)目為3的時(shí)候,模型預(yù)測(cè)的平均誤差最小,且預(yù)測(cè)平均誤差隨隱節(jié)點(diǎn)數(shù)目大體呈上升趨勢(shì),因此本文選擇隱節(jié)點(diǎn)數(shù)目為3個(gè)。
使用上節(jié)確立的BP神經(jīng)網(wǎng)絡(luò)模型,使用MATLAB神經(jīng)網(wǎng)絡(luò)工具箱進(jìn)行建模計(jì)算,并將真實(shí)值的折線圖和神經(jīng)網(wǎng)絡(luò)輸出的預(yù)測(cè)值的折線圖放置在一起進(jìn)行比較,得到結(jié)果如圖1:
圖1 改進(jìn)后的BP網(wǎng)絡(luò)預(yù)測(cè)效果
在圖1中,黑色的折線表示模型給出的預(yù)測(cè)結(jié)果,灰色的折線表示真實(shí)值,預(yù)測(cè)天數(shù)為30天,由圖像可知:除了個(gè)別點(diǎn)有比較大的偏差外,預(yù)測(cè)值總體上能夠比較好地?cái)M合真實(shí)值,本文所使用的優(yōu)化了隱層節(jié)點(diǎn)數(shù)的模型取得了比較好的預(yù)測(cè)效果。
本文嘗試構(gòu)建BP神經(jīng)網(wǎng)絡(luò)對(duì)加密貨幣指數(shù)CCi30指數(shù)的收盤價(jià)進(jìn)行預(yù)測(cè),先確定了神經(jīng)網(wǎng)絡(luò)隱含層的層數(shù),然后使用“試湊法”確定了隱結(jié)點(diǎn)數(shù)目,之后使用MATLAB進(jìn)行建模計(jì)算,取得了比較好的預(yù)測(cè)效果。本文的不足之處在于僅僅從數(shù)據(jù)易于獲取的角度考慮,選取了CCi30指數(shù)391天的數(shù)據(jù)作為實(shí)證分析的對(duì)象,因此內(nèi)容比較單薄、片面;而且本文未對(duì)神經(jīng)網(wǎng)絡(luò)的其他參數(shù),比如說:學(xué)習(xí)函數(shù)、訓(xùn)練函數(shù)、學(xué)習(xí)率進(jìn)行優(yōu)化。希望后續(xù)的研究者能夠在這些方面展開研究,以彌補(bǔ)本文的不足。