API Notes for Python Packages
arch
Notation for GARCH(1, 1) \begin{align*} r_t &= \mu + \epsilon_t \\ \epsilon_t &= \sigma_t e_t \\ \sigma^2_t &= \omega + \alpha \epsilon_{t-1}^2 + \beta \sigma^2_{t-1} \end{align*}
Simulation
arch.univariate.GARCH(p=1, o=0, q=1, power=2.0)
\(\lambda\) 就是
power,預設值 2 \begin{align*} \sigma_{t}^{\lambda} = \omega + \sum_{i=1}^{p}\alpha_{i}\left|\epsilon_{t-i}\right|^{\lambda} + \sum_{j=1}^{o}\gamma_{j}\left|\epsilon_{t-j}\right|^{\lambda} I\left[\epsilon_{t-j}<0\right]+\sum_{k=1}^{q}\beta_{k}\sigma_{t-k}^{\lambda} \end{align*}
GARCH.simulate(parameters, nobs, rng, burn=500, initial_value=None)
根據 source,
parameters要輸入 [\(\omega, \alpha_{1}, \alpha_{2}, \ldots, \alpha_{p}, \gamma_{1}, \gamma_{2}, \ldots, \gamma_{o}, \beta_{1}, \beta_{2}, \ldots, \beta_{q}\)]rng是一個輸入 size 輸出隨機數列的函數,輸出用作 innovation \(\{e_t\}\)輸出的兩個數列分別是 \(\{\epsilon_t\}\) 和 \(\{\sigma^2_t\}\)
ARCH(1) Simulation:
[8]:
from arch.univariate import GARCH
from scipy.stats import norm, t
from pandas import Series
import numpy as np
import numpy.random
numpy.random.seed(0)
model = GARCH(1, 0, 0)
y, variance = model.simulate([1, 0.5], 100, rng=lambda size: norm.rvs(size=size))
Series(y).plot(style='.-')
pass