最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat:Python 用ARIMA、GARCH模型預(yù)測分析股票市場收益率時間序列

2021-11-01 16:38 作者:拓端tecdat  | 我要投稿

原文鏈接: http://tecdat.cn/?p=24092

原文出處:拓端數(shù)據(jù)部落公眾號

前言

在量化金融中,我學(xué)習(xí)了各種時間序列分析技術(shù)以及如何使用它們。

通過發(fā)展我們的時間序列分析 (TSA) 方法組合,我們能夠更好地了解已經(jīng)發(fā)生的事情,并對未來做出更好、更有利的預(yù)測。示例應(yīng)用包括預(yù)測未來資產(chǎn)收益、未來相關(guān)性/協(xié)方差和未來波動性。

在我們開始之前,讓我們導(dǎo)入我們的?Python?庫。?

讓我們使用pandas包通過 API 獲取一些示例數(shù)據(jù)。

基礎(chǔ)知識

什么是時間序列?

時間序列是按時間順序索引的一系列數(shù)據(jù)點。——Wikipedia

平穩(wěn)性

為什么我們關(guān)心平穩(wěn)性??

  • 平穩(wěn)時間序列 (TS) 很容易預(yù)測,因為我們可以假設(shè)未來的統(tǒng)計屬性與當(dāng)前的統(tǒng)計屬性相同或成比例。

  • 我們在 TSA 中使用的大多數(shù)模型都假設(shè)協(xié)方差平穩(wěn)。這意味著這些模型預(yù)測的描述性統(tǒng)計數(shù)據(jù)(例如均值、方差和相關(guān)性)僅在 TS 平穩(wěn)時才可靠,否則無效。

“例如,如果序列隨著時間的推移不斷增加,樣本均值和方差會隨著樣本規(guī)模的增加而增長,并且他們總是會低估未來時期的均值和方差。如果一個序列的均值和方差是沒有明確定義,那么它與其他變量的相關(guān)性也不是?!?

話雖如此,我們在金融中遇到的大多數(shù) TS 都不是平穩(wěn)的。因此,TSA 的很大一部分涉及識別我們想要預(yù)測的序列是否是平穩(wěn)的,如果不是,我們必須找到方法將其轉(zhuǎn)換為平穩(wěn)的。(稍后會詳細(xì)介紹)

自相關(guān)

本質(zhì)上,當(dāng)我們對時間序列建模時,我們將序列分解為三個部分:趨勢、季節(jié)性/周期性和隨機(jī)。隨機(jī)分量稱為殘差或誤差。它只是我們的預(yù)測值和觀察值之間的差異。序列相關(guān)是指我們的 TS 模型的殘差(誤差)彼此相關(guān)。?

為什么我們關(guān)心序列相關(guān)性??

我們關(guān)心序列相關(guān)性,因為它對我們模型預(yù)測的有效性至關(guān)重要,并且與平穩(wěn)性有著內(nèi)在的聯(lián)系?;叵胍幌?,根據(jù)定義,平穩(wěn)TS的殘差(誤差)是連續(xù)不相關(guān)的!如果我們在我們的模型中沒有考慮到這一點,我們系數(shù)的標(biāo)準(zhǔn)誤差就會被低估,從而夸大了我們的 T 統(tǒng)計量。結(jié)果是太多的 1 類錯誤,即使原假設(shè)為真,我們也會拒絕原假設(shè)!通俗地說,忽略自相關(guān)意味著我們的模型預(yù)測將是胡說八道,我們可能會得出關(guān)于模型中自變量影響的錯誤結(jié)論。?

白噪聲和隨機(jī)游走

白噪聲是我們需要了解的第一個時間序列模型(Tsm)。根據(jù)定義,作為白噪聲過程的時間序列具有連續(xù)不相關(guān)的誤差,這些誤差的預(yù)期平均值等于零。對連續(xù)不相關(guān)的誤差的另一種描述是,獨立和相同分布(i.i.d.)。這一點很重要,因為如果我們的Tsm是合適的,并且成功地捕捉了基本過程,我們模型的殘差將是i.i.d.,類似于白噪聲過程。因此,TSA的一部分實際上是試圖將一個模型適合于時間序列,從而使殘差序列與白噪聲無法區(qū)分。

