本文首发于个人公众号 “DAMM”, 获取数据及代码、查看往期文章请移步。
本文通过案例介绍 ARCH 模型和 GARCH 模型的建模步骤。
ARCH 模型
简介
ARCH模型(自回归条件异方差模型)由 R. F. Engle 1982 年提出,是在计量经济学和金融问题的背景下创建的。其基本思想为:
- 收益率的扰动序列 前后不相关,但是不独立。
- 的不独立性可以由 作为 的滞后值的线性组合表示。
具体来说,对于 ARCH(m), 有
其中
此外, 需要满足条件使得 有限。
的分布常取为正态分布,标准化的t分布, 广义误差分布(Generalized Error Distribution), 有些情况下还取为有偏的分布。
模拟
使用 fGarch 包进行模拟。其中
- garchSpec() 设定模型参数; omega 为上述模型中的 ;alpha 为向量,个数代表了 ARCH的阶数; beta 为 GARCH的参数
- garchSim() 用于模拟,n代表模拟次数
因此模拟的模型为
spec <- garchSpec(model = list(omega = 0.01, alpha = c(0.2), beta = 0))
sim <- garchSim(spec, n = 200)
sim %>%
plot()
建模步骤
- 定阶。根据 序列的 PACF 的截尾性确定 m。
- 模型估计。模型的似然函数与假定 的分布有关,存在多种似然函数形式(如正态假设、t 分布假设、有偏 t 分布假设和广义误差分布假设)。
- 模型验证。对标准化残差 进行系列验证。
- 预测。
案例分析
library(tidyverse)
library(fGarch)
library(fpp3)
library(lubridate)
intel_df <- read_table(&#34;ftsdata/m-intcsp7309.txt&#34;) %>%
mutate(date = ymd(date)) %>%
mutate(log_return = log(1 + intc),
at = log_return - mean(log_return)) %>%
mutate(num = row_number())
intel_ts <- intel_df %>%
as_tsibble(index = num)
intel_ts %>%
ACF(at^2) %>%
autoplot()
- 可以看到残差平方的 PACF 在滞后 12 处较高, 另外在滞后 1 到 3 较高。
- 因此,可考虑建立 ARCH(3) 作为波动率方程。
intel_ts %>%
PACF(at^2, lag_max = 36) %>%
autoplot()
- 构建 ARCH(3) 模型
以 为收益率,构建如下模型
- 从输出结果可以看到, 几乎为0,
- 并且可以看到 不显著, 因此可以考虑 ARCH(1) 模型。
mod_arch3 <- garchFit(~ 1 + garch(3, 0), data = c(intel_ts$at), trace = FALSE)
mod_arch3 %>% summary()
#> Title:
#> GARCH Modelling
#>Call:
#> garchFit(formula = ~1 + garch(3, 0), data = c(intel_ts$at), trace = FALSE)
#>Mean and Variance Equation:
#> data ~ 1 + garch(3, 0)
#> <environment: 0x164bc9808>
#> [data = c(intel_ts$at)]
#> Conditional Distribution:
#> norm
#> Coefficient(s):
#> mu omega alpha1 alpha2 alpha3
#> -1.0790e-17 1.0455e-02 2.3174e-01 7.4890e-02 5.0929e-02
#> Std. Errors:
#> based on Hessian
#> Error Analysis:
#> Estimate Std. Error t value Pr(>|t|)
#> mu -1.079e-17 5.523e-03 0.000 1.0000
#> omega 1.046e-02 1.243e-03 8.411 <2e-16 ***
#> alpha1 2.317e-01 1.124e-01 2.062 0.0392 *
#> alpha2 7.489e-02 4.717e-02 1.588 0.1123
#> alpha3 5.093e-02 4.481e-02 1.137 0.2557
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> Log Likelihood:
#> 303.9098 normalized: 0.6844816
#> Description:
#> Thu Nov 25 09:18:03 2021 by user:
#> Standardised Residuals Tests:
#> Statistic p-Value
#> Jarque-Bera Test R Chi^2 204.6315 0
#> Shapiro-Wilk Test R W 0.9635663 4.840499e-09
#> Ljung-Box Test R Q(10) 9.286162 0.5051782
#> Ljung-Box Test R Q(15) 19.3473 0.1984253
#> Ljung-Box Test R Q(20) 20.45647 0.4297205
#> Ljung-Box Test R^2 Q(10) 7.242142 0.7024046
#> Ljung-Box Test R^2 Q(15) 27.20339 0.02712225
#> Ljung-Box Test R^2 Q(20) 27.97832 0.1099135
#> LM Arch Test R TR^2 25.02139 0.01472184
#> Information Criterion Statistics:
#> AIC BIC SIC HQIC
#> -1.346441 -1.300317 -1.346691 -1.328251
- 构建 ARCH(1) 模型
由于结果较长,这里不再呈现。
- 构建出来的模型为 模型的 AIC 为 比 ARCH(3) 的 要大。
- 此外 Ljung-Box 检验滞后 10 阶 的 p-value 为 0.277, 可认为为白噪声。滞后 10 阶的 的 p-value 为0.086
- JB, SW 均拒绝原假设为正态分布
mod_arch1 <- garchFit(~ 1 + garch(1, 0), data = c(intel_ts$at), trace = FALSE)
mod_arch1 %>% summary()
- 序列图
sd_res <- residuals(mod_arch1, standardize = TRUE)
intel_ts_res2 <- intel_ts %>%
bind_cols(
mod_arch1_resi = sd_res
)
intel_ts_res2 %>%
autoplot(mod_arch1_resi) +
labs(title = &#34;标准化残差序列图&#34;)
- 和 ACF 图
可以看到 的 ACF 除了在滞后 12 和 21 较为突出以外已经没有了低阶的波动率相关。
intel_ts_res2 %>%
ACF(sd_res) %>% autoplot()
intel_ts_res2 %>%
ACF(sd_res^2, lag_max = 36) %>%
autoplot()
- PACF 图
可以看到仅在高阶的滞后11、滞后21还较高。 作为低阶模型, ARCH(1)作为波动率方程已经比较适合
intel_ts_res2 %>%
PACF(sd_res^2, lag_max = 36) %>%
autoplot()
mod_arch1_vol <- volatility(mod_arch1)
mod_arch1_vol %>% head()
#> [1] 0.1306700 0.1051708 0.1455081 0.1099812 0.1132171 0.1299140
mod_arch1_pre <- predict(mod_arch1, n.head = 12)
mod_arch1_pre
#> meanForecast meanError standardDeviation
#> 1 -1.078952e-17 0.1088896 0.1088896
#> 2 -1.078952e-17 0.1244838 0.1244838
#> 3 -1.078952e-17 0.1298450 0.1298450
#> 4 -1.078952e-17 0.1317974 0.1317974
#> 5 -1.078952e-17 0.1325215 0.1325215
#> 6 -1.078952e-17 0.1327918 0.1327918
#> 7 -1.078952e-17 0.1328929 0.1328929
#> 8 -1.078952e-17 0.1329308 0.1329308
#> 9 -1.078952e-17 0.1329450 0.1329450
#> 10 -1.078952e-17 0.1329503 0.1329503
GARCH 模型
简介
ARCH 模型用来描述波动率能得到很好的效果,但实际建模时可能需要较高的阶数,GARCH 将建模简化。
GARCH 模型由 Tim Bollerslev 1986 年提出。对于一个对数收益率序列 , 令
为其新息序列,如果 满足
则称 服从 GARCH(m,s) 模型。
其中,
最后一个条件用来保证满足模型的 无条件方差有限且不变, 而条件方差 可以随时间 而变。
案例分析
我们对上面的案例进行 GARCH 建模
- 对标准化残差及其平方的白噪声检验结果都通过。
- AIC 为-1.388 ARCH 模型更好
- 条件分布的正态性检验不通过
- 模型可以写为
mod_garch1 <- garchFit(~ 1 + garch(1, 1), data = intel_ts$at, trace = FALSE)
mod_garch1
#> Title:
#> GARCH Modelling
#> Call:
#> garchFit(formula = ~1 + garch(1, 1), data = intel_ts$at, trace = FALSE)
#> Mean and Variance Equation:
#> data ~ 1 + garch(1, 1)
#> <environment: 0x162ef1368>
#> [data = intel_ts$at]
#> Conditional Distribution:
#> norm
#> Coefficient(s):
#> mu omega alpha1 beta1
#> -1.0790e-17 9.3121e-04 8.4836e-02 8.5326e-01
#> Std. Errors:
#> based on Hessian
#> Error Analysis:
#> Estimate Std. Error t value Pr(>|t|)
#> mu -1.079e-17 5.421e-03 0.000 1.00000
#> omega 9.312e-04 3.948e-04 2.359 0.01833 *
#> alpha1 8.484e-02 2.618e-02 3.241 0.00119 **
#> beta1 8.533e-01 3.973e-02 21.477 < 2e-16 ***
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> Log Likelihood:
#> 312.1701 normalized: 0.7030857
#> Description:
#> Thu Nov 25 10:04:52 2021 by user:
#> Standardised Residuals Tests:
Statistic p-Value
#> Jarque-Bera Test R Chi^2 180.1466 0
#> Shapiro-Wilk Test R W 0.9705797 8.706573e-08
#> Ljung-Box Test R Q(10) 8.087345 0.6203054
#> Ljung-Box Test R Q(15) 15.57436 0.4108897
#> Ljung-Box Test R Q(20) 16.48704 0.6859865
#> Ljung-Box Test R^2 Q(10) 0.8364551 0.9999246
#> Ljung-Box Test R^2 Q(15) 11.14164 0.7424905
#> Ljung-Box Test R^2 Q(20) 12.37327 0.9026296
#> LM Arch Test R TR^2 10.37458 0.5831354
#> Information Criterion Statistics:
#> AIC BIC SIC HQIC
#> -1.388153 -1.351254 -1.388314 -1.373602
mod_garch1_vol <- volatility(mod_garch1)
mod_garch1_vol %>%
as_tibble() %>%
mutate(num = row_number()) %>%
as_tsibble(index = num) %>%
autoplot()
小结
本文介绍了 ARCH 和 GARCH 模型运用。
我们下期见!
参考文献
- Tsay, Ruey S. 2010. Analysis of Financial Time Series. 3rd Ed. John Wiley & Sons, Inc.
- 金融时间序列分析
|
|