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