讓我們模擬一個白噪聲過程并查看它。下面我介紹一個方便的函數(shù),用于繪制時間序列和直觀地分析序列相關(guān)性。

我們可以輕松地對白噪聲過程進(jìn)行建模并輸出 TS 圖檢查。?

高斯白噪聲

我們可以看到該過程似乎是隨機(jī)的并且以零為中心。自相關(guān) (ACF) 和偏自相關(guān) (PACF) 圖也表明沒有顯著的序列相關(guān)。請記住,我們應(yīng)該在自相關(guān)圖中看到大約 5% 的顯著性,這是由于從正態(tài)分布采樣的純偶然性。下面我們可以看到 QQ 和概率圖,它們將我們的數(shù)據(jù)分布與另一個理論分布進(jìn)行了比較。在這種情況下,該理論分布是標(biāo)準(zhǔn)正態(tài)分布。顯然,我們的數(shù)據(jù)是隨機(jī)分布的,并且應(yīng)該遵循高斯(正常)白噪聲。?

隨機(jī)游走的意義在于它是非平穩(wěn)的,因為觀測值之間的協(xié)方差是時間相關(guān)的。如果我們建模的 TS 是隨機(jī)游走,則它是不可預(yù)測的。

讓我們使用“random”函數(shù)從標(biāo)準(zhǔn)正態(tài)分布中采樣來模擬隨機(jī)游走。?

無漂移的隨機(jī)行走

顯然,我們的 TS 不是平穩(wěn)的。讓我們看看隨機(jī)游走模型是否適合我們的模擬數(shù)據(jù)?;叵胍幌码S機(jī)游走是xt = xt-1 + wt。使用代數(shù)我們可以說xt - xt-1 = wt。因此,我們隨機(jī)游走系列的第一個差異應(yīng)該等于白噪聲過程,我們可以在我們的 TS 上使用“?np.diff()”?函數(shù),看看這是否成立。?

隨機(jī)行走的一階差分

我們的定義成立,因為這看起來與白噪聲過程完全一樣。如果我們對 SPY 價格的一階差分進(jìn)行隨機(jī)游走會怎么樣?

將隨機(jī)行走模型擬合到ETF價格

它與白噪聲非常相似。但是,請注意 QQ 和概率圖的形狀。這表明該過程接近正態(tài)分布,但具有“重尾”。?ACF 和 PACF 在滯后 1、5?、16?、18 和 21 附近似乎也存在一些顯著的序列相關(guān)性。這意味著應(yīng)該有更好的模型來描述實際的價格變化過程。?

線性模型

線性模型又稱趨勢模型,代表了一個可以用直線作圖的TS。其基本方程為。

在這個模型中,因變量的值由β系數(shù)和一個單一的自變量--時間決定。一個例子是,一家公司的銷售額在每個時間段都會增加相同的數(shù)量。 讓我們來看看下面的一個特制的例子。在這個模擬中,我們假設(shè)堅定的ABC公司在每個時間段的銷售額為-50.00元(β0或截距項)和+25.00元(β1)。

線性趨勢模型模擬

在這里我們可以看到模型的殘差是相關(guān)的,并且作為滯后的函數(shù)線性減少。分布近似正態(tài)。在使用此模型進(jìn)行預(yù)測之前,我們必須考慮并消除序列中存在的明顯自相關(guān)。PACF 在滯后 1 處的顯著性表明自回歸?模型可能是合適的。

對數(shù)線性模型

這些模型與線性模型類似,只是數(shù)據(jù)點形成了一個指數(shù)函數(shù),代表了相對于每個時間步的恒定變化率。例如,ABC公司的銷售額在每個時間步長增加X%。當(dāng)繪制模擬的銷售數(shù)據(jù)時,你會得到一條看起來像這樣的曲線。


?

模擬指數(shù)函數(shù)

然后我們可以通過采用銷售額的自然對數(shù)來轉(zhuǎn)換數(shù)據(jù)?,F(xiàn)在線性回歸擬合數(shù)據(jù)。

