R語言和Python用泊松過程擴展:霍克斯過程Hawkes Processes分析比特幣交易數(shù)據(jù)訂單到
全文下載鏈接:http://tecdat.cn/?p=25880?
最近我們被客戶要求撰寫關于泊松過程的研究報告,包括一些圖形和統(tǒng)計輸出。 本文描述了一個模型,該模型解釋了交易的聚集到達,并展示了如何將其應用于比特幣交易數(shù)據(jù)。這是很有趣的,原因很多。例如,對于交易來說,能夠預測在短期內是否有更多的買入或賣出是非常有用的。另一方面,這樣的模型可能有助于理解基本新聞驅動價格與機器人交易員對價格變化的反應之間的區(qū)別
介紹
訂單到達的自激性和集群性
交易不會以均勻的間隔到達,但通常會在時間上聚集在一起。類似地,相同的交易標志往往會聚集在一起并產生一系列買入或賣出訂單。?例如,將訂單分成小塊的算法交易者或對某些交易所事件做出反應的交易系統(tǒng)。
出于演示目的,我使用的數(shù)據(jù)是 2013 年 4 月 20 日 13:10 到 19:57 之間的 5000 筆交易。這是 1 分鐘窗口內聚合的交易計數(shù)圖。
plot(x,?b,?type?=?"l")

每分鐘的平均交易數(shù)是 13,但是我們可以找出幾個超過 50 的實例。通常較高的交易強度會持續(xù)幾分鐘,然后再次下降到平均值。特別是在 16:00 之后的 15 分鐘左右,我們可以看到非常高的交易強度,其中一個實例每分鐘超過 200 個訂單,然后在接下來的約 10 分鐘內強度緩慢下降。
描述事件計數(shù)到達的最基本方法,例如上面的時間序列,是泊松過程?,有一個參數(shù)λ。在泊松過程中,每單位時間的預期事件數(shù)由一個參數(shù)定義。這種方法被廣泛使用,因為它非常適合大量數(shù)據(jù),例如呼叫中心的電話到達。然而,就我們的目的而言,這太簡單了,因為我們需要一種方法來解釋聚類和均值回歸。
霍克斯過程(Hawkes Processes),是基本泊松過程的擴展,旨在解釋這種聚類。像這樣的自激模型廣泛用于各種科學;一些例子是地震學(地震和火山噴發(fā)的建模)、生態(tài)學(野火評估 )、神經科學,當然還有金融和貿易。
讓我們繼續(xù)理解和擬合霍克斯過程(Hawkes Processes)到上面的數(shù)據(jù)。
霍克斯過程(Hawkes Processes)
霍克斯過程對隨時間變化的強度或過程的事件發(fā)生率進行建模,這部分取決于過程的歷史。另一方面,簡單的泊松過程沒有考慮事件的歷史。
下圖中繪制了霍克斯過程的示例實現(xiàn)。

它由 8 個事件組成,通常采用時間戳的形式,以及由三個參數(shù)定義的樣本強度路徑

這里,μ是過程恢復到的基本速率,α是事件發(fā)生后的強度跳躍,β是指數(shù)強度衰減?;鶞事室部梢越忉尀橥馍录膹姸?,例如新聞。其他參數(shù) α?和 β?定義了過程的聚類屬性。通常情況下 α<β 確保強度降低的速度快于新事件增加的速度。
點擊標題查閱往期內容

R語言連續(xù)時間馬爾科夫鏈模擬案例 Markov Chains

左右滑動查看更多

01

02

03

04

自我激發(fā)性在時間標記 2 之前的前四個事件中是可見的。它們在彼此相距很短的時間內發(fā)生,這導致第四個事件的強度峰值很大。每一次事件的發(fā)生都會增加另一次發(fā)生的機會,從而導致事件的聚集。第五個數(shù)據(jù)點僅在時間標記 4 處到達,與此同時,導致整體強度呈指數(shù)下降。
條件強度最簡單的形式是

指數(shù)函數(shù)定義了過程的記憶,即過去的事件如何影響當前的事件。求和將此函數(shù)應用于從事件 titi 到當前事件 t 的歷史。λ(t)表示時間 t 的瞬時強度。
給定條件強度,兩個派生量也很有趣:期望強度(在某些條件下)可以顯示為 [4] 具有以下形式

并描述給定時間段的交易強度。另一個量是所謂的分支比

