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