指數(shù)函數(shù)的自然對數(shù)

如前所述,這些模型有一個致命的弱點。它們假設(shè)連續(xù)不相關(guān)的誤差,正如我們在線性模型的例子中看到的那樣。在現(xiàn)實生活中,TS數(shù)據(jù)通常會違反我們的平穩(wěn)假設(shè),這使我們轉(zhuǎn)向自回歸模型。

自回歸模型 - AR(p)

當(dāng)因變量針對自身的一個或多個滯后值進(jìn)行回歸時,該模型稱為自回歸模型。公式如下所示:

AR (P) 模型

當(dāng)您描述?模型的“階”時,例如階“p”的 AR 模型,??p 表示模型中使用的滯后變量的數(shù)量。例如,AR(2) 模型或二階自回歸模型如下所示:

AR (2) 模型

這里,alpha (a) 是系數(shù),omega (w) 是白噪聲項。在 AR 模型中,Alpha 不能等于 0。請注意,alpha 設(shè)置為 1 的 AR(1) 模型是隨機(jī)游走?,因此不是平穩(wěn)的。?

AR(1) 模型,ALPHA = 1;隨機(jī)漫步

讓我們模擬一個 alpha 設(shè)置為 0.6 的 AR(1) 模型

AR(1) 模型,ALPHA = 0.6

正如預(yù)期的那樣,我們模擬的 AR(1) 模型的分布是正常的。滯后值之間存在顯著的序列相關(guān)性,尤其是在滯后 1 處,如 PACF 圖所示。?

現(xiàn)在我們可以使用 Python 的 statsmodels 擬合 AR(p) 模型。首先,我們將 AR 模型擬合到我們的模擬數(shù)據(jù)并收益估計的 alpha 系數(shù)。然后我們使用 statsmodels 函數(shù)“order()”來查看擬合模型是否會選擇正確的滯后。如果 AR 模型是正確的,估計的 alpha 系數(shù)將接近我們的真實 alpha 0.6,所選階數(shù)等于 1。

看起來我們能夠恢復(fù)模擬數(shù)據(jù)的基礎(chǔ)參數(shù)。讓我們用 alpha_1 = 0.666 和 alpha_2 = -0.333 來模擬 AR(2) 過程。為此,我們使用 statsmodel 的“generate_samples()”函數(shù)。該函數(shù)允許我們模擬任意階數(shù)的 AR 模型。

AR(2) 模擬 ALPHA_1 = 0.666 和 ALPHA_2 = -0.333

讓我們看看是否可以恢復(fù)正確的參數(shù)。

讓我們看看 AR(p) 模型將如何擬合 MSFT 對數(shù)收益。這是收益TS。

MSFT 對數(shù)收益時間序列

最好的階數(shù)是 23 個滯后或 23 !任何具有這么多參數(shù)的模型在實踐中都不太可能有用。顯然,收益過程背后的復(fù)雜性比這個模型所能解釋的要復(fù)雜得多。

移動平均模型 - MA(q)

MA(q) 模型與 AR(p) 模型非常相似。不同之處在于 MA(q) 模型是過去白噪聲誤差項的線性組合,而不是像 AR(p) 模型這樣的過去觀察的線性組合。MA 模型的目的是我們可以通過將模型擬合到誤差項來直接觀察誤差過程中的“沖擊”。在 AR(p) 模型中,通過使用 ACF 對過去的一系列觀察結(jié)果間接觀察到這些沖擊。MA(q) 模型的公式是:

Omega (w) 是 E(wt) = 0 且方差為 sigma 平方的白噪聲。讓我們使用 Beta=0.6 并指定 AR(p) alpha 等于 0 來模擬這個過程。

BetA=0.6 的模擬 MA(1) 過程

