python误差修正模型_在Python中实现Johansen Test for Cointegration
在這篇博文中,您將了解Johansen Test的協整本質,并學習如何在Python中實現它。另一種流行的協整檢驗是Augmented Dickey-Fuller(ADF)檢驗。ADF測試具有使用Johansen測試克服的限制。
ADF測試使人們能夠測試兩次系列之間的協整。Johansen測試可用于檢查最多12次系列之間的協整。這意味著可以使用兩個以上的時間序列創建固定的線性資產組合,然后可以使用平均回復策略進行交易,如對交易,三聯交易,指數套利和長短投資組合。要了解有關這些策略的更多信息,請參閱EP Chan博士的Python平均回復策略課程。
其次,ADF測試給出了改變兩次序列順序的不同結果。使用Johansen Test可以克服這個問題,因為它與訂單無關。現在讓我們看看約翰森測試背后的數學。
約翰森測試背后的數學
Johansen測試基于時間序列分析。ADF測試基于自回歸模型,時間序列中的值在同一時間序列的先前值上回歸。當存在多個變量時,您仍然可以將當前價格的關系寫為自回歸模型中過去價格的線性函數,但更準確地說,此模型稱為矢量誤差修正模型(VECM)。下面給出的是VECM的等式。
在這個等式中,我們有多維變量,因此乘法將是矩陣乘法。因此,該等式中的每個滯后項的系數是矢量項。
在Johansen測試中,我們檢查lambda是否具有零特征值。當所有特征值都為零時,這意味著該序列不是協整的,而當某些特征值包含負值時,則意味著可以創建時間序列的線性組合,這將導致平穩性。
這些價格的線性組合代表了投資組合的凈市值。如果投資組合價值的變化通過負回歸系數與其當前值相關,或者在這種情況下是負特征值,那么我們將得到平均回復或固定投資組合。這是Johansen Test的精髓。
約翰遜測試的Python實現
現在讓我們在Python上用一對資產實現Johansen Test,這里我們以GLD-GDX對為例,GLD是SPDR Gold Trust ETF,GDX是Gold Miners ETF。我們可以預期這兩種資產是相關的,我們現在將檢查這些資產是否是協整的,如果這樣我們就可以在這對資產上建立一對交易策略,這將證明是有利可圖的。完成下面提到的代碼:
我們將從導入兩個庫開始。要導入的第一個庫是Pandas庫,它將用于從CSV文件中讀取數據,然后創建包含兩個儀器數據的數據框。
其次,我們將從Johansen庫中導入coint_johansen函數,這是由托萊多大學經濟系的James LeSage開發的函數。您可以從此處下載此代碼。
導入庫后,我們通過讀取csv文件中的數據,將兩個證券的數據存儲在變量df_x和df_y中。接下來,我們創建一個數據框df,它存儲我們必須運行Johansen測試的兩次系列。
然后,我們通過將存儲時間序列數據(df),0和1的數據幀作為其三個參數傳遞來調用coint_johansen函數。參數中的第二項表示零假設的順序,值0表示它是常數項,多項式中沒有時間趨勢。第三項指定計算估算器時使用的滯后差項的數量,這里我們使用單個滯后差項。
該測試的輸出為我們提供了跟蹤統計和特征統計。
跟蹤統計信息告訴我們特征值的總和是否為0.零假設r <= 0給出了17.895的跟蹤統計量,因此零假設可以在95%置信水平下被拒絕,因為跟蹤的幅度統計值大于臨界值,請注意Johansen測試僅給出輸出的大小,因此我們不必擔心這些跡象。
特征統計量以特征值遞減的順序存儲特征值,它們告訴我們系列的協整程度如何強烈,或者意味著恢復的趨勢有多強。在我們的例子中,零假設的特征統計量可以在95%置信水平下被拒絕,因為17.5694大于14.2639。
特征向量給出了時間序列的均值回復線性組合的等式。對應于最高特征值的特征向量表示具有最大均值回復特性的投資組合。零假設是時間序列不是協整的,因此當我們拒絕零假設并接受替代假設時,我們建議該序列是協整的。
約翰森測試的性質
即使時間序列的順序顛倒,Johansen測試也會給出相同的結果,您可以嘗試將其作為練習。該測試可用作檢查協整的與訂單無關的方式。這個測試允許我們檢查三胞胎,四胞胎之間的協整,最多12個系列。
原因很簡單,沒有數學家能夠計算超過12個變量的臨界值。因此,結果不能用于拒絕零假設。矢量誤差校正模型可以用于甚至1000種股票,具體取決于計算能力的可用性。它無法判斷股票是否正在協整,但它仍然可以用作預測模型。
總結
以上是生活随笔為你收集整理的python误差修正模型_在Python中实现Johansen Test for Cointegration的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C实现NV12转I420
- 下一篇: python传奇自动打怪脚本_GOM引擎