Research codebase comparing GARCH-family volatility models and Compound Poisson Process (CPP) jump models for VIX tail-risk quantification. The pipeline fits EGARCH/GARCH on daily VIX log changes, identifies shock events, models arrival rates and jump magnitudes, and evaluates VaR/CVaR with regime and out-of-sample checks.
Developed for IEDA4000E - Statistical Modelling for Financial Engineering at the Hong Kong University of Science and Technology (HKUST). Maintained under CttQuantLab.
Not financial advice. This repository is for research and education only. Historical results do not imply future performance.
- GARCH(1,1) and EGARCH(1,1) with automatic GED/t/normal selection via PIT diagnostics
- Shock identification by quantile and volatility-relative thresholds
- Homogeneous and Hawkes arrival models plus Compound Poisson jump-risk estimation
- Regime analysis across pre-COVID, COVID, post-COVID, and recent windows
- Out-of-sample CPP forecast evaluation (2022-2025 holdout)
- Reproducible pipeline (
runall.py), notebooks, tests, report, and slides
| Model / metric | Value | Notes |
|---|---|---|
| Best volatility fit | EGARCH(1,1), GED | AIC 27,395 vs GARCH 27,531 |
| Volatility half-life | 10.2 days | EGARCH persistence 0.934 |
| CPP arrival rate | 12.64 / year | Full-sample Poisson rate |
| CPP VaR (95%) | 4.24 | Annual cumulative shock impact |
| CPP CVaR (95%) | 5.01 | Expected shortfall |
| OOS forecast error | -17.8% | 2022-2025; VaR not exceeded |
Full tables and discussion: docs/SUMMARY.md, docs/report/report.pdf.
.
├── docs/
│ ├── SUMMARY.md # Results digest
│ ├── report/ # Academic report (LaTeX + PDF)
│ └── slides/ # Beamer presentation (LaTeX + PDF)
├── figures/ # Published plots by category
├── notebooks/ # Step-by-step analysis notebooks
├── src/ # Core library modules
├── tests/ # Pytest suite
├── runall.py # End-to-end pipeline driver
├── requirements.txt
├── pyproject.toml
└── LICENSE
git clone https://github.com/CttQuantLab/Quantifying-VIX-Tail-Risk.git
cd Quantifying-VIX-Tail-Risk
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -U pip
pip install -r requirements.txt
pip install -e .
pytest -qDownload VIX data (Yahoo Finance), fit models, and regenerate figures:
python runall.pyOptional flags:
python runall.py --force-download # refresh cached VIX history
python runall.py --skip-plots # models only, no figure exportOutputs land under figures/ (grouped by topic) and cached data under data/raw/.
- Source: Yahoo Finance
^VIXdaily closes - Window: 2010-01-05 to latest available (4,100+ business days in the published run)
- Preprocessing: business-day alignment, forward-fill, 0.1% winsorization, log-level and log-change features
- Train/test split: 75% train (2010-2021), 25% test (2022-2025) for forecast evaluation
Volatility. GARCH and EGARCH on daily log VIX changes; distribution chosen by PIT Kolmogorov-Smirnov fit.
Shocks. Threshold exceedances on standardized returns; inter-arrival times fit to Poisson and Hawkes processes.
Jump risk. Compound Poisson accumulation (S(T)=\sum_{i=1}^{N(T)} J_i) with Pareto jump sizes; Monte Carlo paths for VaR/CVaR.
See the report for full equations, parameter tables, and diagnostic figures.
| Document | Description |
|---|---|
docs/SUMMARY.md |
Condensed results and regime tables |
docs/report/report.pdf |
Full academic write-up |
docs/slides/slides.pdf |
Presentation deck |
figures/ |
Standalone result figures |
pytest -q
pip install -e ".[dev]"Random seeds default to 42 in src/config.py.
If this repository is useful for your work, please cite the course project report and link this repository:
@misc{chong2025vixtailrisk,
author = {Chandrean, Vittorio Prana and Chong, Tin Tak and Choi, Man Hou},
title = {Quantifying VIX Tail Risk: Volatility Clustering and Jump Processes},
year = {2025},
howpublished = {\url{https://github.com/CttQuantLab/Quantifying-VIX-Tail-Risk}},
note = {IEDA4000E course project, HKUST}
}See also CITATION.cff for machine-readable metadata.
- Bollerslev, T. (1986). Generalized Autoregressive Conditional Heteroskedasticity. Journal of Econometrics.
- Nelson, D. B. (1991). Conditional Heteroskedasticity in Asset Returns. Econometrica.
- Cont, R., and Tankov, P. (2004). Financial Modelling with Jump Processes. Chapman and Hall/CRC.
- McNeil, A. J., Frey, R., and Embrechts, P. (2015). Quantitative Risk Management. Princeton University Press.
MIT License. See LICENSE.
- Course: IEDA4000E - Statistical Modelling for Financial Engineering, HKUST
- Authors: Vittorio Prana CHANDREAN, CHONG Tin Tak, CHOI Man Hou
- Core stack: arch, statsmodels, pandas, scipy, matplotlib, yfinance