ACF 函數(shù)顯示滯后 1 很重要,這表明 MA(1) 模型可能適用于我們的模擬序列。當(dāng) ACF 僅在滯后 1 處顯示顯著性時,我不確定如何解釋在滯后 2、3 和 4 處顯示顯著性的 PACF。我們現(xiàn)在可以嘗試將 MA(1) 模型擬合到我們的模擬數(shù)據(jù)中。我們可以使用?“ARMA()”?函數(shù)來指定我們選擇的階數(shù)。我們調(diào)用它的“fit()”?方法來返回模型輸出。?

MA(1) 模型概要

該模型能夠正確估計滯后系數(shù),因為 0.58 接近我們的真實值 0.6。另請注意,我們的 95% 置信區(qū)間確實包含真實值。讓我們嘗試模擬 MA(3) 過程,然后使用我們的 ARMA 函數(shù)將三階 MA 模型擬合到系列中,看看我們是否可以恢復(fù)正確的滯后系數(shù)(β)。Beta 1-3 分別等于 0.6、0.4 和 0.2。

BetAS = [0.6, 0.4, 0.2] 的模擬 MA(3) 過程

MA(3) 模型總結(jié)

該模型能夠有效地估計實際系數(shù)。我們的 95% 置信區(qū)間還包含 0.6、0.4 和 0.3 的真實參數(shù)值。現(xiàn)在讓我們嘗試將 MA(3) 模型擬合到 SPY 的對數(shù)收益。請記住,我們不知道真正的參數(shù)值。

SPY MA (3) 模型總結(jié)

讓我們看看模型殘差。

不錯。一些 ACF 滯后有點問題,尤其是在 5、16 和 18 處。這可能是采樣錯誤,但再加上重尾,我認(rèn)為這不是預(yù)測未來 SPY收益的最佳模型。

自回歸移動平均模型 - ARMA(p, q)

ARMA 模型只是 AR(p) 和 MA(q) 模型之間的合并。讓我們從量化金融的角度回顧一下這些模型對我們的意義:?

  • AR(p) 模型試圖捕捉(解釋)交易市場中經(jīng)常觀察到的動量和均值回歸效應(yīng)。

  • MA(q) 模型試圖捕捉(解釋)在白噪聲項中觀察到的沖擊效應(yīng)。這些沖擊效應(yīng)可以被認(rèn)為是影響觀察過程的意外事件,例如意外收益、恐怖襲擊等。

“對于雜貨店中的一組產(chǎn)品,在不同時間推出的有效優(yōu)惠券活動的數(shù)量將構(gòu)成多重‘沖擊’,從而影響相關(guān)產(chǎn)品的價格?!?/p>

-?AM207: Pavlos Protopapas, Harvard University

ARMA 的弱點在于它忽略了在大多數(shù)金融時間序列中發(fā)現(xiàn)的波動性聚類效應(yīng)。?

模型公式為:

ARMA(P, Q) 方程

讓我們用給定的參數(shù)模擬一個 ARMA(2, 2) 過程,然后擬合一個 ARMA(2, 2) 模型,看看它是否可以正確估計這些參數(shù)。設(shè)置 alpha 等于 [0.5,-0.25] 和 Beta 等于 [0.5,-0.3]。?

模擬 ARMA(2, 2) 過程

ARMA(2, 2) 模型總結(jié)

我們的真實參數(shù)包含在 95% 的置信區(qū)間內(nèi)。

接下來我們模擬一個 ARMA(3, 2) 模型。之后,我們循環(huán)使用 p、q 的組合,以將 ARMA 模型擬合到我們的模擬序列中。我們根據(jù)哪個模型產(chǎn)生最低值來選擇最佳組合Akaike Information Criterion (AIC).

上面恢復(fù)了正確的階數(shù)。下面我們看到了在任何模型擬合之前模擬時間序列的輸出。

模擬 ARMA(3, 2) 系列,其中 Alpha = [0.5,-0.25,0.4] 和 BetAS = [0.5,-0.3]

ARMA(3, 2) 最佳模型總結(jié)

我們看到選擇了正確的階數(shù)并且模型正確地估計了我們的參數(shù)。但是請注意 MA.L1.y 系數(shù);0.5 的真實值幾乎在 95% 的置信區(qū)間之外!

下面我們觀察模型的殘差。顯然這是一個白噪聲過程,因此最好的模型已經(jīng)被擬合來解釋?數(shù)據(jù)。

