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)

    • 根據 sourceparameters 要輸入 [\(\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
../_images/ds_api_1_0.png