何雄偉,林海
(1.惠州衛(wèi)生職業(yè)技術(shù)學院,惠州516001;2.惠州城市職業(yè)學院,惠州516001)
本次研究利用2014-2017年的比特幣交易數(shù)據(jù),對簡單LSTM比特幣時間序列預測實驗展開了回顧。探討兩類LSTM模型的預測值與真實值的關(guān)系,并結(jié)合熱圖指出可能高度相關(guān)的變量。在2015-2020年的實時數(shù)據(jù)集中,利用Python3.7、Keras、LSTM等工具,給出預測值與真實值的折線圖。重點對近30日的數(shù)據(jù)進行比對,同時利用前置1日的方法,并且對真實回報、預測回報進行比對,進而發(fā)現(xiàn)LSTM模型對于比特幣時間序列預測的不足。實證分析說明,LSTM對判斷比特幣市場的趨勢是具備一定價值的,但由于影響比特幣的因素非常多而復雜,僅僅依賴時間序列是遠遠無法達到較好目標的。
LSTM;比特幣;預測值;真實值;MAE
自從Nakamoto(2008)首次引入比特幣以來,比特幣一直受到廣泛關(guān)注[1]。作為一種新型的加密貨幣,比特幣可以隨時在線交易并交換成幾種低成本的主要貨幣(Fry和Cheah,2016;Kim,2017)[2]。與其他傳統(tǒng)金融資產(chǎn)相比,比特幣為投資者提供了投資組合的新工具管理。在過去的幾年中,關(guān)于比特幣市場的研究很多,如Brandvold等(2015)、Dwyer(2015)、Urquhart(2016)、Nadarajah和Chu(2017)、Balcilar等(2017)實證分析了比特幣交易量與回報,但沒有證據(jù)表明交易量有助于預測比特幣回報的波動性[3]。例如,Urquhart(2016)使用了很多測試以分析比特幣市場的效率,并得出結(jié)論,在后期它會變得更有效率樣品[4]。Nadarajah和Chu(2017)對比特幣的奇數(shù)整數(shù)冪轉(zhuǎn)換采用了八種不同的測試回報并表明回報效率較弱[5];Urquhart(2016)的測試,表明滾動窗口方法可以幫助獲得更可靠的結(jié)果[6]。Yermack(2015)指出是比特幣表現(xiàn)為高波動性股票而且大多數(shù)關(guān)于比特幣的交易都是針對投機性投資的[8]。Patacca(2019)證明比特幣價格和波動性受交易量或交易數(shù)量,交易數(shù)量的影響[9];Bukovina等(2016)指出比特幣價格與獲得的情緒衡量有關(guān)[10]。
機器學習技術(shù)被用于模擬比特幣價格。Madan(2015)采用隨機森林,Jang、Lee(2018)采用貝葉斯神經(jīng)網(wǎng)絡,McNally(2016)采用LSTM神經(jīng)網(wǎng)絡[11]。
截止2020年7月12日,Kaggle搜索“Bitcoin”有comments569個、notebooks有271個、Topics有140個、datasets132個、User有44個、Competitions有4個。
2018-2020年知網(wǎng)收錄核心期刊論文,包含“LSTM”文獻有1246篇;其2015-2020年主題包含“LSTM”并含“時間序列”的文獻有168篇。其主題主要包括時間序列、LSTM、預測模型、深度學習、循環(huán)神經(jīng)網(wǎng)絡、ARIMA等。如圖1所示。
圖1 2015-2020知網(wǎng)LSTM時間序列的期刊主要主題圖
謝飛等(2020)、包振山等(2020)、戴邵武等(2020)、歐陽紅兵等(2020)、喬若羽(2019)、楊青等(2018)、史建楠等(2018)、黃婷婷等(2018)將LSTM為基準模型運用與金融預測中[12];Luisanna等(2014)、Buchholz(2012)、劉力臻等(2015)、Garcia等(2014)、Shah等(2014)、石奕磊(2020)、李迎路(2019)、楊璇(2019)、李靖(2019)、艾青(2015)、梁秋等(2015)都運用了LSTM作為基準模型運用于比特幣時間序列的預測中[13]。
從國內(nèi)外學者研究可知,LSTM模型最近在時間序列上變得越來越流行預測系統(tǒng),但尚未達成共識。
深度學習LSTM神經(jīng)網(wǎng)絡克服了與遞歸神經(jīng)網(wǎng)絡(RNN)有關(guān)的消失梯度的問題,方法是用存儲單元替換RNN中的節(jié)點和門控機制[14]。在這方面,一個有吸引力的深度學習神經(jīng)體系結(jié)構(gòu),主要是因為其同時存儲長期和短期時間信息的功效。LSTM拓撲是遞歸的,其中單元之間的連接形成有向循環(huán)/循環(huán)允許數(shù)據(jù)輸入信號向前和向后流動在網(wǎng)絡內(nèi)。隨后,保留過去的信息以便將來處理[15]。GRNN是一個基于并行和內(nèi)存的系統(tǒng),可以估計連續(xù)變量的回歸面,同時為快速提供學習和收斂。樣本數(shù)量變得非常大時的最佳回歸曲面大。由于這些獨特的吸引人的功能,LSTM和GRNN成功應用于各種數(shù)據(jù)分析問題建模[16]。其中LSTM的標準模塊結(jié)果,如圖2所示。
圖2 標準的LSTM神經(jīng)網(wǎng)絡結(jié)構(gòu)
深度學習LTSM神經(jīng)網(wǎng)絡系統(tǒng)不僅保持自發(fā)的方式相鄰的時間信息控制長期(LT)信息。換句話說,LSTM可以保留先前的信息,這可以大大幫助提高其學習信號序列和固有非線性的能力模式。具體來說,LTSM的主要創(chuàng)新是引入“控制門”的概念[17]。例如,以輸入為條件,LSTM存儲單元可以記住或忘記任何單元狀態(tài)。它的單元由三個門支持:輸入,忘記和輸出。輸入門決定應處理多少當前信息作為輸入以生成當前狀態(tài),而忘記門提取出從最后一個可以保留多少信息先前狀態(tài)。最后,輸出門過濾出可以實際上被視為重要并產(chǎn)生輸出?;旧鲜且粋€預測。讓我們將所有單元格的輸入表示為xt,將之前的時間步輸出表示為ht-1。然后,忘記門tf計算輸入[18]。使用S型函數(shù)的單元格狀態(tài)Ct-1,由下式給出:
輸入門它將計算要更新為Ct的值遵循:
隨后,輸出門ot控制輸出值:
最后,LSTM存儲單元的輸出值由下式給出:
并且,當:
與C?t表示非線性雙曲正切的輸出(tanh)功能。在我們的論文中,歷史序列被處理為LSTM的輸入以提取隱藏信息,而數(shù)字貨幣的預測價格被視為目標輸出。
本次實證分析將采用2014-2017年的比特幣交易數(shù)據(jù),運用簡單的LSTM模型對2014-2017年的預測實驗進行回顧,同時尋找可能高度相關(guān)的變量。然后在2015-2020年的比特幣交易數(shù)據(jù)中,重點比較近30日的真實值與預測值,將采用前置1日的方法,對真實回報、預測回報的數(shù)據(jù)進行了比對,探討LSTM模型對于比特幣的預測可能存在的不足。
比特幣的市場價格不僅由比特幣的價值決定,同時受到許多其他因素的影響。比特幣預測相關(guān)的變量如表1所示。
表1 比特幣預測常見變量表
實驗硬件條件:Intel Core i7-6700 CPU@3.40GHz,32GB內(nèi)存。
軟件環(huán)境:Python3.7和Keras框架。
數(shù)據(jù)集:從2014年1月7日至2017年10月17日,一共有1380條記錄。該數(shù)據(jù)集變量表如表2所示。
表2 回顧實驗變量表
使用MinMaxScaler將比特幣平均價格標準化為0-1之間。2014年1月7日-2017年10月17日的數(shù)據(jù)集拆分90%的數(shù)據(jù)用于訓練,另外10%的數(shù)據(jù)用于測試。其中訓練集有1241條數(shù)據(jù),測試集有137條數(shù)據(jù)。以365個enochs運行LSTM模型。用X=日期、Y=USD繪制預測值與真實值折線圖,如圖3所示。
圖3 單一LSTM模型的預測與真實值折線圖
由于利用了深層內(nèi)的tanh函數(shù)學習LSTM拓撲并更好地估計最佳通過GRNN回歸曲面,原始(輸入)向量的值轉(zhuǎn)換為[-1,1]的范圍。此外,此縮放比例是允許深度學習LSTM網(wǎng)絡和GRNN的理想選擇處理振幅變化。由于可用數(shù)量樣本觀測值有限,因為數(shù)字貨幣是新的加密貨幣或數(shù)字資產(chǎn),前90%的觀察結(jié)果用于訓練目的,其余10%用于最新目的,用于測試和樣本外預測。最后,通過使用均方根誤差(RMSE)度量標準,廣泛用于信號處理和預測文獻中。RMSE由下式給出:
其中N是用于測試的觀察數(shù),xi是真值,x?i是預測值,t是時間腳本。通過實驗回歸得知,具有權(quán)重價格單一功能的LSTM的RMSE為193.846。
運用sns.heatmap()繪制熱圖,并觀察變量與比特幣平均價格的相關(guān)性??梢缘弥山涣颗c比特幣平均價格相關(guān)。開盤價(Open)、最高價(High)、最低價(Low)、收盤價(Close)與比特幣平均價格(Weighted Price)直接相關(guān)。其熱圖如圖4所示。
圖4 各變量與比特幣平均價格的熱圖
LSTM模型中,加入交易量(BTC),交易量(貨幣),以365個enochs運行LSTM模型。得知,其RMSE為213.521。繪制單一LSTM模型的預測值、多變量LSTM模型的預測值、真實值的折線圖。可以得知,多種功能的LSTM顯示更為準確的結(jié)果,如圖5所示。
圖5 單一LSTM、多功能LSTM模型的預測值與真實值折線圖
實驗硬件條件:Intel Core i7-6700 CPU@3.40GHz,32GB內(nèi)存。
軟件環(huán)境:Python3.7和Keras框架;
數(shù)據(jù)集:從2015年1月20日至2020年7月12日,一共有2000條記錄。該數(shù)據(jù)集變量表如表3所示。數(shù)據(jù)集來源:https://min-api.cryptocompare.com/data/histoday;
API:cryptocompare。
表3 實時數(shù)據(jù)驗證實驗主要變量表
采用.head()、.tail()、describe()相關(guān)命令分別查看數(shù)據(jù)集前5條、后5條記錄、統(tǒng)計性描述分析。可以得知,最遠的日期為2015年1月20日、最近的日期為2020年7月12日;變量分別為time、close、high、low、open、volumeform、vlumeto;統(tǒng)計性描述分析中,可以獲得count值、mean值、std值、min值、max值及四分位值。分別如圖6、圖7、圖8所示。
圖6 實時數(shù)據(jù)前10條記錄描述
從官網(wǎng)cryptocompare.com獲取了2000條實時數(shù)據(jù),數(shù)據(jù)時間序列的起點為2015年1月20日,數(shù)據(jù)包含了起始價格(open)、最高價格(high)、最低價格(low)、結(jié)束價格(close)、最低交易量(Volumme From)、最高交易量(Volumme To);例如2015年1月24日的結(jié)束價格是248.16,最高價格是248.88,最低價格是229.58,起始價格是232.17,最低交易量是33239.37,最高交易量是8011743.34??梢缘弥?015年比特幣還是處于比較低的價位。
利用cryptocompare接口獲取了2000條數(shù)據(jù),數(shù)據(jù)時間序列的終點為2020年7月12日,數(shù)據(jù)包含了起始價格(open)、最高價格(high)、最低價格(low)、結(jié)束價格(close)、最低交易量(Volumme From)、最高交易量(Volumme To);例如2020年1月12日的結(jié)束價格是9267.36,最高價格是9289.52,最低價格是9235.28,起始價格是9237.13。可以得知2020年比特幣處于較高價位。
圖7 實時數(shù)據(jù)后10條記錄描述
圖8 實時數(shù)據(jù)基本統(tǒng)計描述
2000條比特幣的交易數(shù)據(jù)中,通過描述性統(tǒng)計分析給出了6個變量起始價格(open)、最高價格(high)、最 低 價 格(low)、結(jié) 束 價 格(close)、最低交易量(Volumme From)、最高交易量(Volumme To)的mean值、std值、min值、25%值、50%值、75%值、最大值。
將close設置為目標變量;將2015年1月20日至2020年7月12日數(shù)據(jù)分為訓練和測試集。最先的2015年1月20日至2020年7月12日的90%為訓練數(shù)據(jù),最后2015年1月20日至2020年7月12日的10%為測試數(shù)據(jù)。將price[USD]設置為Y軸、將日期設置為X值,并繪制相應的線性圖,可以得出測試集與訓練集的線性圖。如圖9所示。
圖9 訓練集與測試集線性圖
為了訓練LSTM,將數(shù)據(jù)劃分為7幾天的窗口(此數(shù)字是任意的,這里簡單地選擇了一個星期),每個窗口中,將數(shù)據(jù)實施歸一化處理。使用一個簡單的神經(jīng)網(wǎng)絡,該網(wǎng)絡具有由20神經(jīng)元組成的單個LSTM層,濾除因子0.25和具有單個線性激活函數(shù)的密集層。以2020年1月至2020年7月的每7天的值作為X軸,以price[USD]作為Y軸,通過LSTM模型試驗,得出actual真實值、prediction預測值相關(guān)的線性圖如圖10所示。
圖10 實施LSTM模型預測值與真實值折線圖
實驗得出,MAE=0.02875343330959605。初步觀察實施LSTM模型預測值與真實值折線圖,發(fā)現(xiàn)action真實值與prediction預測值相似程度很高。但能否確認可以通過LSTM模型進行實際比特幣的交易呢?
將線性圖的觀察點設置為最近30天。則n_points=30。如圖11所示。
圖11 近30日預測值與真實值折線圖
可以發(fā)現(xiàn),LSTM模型針對某個特定日期的預測時,主要采用了前1天的值;預測線似乎不過是實際價格的變動版本。
為進一步觀察,運用命令:line_plot(targets[-n_points:][:-1],preds[-n_points:].shift(-1),'actual','prediction',lw=3)
將調(diào)整預測并將其每天移動一遍,其新的預測值與真實值的折線圖如圖12所示。
圖12 前置1日的預測值與真實值折線圖
可以得知,實際數(shù)據(jù)和預測之間的幾乎完全一致,表明該模型基本上是學習價格前一日。運用LSTM實施單點預測時,這類結(jié)果相關(guān)常見。
為了使這一點更清楚,計算模型所預測的預期收益,并將其與實際收益進行比較。
使用命令:
actual_returns=targets.pct_change()[1:]
predicted_returns=preds.pct_change()[1:]
以原始形式以及應用了1天班次的方式查看實際和預期的回報,其觀察結(jié)果一致。如圖13所示。
圖13 前置1日與實際的預測回報與真實回報折線圖
計算原始預測以及一天調(diào)整后的收益計算實際收益和預測收益之間的相關(guān)性,原始預測的相關(guān)性為-0.18(不相關(guān)),調(diào)整1天的預測相關(guān)性為0.88(高度相關(guān))。如圖14所示。
圖14 原始預測、調(diào)整1天實際收益與預測收益的相關(guān)圖
從上面的圖可以看出,實際收益和預測收益是不相關(guān)的。僅在對預測進行1天的變動后,我們才能獲得與實際比特幣數(shù)據(jù)的收益相似的高度相關(guān)的收益。
通過重點觀察30日的比特幣交易的數(shù)據(jù),并且運用前置1天的方法,對真實回報、預測回報進行比對,已經(jīng)發(fā)現(xiàn)LSTM模型對于比特幣時間序列預測的不足。但LSTM對判斷比特幣市場的趨勢是具備一定價值的。
實驗回顧中發(fā)現(xiàn),在LSTM模型中,加入交易量(BTC)、交易量(貨幣),設置365個enochs運行LSTM模型。得知,RMSE=213.521。通過比較單一LSTM模型的預測值、多變量LSTM模型的預測值、真實值的折線圖,得知多變量的LSTM模型結(jié)果較為準確;在實時數(shù)據(jù)實驗中,實驗得出MAE=0.028,其action真實值與prediction預測值相似程度很高;但將觀察數(shù)據(jù)設置為最近30日,并且采用前置1天的方法,發(fā)現(xiàn)預測線似乎不過是實際價格的變動版本。前置1日的預測值與真實值折線圖對比發(fā)現(xiàn),實際數(shù)據(jù)和預測之間的幾乎完全一致,表明該模型基本上是學習價格前一日。在實際收益與預測收益方面,發(fā)現(xiàn),原始預測的相關(guān)性=-0.18(不相關(guān)),調(diào)整1天的預測相關(guān)性=0.88(高度相關(guān)),進一步說明該模型受到前一日價格的影響較大,反映是前一日價格的趨勢。但實際相關(guān)性不高甚至不相關(guān)。
總之,LSTM對判斷比特幣市場的趨勢是具備一定價值的,但由于影響比特幣的因素非常多而復雜,僅僅依賴時間序列是遠遠無法達到較好目標的。未來研究中,LSTM模型需要持續(xù)改良與完善,包括比特幣預測模型中特征工程的構(gòu)建,針對LSTM模型調(diào)參優(yōu)化等。