魔鏡魔鏡告訴我,數(shù)字貨幣未來(lái)價(jià)格可以預(yù)測(cè)嗎?
自從比特幣的價(jià)格暴漲以來(lái),關(guān)于數(shù)字貨幣的炒作一直不斷。每天都有新的數(shù)字貨幣的信息, 它們有的被證實(shí)是騙局,有些則會(huì)在幾個(gè)月成為新的頂級(jí)貨幣。炒幣人士通常會(huì)為了一個(gè)傳言而買(mǎi)入賣(mài)出,自然,也會(huì)有人嘗試用機(jī)器學(xué)習(xí)來(lái)對(duì)數(shù)字貨幣的價(jià)格變化進(jìn)行分析,來(lái)找出影響數(shù)字貨幣價(jià)格變動(dòng)的因素。近日在外媒Medium上,就有一位叫做Chalita Lertlumprasert的博主發(fā)表了如何用機(jī)器學(xué)習(xí)來(lái)預(yù)測(cè)數(shù)字貨幣價(jià)格變化的文章,雷鋒網(wǎng)整理如下:
機(jī)器學(xué)習(xí)分析數(shù)字貨幣價(jià)格變化的原理
在經(jīng)典的時(shí)間序列分析中,我們認(rèn)為觀察到的時(shí)間序列是模式和隨機(jī)變量的組合。使用這種方法,我們可以根據(jù)歷史數(shù)據(jù)預(yù)測(cè)未來(lái)的價(jià)值。這種方法在大多數(shù)情況下可行,但是如果這個(gè)時(shí)間序列更加隨機(jī)化呢?如果一個(gè)時(shí)間序列主要是基于當(dāng)前事件的推測(cè),而不是具有一定的內(nèi)在模式呢?嗯,你一定猜到了,低價(jià)數(shù)字貨幣就是這樣。
那么,究竟是什么在推動(dòng)數(shù)字貨幣的價(jià)格?對(duì)于數(shù)字貨幣的猜測(cè)?創(chuàng)新?法律問(wèn)題?公眾輿論?供給/需求的變化?比特幣的流行程度?甚至,土豪心血來(lái)潮決定購(gòu)買(mǎi)一百萬(wàn)個(gè)代幣?OK,現(xiàn)在是讓數(shù)據(jù)說(shuō)話(huà)的時(shí)候了。
那么,影響加密價(jià)格的因素是?
因素1:許多人說(shuō),答案是比特幣(價(jià)格)。區(qū)塊鏈技術(shù)是首先由比特幣實(shí)施的分散式數(shù)據(jù)庫(kù)系統(tǒng),被認(rèn)為是極有可能改變現(xiàn)代商業(yè)模式的一種技術(shù)趨勢(shì)。隨著比特幣備受關(guān)注,人們不斷推出也基于區(qū)塊鏈技術(shù)的替代數(shù)字貨幣。從某種意義說(shuō),比特幣幾乎是所有數(shù)字加密貨幣之母,其首先應(yīng)用了這個(gè)行業(yè)的基本技術(shù)。這就是為什么我認(rèn)為當(dāng)比特幣價(jià)格飆升時(shí),所有其他數(shù)字貨幣都會(huì)隨之上升,反之亦然。以下圖表是比特幣(綠色)和以太坊(藍(lán)色)的價(jià)格變化曲線(xiàn)。
正如你所見(jiàn),這當(dāng)中的對(duì)應(yīng)關(guān)系看起來(lái)相當(dāng)準(zhǔn)確。但是,如果沒(méi)有統(tǒng)計(jì)方法上的證明,我們不會(huì)急于下結(jié)論。稍后,我們將更多地討論使用格蘭杰因果檢驗(yàn)來(lái)確定一個(gè)“協(xié)整關(guān)系對(duì)”。
因素2:很明顯,法律因素或其他足以影響游戲規(guī)則的技術(shù)手段也在影響數(shù)字貨幣的價(jià)格。去年九月中國(guó)禁止數(shù)字貨幣的時(shí)候,所有數(shù)字貨幣價(jià)格迅速下降,一切都陷入混亂。為此,我們從 Pytrends API 獲取重大事件的 Google News 搜索頻率數(shù)據(jù)。下面的圖表中的紅色曲線(xiàn)顯示了當(dāng)數(shù)字貨幣價(jià)格下降時(shí),“數(shù)字貨幣”(Cryptocurrency)的搜索頻率達(dá)到峰值。
很有意思吧?在本項(xiàng)目中,搜索的關(guān)鍵詞由 Google 關(guān)鍵詞工具選擇,這個(gè)工具不僅讓你知道關(guān)鍵詞的流行程度,還提供了相關(guān)關(guān)鍵詞的列表。通過(guò)所提供的列表和 Pytrend API,我們獲得了七個(gè)不同的關(guān)鍵詞的搜索頻率數(shù)據(jù)。在稍后的章節(jié)中我將詳細(xì)介紹這些術(shù)語(yǔ)。
因素3:公眾的認(rèn)知也是另一重要影響因素。購(gòu)買(mǎi)越多,需求越多,數(shù)字貨幣價(jià)格就越高。要得到這些數(shù)據(jù)些難度,付費(fèi)的Twitter API可以解決這個(gè)問(wèn)題,但因?yàn)楦F,我更希望把這筆錢(qián)花到其他地方。我選擇的是 redditmetrics.com,該網(wǎng)站可以統(tǒng)計(jì) Reddit 所有子話(huà)題的歷史訂閱增長(zhǎng)數(shù)據(jù)。下面則對(duì) Nem(New Economy Movement,其發(fā)行的數(shù)字貨幣中文名稱(chēng)為新經(jīng)幣,代碼:XEM)的子話(huà)題訂閱增長(zhǎng)(橙色)與新的歷史價(jià)格(藍(lán)色)進(jìn)行了比較。
正如預(yù)期的那樣,訂閱的增長(zhǎng)與價(jià)格趨勢(shì)變化有著高度的重合。
以上展示只是為了讓你對(duì)這一領(lǐng)域有一個(gè)初步的了解,并向你介紹我們正在試圖解決的問(wèn)題。在我的 GitHub 上可以看到一個(gè)完整的 EDA,接下來(lái),我將介紹一個(gè)預(yù)測(cè)硬幣未來(lái)價(jià)格的模型的統(tǒng)計(jì)方法。
如何建立模型?
在本節(jié)中,我們將深入探討方法論。這里僅僅是每一步的總結(jié),如果你想對(duì)代碼深入挖掘,請(qǐng)參閱我的GitHub庫(kù)。
1 確定協(xié)整關(guān)系對(duì)
我們通過(guò) Cryptocompare API 獲得了12種主要數(shù)字貨幣的價(jià)格歷史數(shù)據(jù)。在我們對(duì)時(shí)間序列做任何事情之前,我們必須確保時(shí)間序列是固定的。為了滿(mǎn)足平穩(wěn)性的要求,時(shí)間序列必須具有常數(shù)均值、常數(shù)方差和自相關(guān)常數(shù)。而在現(xiàn)實(shí)中,完美定態(tài)的時(shí)間序列是不存在的,但無(wú)需擔(dān)心,我們有迪基-福勒檢驗(yàn)!
擴(kuò)展迪基-福勒檢驗(yàn)是一個(gè)統(tǒng)計(jì)測(cè)試,可以測(cè)試一個(gè)自回歸模型是否存在單位根(雷鋒網(wǎng)注:?jiǎn)挝桓鶛z驗(yàn)是針對(duì)宏觀經(jīng)濟(jì)數(shù)據(jù)序列、貨幣金融數(shù)據(jù)序列中是否具有某種統(tǒng)計(jì)特性而提出的一種平穩(wěn)性檢驗(yàn)的特殊方法)。測(cè)試采用自回歸模型,并通過(guò)不同的滯后值對(duì)信息因素進(jìn)行優(yōu)化。當(dāng)中的零假設(shè)(雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng))按:零假設(shè)是做統(tǒng)計(jì)檢驗(yàn)時(shí)的一類(lèi)假設(shè),內(nèi)容一般是希望能證明為錯(cuò)誤的假設(shè))是時(shí)間序列可以用單位根表示。在統(tǒng)計(jì)學(xué)上,如果你的 P 值小于 0.05,這意味著可以拒絕零假設(shè)。但是——再一次強(qiáng)調(diào)——對(duì)于特定問(wèn)題,結(jié)果應(yīng)該是可解釋和有意義的。事實(shí)證明,設(shè)定 0.05 的門(mén)檻,所有 12 種硬幣的歷史價(jià)格都不會(huì)通過(guò)定態(tài)測(cè)試,在這種情況下,我們要對(duì)時(shí)間時(shí)間序列定態(tài)化和重新進(jìn)行測(cè)試。
差分化:這是用來(lái)對(duì)時(shí)間序列定態(tài)化的一種常用方法,可以消除趨勢(shì)和季節(jié)性。在本項(xiàng)目中,我們對(duì)連續(xù)觀測(cè)的差異(滯后1)進(jìn)行了差分化。如果一個(gè)時(shí)間序列具有季節(jié)性因素,則滯后值應(yīng)該是季節(jié)性的周期。在數(shù)字貨幣的例子中沒(méi)有明顯的季節(jié)性成分。下面的箱線(xiàn)圖表明,以太坊在一天24小時(shí)內(nèi)每小時(shí)的價(jià)格平均值相對(duì)恒定。其方差不同,但沒(méi)有明顯的模式。而在對(duì)時(shí)間序列進(jìn)行了滯后差分后,所有的12種貨幣都通過(guò)了迪基-福勒檢驗(yàn)。
格蘭杰因果關(guān)系檢驗(yàn):這是一種統(tǒng)計(jì)假設(shè)檢驗(yàn),用于確定一個(gè)時(shí)間序列是否有助于預(yù)測(cè)另一個(gè)時(shí)間序列。在這里,我們用格蘭杰因果關(guān)系檢驗(yàn)來(lái)確某一數(shù)字貨幣的價(jià)格滯后值是否可以用于預(yù)測(cè)其他硬幣的未來(lái)價(jià)值。
既然12個(gè)錢(qián)幣的歷史價(jià)格數(shù)據(jù)是定態(tài)的,我們構(gòu)建了一個(gè)總的 132 組不同貨幣的數(shù)據(jù)對(duì),每一個(gè)數(shù)據(jù)對(duì)都是某數(shù)字貨幣對(duì)應(yīng)于其他數(shù)字貨幣的歷史價(jià)格(注意:ETH-BTC 數(shù)據(jù)對(duì)和 BTC-ETH 數(shù)據(jù)對(duì)不是一回事!),用于進(jìn)行格蘭杰因果關(guān)系檢驗(yàn)。檢驗(yàn)的零假設(shè)是:每一個(gè)貨幣數(shù)據(jù)對(duì)中,后一種數(shù)據(jù)貨幣沒(méi)有對(duì)前一種數(shù)據(jù)產(chǎn)生影響,在測(cè)試之后后我們初步發(fā)現(xiàn),達(dá)世幣(DASH)H與比特幣現(xiàn)金(BCH)之間相關(guān)性最強(qiáng)(即,比特幣現(xiàn)金的價(jià)格對(duì)達(dá)特幣價(jià)格影響最大),但進(jìn)一步的研究結(jié)果表明,這種強(qiáng)烈的相關(guān)性是由于來(lái)自韓國(guó)交易的激增??紤]到這不是一個(gè)正常的交易,因?yàn)檫@不是一個(gè)正常的情況下,我們選擇了XEM-IOT 這一對(duì)相關(guān)性最強(qiáng)的貨幣對(duì),在本項(xiàng)目中,我們將用 IOT(物聯(lián)網(wǎng)貨幣)的歷史來(lái)對(duì) XEM(新經(jīng)幣)的價(jià)格進(jìn)行預(yù)測(cè)。
2.特征選擇
數(shù)據(jù)查詢(xún)。以下是分析的數(shù)據(jù)及其來(lái)源:
Cryptocompare API:XEM 和 IOT 的歷史價(jià)格,每小時(shí);
Pytrends API:Google News 對(duì)“Cryptocurrency”關(guān)鍵詞的搜索頻率;
redditmetrics.com數(shù)據(jù):對(duì)”Cyptocurrency”、“Mem”、“IOT”子話(huà)題訂閱量的增長(zhǎng)
Pytrends API:對(duì)“Nem wallet download“、“Iota wallet download”, “Nem price”, Iota price”, Bitcoin price”, “GPU for mining”等 Google 關(guān)鍵詞的搜索頻率 —— 這些關(guān)鍵詞基于 Google 關(guān)鍵詞工具挖掘。
Yahoo Financial API:AMD、NVIDIA 兩大挖礦軍火商的股票價(jià)格
ElasticNet回歸、正則化:上述查詢(xún)數(shù)據(jù)可能存在關(guān)聯(lián)性,如在 “Bitcoin price(比特幣價(jià)格)” 和 “CryptoCurrency(虛擬貨幣)”可能包含類(lèi)似 Google 搜索頻率信息,谷歌搜索頻率。使用類(lèi)似的特性構(gòu)建模型會(huì)造成冗余并影響預(yù)測(cè)結(jié)果。ElasticNet可將冗余預(yù)測(cè)系數(shù)縮小到零。
在本項(xiàng)目中,我們對(duì)上述 13 個(gè)特征變量用 ElasticNet 回歸正則化,其中因變量為 XEM 的歷史價(jià)格。經(jīng)過(guò)算法處理后,最終剩下三個(gè)具有非零系數(shù)的預(yù)測(cè)因子。這些特性將用于構(gòu)建最終模型。我同樣也用也試著用 13 個(gè)特征建立了一個(gè)模型,與使用選定的 3 個(gè)特征建立的模型相比,性能差異并不顯著(所有 15 個(gè)特性的 MSE=0.107,3 個(gè)特性的 MSE=0.105)。最終我選用了 3 個(gè)特征的模型。
3. 建立模型
在本項(xiàng)目中,我們使用 ARIMAX 模型來(lái)預(yù)測(cè) XEM 的未來(lái)價(jià)格。ARIMAX 模型如同 ARIMA 模型通過(guò)自回歸和移動(dòng)平均值進(jìn)行預(yù)測(cè),但 ARIMAX 可包含其他外生變量,在此我們使用的是之前選擇的 3 個(gè)外生變量。
數(shù)據(jù)預(yù)處理:我們之前已經(jīng)提到了定態(tài)性和迪基-福勒檢驗(yàn)的相關(guān)內(nèi)容,在此不再展開(kāi)。這些書(shū)在 ElasticNet 前已經(jīng)標(biāo)準(zhǔn)化過(guò)了,我們只需進(jìn)行差異化處理,并確保其通過(guò)了迪基-福勒檢驗(yàn)。之后數(shù)據(jù)被清理并分成測(cè)試集和訓(xùn)練集。
ACF & PACF:數(shù)據(jù)已經(jīng)確定,我們需要 1)確定時(shí)間序列是自回歸或是移動(dòng)平均過(guò)程;2)確定我們需要在模型中使用自回歸和移動(dòng)平均過(guò)程的順序。ACF可以回答第一個(gè)問(wèn)題,也可以用于確定移動(dòng)平均序列中的滯后階數(shù)。下圖為 XEM 歷史價(jià)格的 ACF 和 PACF。
正如我們所見(jiàn),這是一個(gè)自回歸過(guò)程,因?yàn)?ACF 沒(méi)有截止值。PACF 在滯后滯后有一個(gè)截止值,這將是我們用于 ARIMAX 模型的參數(shù)。
ARIMAX:使用AR 1和3個(gè)外生變量。下圖是與實(shí)際值比較的擬合值。
用擬合出的模型得出的 XEM 價(jià)格預(yù)測(cè)。下圖是基于 XEM 樣本對(duì)未來(lái) 600 步(即 600 小時(shí),25 天)的預(yù)測(cè)值。
如我們預(yù)期,該模型在開(kāi)始的表現(xiàn)更好,而隨著時(shí)間的推移,預(yù)測(cè)誤差也在不斷增加。在 1-100 步內(nèi),預(yù)測(cè)的均方誤差為 0.039,而 101-600 步的均方誤差為 0.119。
總結(jié)
我們用IOT的歷史價(jià)格以及對(duì)“Nem Price”的Google搜索量、“Nem”子條目的訂閱量增長(zhǎng)建立 ARIMAX 模型來(lái)預(yù)測(cè)NEX的數(shù)字貨幣價(jià)格。在 100 小時(shí)以?xún)?nèi),預(yù)測(cè)結(jié)果是可以接受的,超過(guò) 100 小時(shí)后就不能看了。
這是我的第一個(gè)數(shù)據(jù)科學(xué)項(xiàng)目,還有很大的改進(jìn)空間。如果使用付費(fèi)的 Twitter 數(shù)據(jù)或者使用不同的機(jī)器學(xué)習(xí)模型可能會(huì)顯著提高其性能,目前我會(huì)考慮提出一個(gè)能用于自動(dòng)交易的交易信號(hào)算法,但摸摸我的錢(qián)包,我不禁流下了悲傷的淚水。
我希望你能像我喜歡寫(xiě)這篇文章一樣喜歡這篇文章!如果你有任何想法,請(qǐng)留言讓我知道。
信息首發(fā):魔鏡魔鏡告訴我,數(shù)字貨幣未來(lái)價(jià)格可以預(yù)測(cè)嗎?

今日頭條:
- 2015深圳事業(yè)單位招聘460名工作人員公告 報(bào)名1
- 深圳駕駛?cè)顺?00萬(wàn) 約17萬(wàn)人駕駛證異常
- 深圳保姆曝陪睡內(nèi)幕月薪達(dá)八千
- 新版百元大鈔今發(fā)行 快速識(shí)別新版人民幣
- 允許普遍二孩 中共全會(huì)公報(bào)允許普遍二孩政策
- 習(xí)近平將出席G20峰會(huì)全部正式活動(dòng)
- 地下錢(qián)莊轉(zhuǎn)移贓款 7個(gè)月轉(zhuǎn)移8000億 銀行內(nèi)鬼頻
- 男童玩槍射穿手掌 父親被刑拘
- 北京迎來(lái)今冬初雪 部分公交停駛地鐵限速
- 大學(xué)光棍節(jié)新規(guī) 網(wǎng)友:光棍節(jié)單身狗福利