ARMA(3, 2) 最佳模型殘差白噪聲

接下來,我們將 ARMA 模型擬合到 SPY 收益。下圖是模型擬合前的時間序列。

SPY收益率

我們繪制模型殘差。

SPY最佳模型殘差 ARMA(4, 4)

ACF 和 PACF 沒有顯示出顯著的自相關(guān)。QQ 和概率圖顯示殘差近似正態(tài)并帶有重尾。然而,這個模型的殘差看起來不像白噪聲,可以看到模型未捕獲的明顯條件異方差(條件波動性)的突出顯示區(qū)域。?

自回歸綜合移動平均模型 - ARIMA(p, d, q)

ARIMA是ARMA模型類別的自然延伸。如前所述,我們的許多TS并不是平穩(wěn)的,但是它們可以通過差分而成為平穩(wěn)的。我們看到了一個例子,當(dāng)我們采取Guassian隨機(jī)游走的第一次差分,并證明它等于白噪聲。換句話說,我們采取了非平穩(wěn)的隨機(jī)行走,并通過第一次差分將其轉(zhuǎn)變?yōu)槠椒€(wěn)的白噪聲。

不用太深入地研究這個方程,只要知道 "d "是指我們對序列進(jìn)行差分的次數(shù)。順便提一下,在Python中,如果我們需要對一個序列進(jìn)行多次差分,我們必須使用np.diff()函數(shù)。pandas函數(shù)DataFrame.diff()/Series.diff()只處理數(shù)據(jù)幀/序列的第一次差分,沒有實現(xiàn)TSA中需要的遞歸差分。??

在下面的例子中,我們通過(p, d, q)訂單的非顯著數(shù)量的組合進(jìn)行迭代,以找到適合SPY收益的最佳ARIMA模型。我們使用AIC來評估每個模型。最低的AIC獲勝。

最好的模型的差值為 0 也就不足為奇了?;叵胍幌拢覀円呀?jīng)用對數(shù)價格的第一個差值來計算股票收益。下面,我繪制了模型殘差。結(jié)果與我們上面擬合的 ARMA(4, 4) 模型基本相同。顯然,這個 ARIMA 模型也沒有解釋序列中的條件波動!?

擬合SPY收益的 ARIMA 模型

現(xiàn)在我們至少積累了足夠的知識來對未來的收益進(jìn)行簡單的預(yù)測。這里我們使用我們模型的predict()?方法。作為參數(shù),要預(yù)測的時間步數(shù)需要一個整數(shù),alpha 參數(shù)需要一個小數(shù)來指定置信區(qū)間。默認(rèn)設(shè)置為 95% 置信度。對于 99%,設(shè)置 alpha 等于 0.01。?

21 天SPY收益預(yù)測 - ARIMA(4,0,4)

自回歸條件異方差模型 - ARCH(p)

ARCH(p) 模型可以簡單地認(rèn)為是應(yīng)用于時間序列方差的 AR(p) 模型。另一種思考方式是,我們的時間序列?在時間 t的方差取決于對先前時期方差的過去觀察。

arch(1) 模型公式——賓州州立大學(xué)

ARCH(1) 模型公式

假設(shè)系列的均值為零,我們可以將模型表示為:

ARCH(1) 模型,如果零均值

零均值的 ARCH(1) 模型

模擬ARCH(1)過程

模擬ARCH(1)**2 過程

請注意 ACF 和 PACF 似乎在滯后 1 處顯示顯著性,表明方差的 AR(1) 模型可能是合適的。?

廣義自回歸條件異方差模型 - GARCH(p,q)

簡單地說,GARCH(p, q) 是一個應(yīng)用于時間序列方差的 ARMA 模型,即它有一個自回歸項和一個移動平均項。AR(p) 對殘差的方差(平方誤差)或簡單地對我們的時間序列平方進(jìn)行建模。MA(q) 部分對過程的方差進(jìn)行建模。基本的 GARCH(1, 1) 公式是:

來自 quantstart.com 的 garch(1, 1) 公式