它描述了內生產生的交易比例(即作為另一筆交易的結果)。這可以用來評估交易活動中有多少是由反饋引起的。
可以使用傳統(tǒng)的最大似然估計和凸求解器來擬合模型的參數(shù)。
將比特幣交易的到來與霍克斯過程相匹配
在給定一組有序交易時間 t1<t2<?<tn的情況下,強度路徑是完全定義的,在我們的例子中,這只是交易記錄時的 unix 時間戳。鑒于此,我們可以使用R軟件和Python輕松應用 MLE。給定參數(shù)的初始猜測和對參數(shù)的約束為正,以下函數(shù)擬合模型。
fhawks?<-?function(data)?{??#?初始猜測,a是α,C是β??pstt?<-?c??#?使用條件強度函數(shù)創(chuàng)建一個對象??proc
??#?假設強度必須是正的??conditi?<-?penaltany(parms?<?0)??#?使用標準優(yōu)化法進行擬合??fit(m,?optrol?=?list(trace?=?2))
我通過將存儲在數(shù)據(jù)幀中的 5000 個交易時間戳傳遞給它來運行上面的擬合過程。與原始數(shù)據(jù)集的唯一區(qū)別是我為與另一筆交易共享時間戳的所有交易添加了一個隨機毫秒時間戳。這是必需的,因為模型需要區(qū)分每筆交易(即每筆交易必須有唯一的時間戳)。文獻描述了解決這個問題的不同方法 [4, 10],但將時間戳擴展到毫秒是一種常見的方法。
summary(f)

我們最終得到的參數(shù)估計為 μ=0.07,α=1.18,β=1.79。α 的參數(shù)估計表明,在單筆交易發(fā)生后,條件強度每秒增加 1.18 筆交易。此外,整個期間的平均強度為每秒 E[λ]=0.20次交易,一分鐘內總共有 12 次交易,這與我們的經驗計數(shù)相符。n=65%的分支率表明超過一半的交易是在模型內作為其他交易的結果產生的。鑒于所研究的時間相對平穩(wěn),價格呈上漲趨勢,這一數(shù)字很高。將其應用于更動蕩的區(qū)制或狀態(tài)(例如一些崩潰)會很有趣,我認為該比率會高得多。
現(xiàn)在的目的是計算擬合模型的實際條件強度,并將其與經驗計數(shù)進行比較。R 執(zhí)行此評估,我們只需提供一系列時間戳即可對其進行評估。該范圍介于原始數(shù)據(jù)集的最小和最大時間戳之間,對于該范圍內的每個點,都會計算瞬時強度。
下圖比較經驗計數(shù)(來自本文的第一個圖)和擬合的綜合強度。

從圖上看,這似乎是一個相當好的擬合。請注意,歷史強度往往高于擬合的強度??梢酝ㄟ^引入有影響和無影響的交易來解決這個問題,這有效地減少了作為擬合程序一部分的交易數(shù)量。經驗數(shù)據(jù)和擬合數(shù)據(jù)之間跳躍大小略微不匹配的另一個原因可能是同一秒內時間戳的隨機化;在5000個原始交易中,超過2700個交易與另一個交易共享一個時間戳。這導致大量的交易(在同一秒內)失去訂單,這可能會影響跳躍的大小。
擬合優(yōu)度
評估擬合優(yōu)度的方法有很多種。一種是通過比較AIC同質泊松模型的值,如上面的 R 總結中所示,我們的霍克斯模型更適合數(shù)據(jù)。
檢驗模型與數(shù)據(jù)擬合程度的另一種方法是評估殘差。理論上說[4],如果模型擬合得好,那么殘差過程應該是同質的,應該有事件間時間(兩個殘差事件時間戳之間的差值),這些時間是指數(shù)分布。事件間時間的對數(shù)圖,或者在我們的案例中,對指數(shù)分布的QQ圖,證實了這點。下面的圖顯示了一個很好的R2擬合。

現(xiàn)在我們知道該模型很好地解釋了到達的聚類,那么如何將其應用于交易呢?下一步將是至少單獨考慮買入和賣出的到達,并找到一種方法來預測給定的霍克斯模型。然后,這些強度預測可以構成做方向性策略的一部分。讓我們看一下文獻以獲得一些想法。
申請交易
Hewlett[2]使用買入和賣出到達之間的雙變量自激和交叉激振過程,預測了未來買入和賣出交易的不平衡性。作者設計了一個最佳的清算策略,由一個基于這種不平衡的價格影響公式得出。
在文獻[3]中,作者使用雙變量霍克斯過程的買入和賣出強度比作為進行方向性交易的進入信號。
改進
Hawkes 過程的對數(shù)似然函數(shù)具有 O(N2) 的計算復雜度,因為它在交易歷史中執(zhí)行嵌套循環(huán)。仍然是低效的,特別是對于高頻交易目的。
結論
在本文中,我展示了霍克斯過程是解釋 交易的聚集到達的一個很好的模型。我展示了如何在給定交易時間戳的情況下估計和評估模型,并強調了一些與估計有關的問題。
比特幣交易數(shù)據(jù)及其價格發(fā)現(xiàn)尚未得到很好的研究。自激模型可能會回答諸如比特幣價格變動有多少是由基本事件引起的等問題。該模型本身自然也可以成為交易策略的一部分。
參考
[1] J. Fonseca 和 R. Zaatour:霍克斯過程:快速校準、貿易聚類和擴散限制的應用 ssrn.
[2] P. Hewlett:訂單到達聚類、價格影響和交易路徑優(yōu)化 pdf.
[3] J. Carlsson、M. Foo、H. Lee、H. Shek:使用雙變量霍克斯過程進行高頻交易預測。

本文摘選?《?R語言和Python用泊松過程擴展:霍克斯過程Hawkes Processes分析比特幣交易數(shù)據(jù)訂單到達自激過程時間序列?》?,點擊“閱讀原文”獲取全文完整資料。
點擊標題查閱往期內容
指數(shù)加權模型EWMA預測股市多變量波動率時間序列
R語言極值理論 EVT、POT超閾值、GARCH 模型分析股票指數(shù)VaR、條件CVaR:多元化投資組合預測風險測度分析
R語言GARCH-DCC模型和DCC(MVT)建模估計
Python 用ARIMA、GARCH模型預測分析股票市場收益率時間序列
R語言中的時間序列分析模型:ARIMA-ARCH / GARCH模型分析股票價格
R語言ARIMA-GARCH波動率模型預測股票市場蘋果公司日收益率時間序列
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模擬進行股價預測
R語言時間序列GARCH模型分析股市波動率
R語言ARMA-EGARCH模型、集成預測算法對SPX實際波動率進行預測
matlab實現(xiàn)MCMC的馬爾可夫轉換ARMA - GARCH模型估計
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模擬進行股價預測
使用R語言對S&P500股票指數(shù)進行ARIMA + GARCH交易策略
R語言用多元ARMA,GARCH ,EWMA, ETS,隨機波動率SV模型對金融時間序列數(shù)據(jù)建模
R語言股票市場指數(shù):ARMA-GARCH模型和對數(shù)收益率數(shù)據(jù)探索性分析
R語言多元Copula GARCH 模型時間序列預測
R語言使用多元AR-GARCH模型衡量市場風險
R語言中的時間序列分析模型:ARIMA-ARCH / GARCH模型分析股票價格
R語言用Garch模型和回歸模型對股票價格分析
GARCH(1,1),MA以及歷史模擬法的VaR比較
matlab估計arma garch 條件均值和方差模型R語言POT超閾值模型和極值理論EVT分析
R語言極值推斷:廣義帕累托分布GPD使用極大似然估計、輪廓似然估計、Delta法
R語言極值理論EVT:基于GPD模型的火災損失分布分析
R語言有極值(EVT)依賴結構的馬爾可夫鏈(MC)對洪水極值分析
R語言POT超閾值模型和極值理論EVT分析
R語言混合正態(tài)分布極大似然估計和EM算法
R語言多項式線性模型:最大似然估計二次曲線
R語言Wald檢驗 vs 似然比檢驗
R語言GARCH-DCC模型和DCC(MVT)建模估計
R語言非參數(shù)方法:使用核回歸平滑估計和K-NN(K近鄰算法)分類預測心臟病數(shù)據(jù)
matlab實現(xiàn)MCMC的馬爾可夫轉換ARMA - GARCH模型估計
R語言基于Bootstrap的線性回歸預測置信區(qū)間估計方法
R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型
Matlab馬爾可夫鏈蒙特卡羅法(MCMC)估計隨機波動率(SV,Stochastic Volatility) 模型
Matlab馬爾可夫區(qū)制轉換動態(tài)回歸模型估計GDP增長率R語言極值推斷:廣義帕累托分布GPD使用極大似然估計、輪廓似然估計、Delta法R語言中實現(xiàn)馬爾可夫鏈蒙特卡羅MCMC模型matlab貝葉斯隱馬爾可夫hmm模型實現(xiàn)
R語言如何做馬爾科夫轉換模型markov switching model
matlab中的隱馬爾可夫模型(HMM)實現(xiàn)
R語言馬爾可夫體制轉換模型Markov regime switching
R語言馬爾可夫轉換模型研究交通傷亡人數(shù)事故預測
R語言中的馬爾科夫機制轉換(Markov regime switching)模型
用機器學習識別不斷變化的股市狀況—隱馬爾科夫模型(HMM)股票指數(shù)預測實戰(zhàn)
用機器學習識別不斷變化的股市狀況—隱馬爾科夫模型(HMM)的應用
R語言中實現(xiàn)馬爾可夫鏈蒙特卡羅MCMC模型用R語言模擬M / M / 1隨機服務排隊系統(tǒng)
用R語言模擬混合制排隊隨機服務排隊系統(tǒng)
用R語言模擬M/M/1隨機服務排隊系統(tǒng)