?GARCH(1, 1) 公式

Omega (w) 是白噪聲,alpha 和 Beta 是模型的參數(shù)。此外 alpha_1 + Beta_1 必須小于 1,否則模型不穩(wěn)定。我們可以在下面模擬一個 GARCH(1, 1) 過程。

模擬 GARCH(1, 1) 過程

再次注意到,總體上這個過程與白噪聲非常相似,然而當(dāng)我們查看平方的eps序列時,請看一下。

模擬 GARCH(1, 1) 過程平方

顯然存在著自相關(guān),ACF和PACF的滯后期的重要性表明我們的模型需要AR和MA。讓我們看看我們是否能用GARCH(1, 1)模型恢復(fù)我們的過程參數(shù)。這里我們使用ARCH包中的arch_model函數(shù)。

GARCH 模型擬合摘要

現(xiàn)在讓我們運行一個使用 SPY 收益的示例。過程如下:

  • 迭代 ARIMA(p, d, q) 模型的組合來擬合我們的時間序列。

  • 根據(jù) AIC 最低的 ARIMA 模型選擇 GARCH 模型階數(shù)。

  • 將 GARCH(p, q) 模型擬合到我們的時間序列。

  • 檢查模型殘差和殘差平方的自相關(guān)

另請注意,我選擇了一個特定的時間段來更好地突出關(guān)鍵點。然而,根據(jù)研究的時間段,結(jié)果會有所不同。?

擬合SPY收益的 ARIMA(3,0,2) 模型的殘差

看起來像白噪聲。?

擬合SPY收益的 ARIMA(3,0,2) 模型的平方殘差

平方殘差顯示自相關(guān)。讓我們擬合一個 GARCH 模型。?

GARCH(3, 2) 模型擬合SPY收益

在處理非常小的數(shù)字時,會出現(xiàn)收斂警告。在必要時,將數(shù)字乘以10倍的系數(shù)以擴(kuò)大幅度,可以起到幫助作用,但是對于這個演示來說,沒有必要這樣做。下面是模型的殘差。

擬合SPY收益的 GARCH(3, 2) 模型殘差

上面看起來像白噪聲?,F(xiàn)在讓我們查看平方殘差的 ACF 和 PACF。

我們已經(jīng)實現(xiàn)了良好的模型擬合,因為平方殘差沒有明顯的自相關(guān)。

最受歡迎的見解

1.HAR-RV-J與遞歸神經(jīng)網(wǎng)絡(luò)(RNN)混合模型預(yù)測和交易大型股票指數(shù)的高頻波動率

2.R語言中基于混合數(shù)據(jù)抽樣(MIDAS)回歸的HAR-RV模型預(yù)測GDP增長

3.波動率的實現(xiàn):ARCH模型與HAR-RV模型

4.R語言ARMA-EGARCH模型、集成預(yù)測算法對SPX實際波動率進(jìn)行預(yù)測

5.GARCH(1,1),MA以及歷史模擬法的VaR比較

6.R語言多元COPULA GARCH 模型時間序列預(yù)測

7.R語言基于ARMA-GARCH過程的VAR擬合和預(yù)測

8.matlab預(yù)測ARMA-GARCH 條件均值和方差模型

9.R語言對S&P500股票指數(shù)進(jìn)行ARIMA + GARCH交易策略


拓端tecdat:Python 用ARIMA、GARCH模型預(yù)測分析股票市場收益率時間序列的評論 (共 條)

分享到微博請遵守國家法律
乳山市| 巩义市| 昌宁县| 南部县| 南京市| 当涂县| 江陵县| 班戈县| 壶关县| 娱乐| 广元市| 丹巴县| 锡林郭勒盟| 大城县| 武夷山市| 阿巴嘎旗| 驻马店市| 华宁县| 尉犁县| 揭阳市| 昌都县| 汉川市| 雷山县| 会东县| 绥德县| 定襄县| 方正县| 巫溪县| 永顺县| 枝江市| 潜山县| 收藏| 綦江县| 东城区| 南昌县| 疏附县| 闽侯县| 恭城| 海南省| 滨州市| 灵寿县|