Skip to content

Repository files navigation

VIX Volatility Forecasting

A time-series project comparing a statistical ARIMA model with an XGBoost challenger for short-horizon market-volatility monitoring — testing whether the more flexible model actually improves the forecast enough to justify its added complexity.

The business question

Can daily Cboe Volatility Index (VIX) values provide a useful external market-stress baseline for short-term financial risk monitoring?

The forecast is designed as a supporting signal for liquidity, portfolio-risk, capital-planning, and operational reviews — not as a trading system or a substitute for an institution's internal risk measures.

Approach

flowchart LR
    A[8,685 daily VIX observations] --> B[Hold out final 10 days]
    B --> C[Log transform + ADF stationarity test]
    C --> D["ARIMA via ACF/PACF/EACF/BIC"]
    C --> E[Recursive XGBoost: lag & rolling features]
    D --> F[Compare on holdout RMSE]
    E --> F
Loading
  • Validated and chronologically ordered 8,685 daily VIX observations from January 1990 through June 2024.
  • Reserved the final 10 trading days as an untouched test set.
  • Applied a log transformation and tested stationarity using the augmented Dickey-Fuller test.
  • Used ACF, PACF, EACF, residual diagnostics, and BIC to select an ARIMA model.
  • Built a recursive XGBoost forecast with lag, rolling-window, and calendar features.
  • Compared holdout accuracy, fit time, interpretability, and prediction-interval availability.

Results

Model Test RMSE Interpretation
ARIMA(2,0,1) 0.4165 Lower error, fast fit, built-in prediction intervals
XGBoost 0.4615 Useful nonlinear challenger, but no direct prediction intervals

ARIMA reduced holdout RMSE by approximately 9.8% relative to XGBoost on this 10-day test window. Given the small holdout, the result should be treated as a project-specific comparison rather than a universal claim about model superiority.

Repository structure

.
├── data/
│   └── vix_daily.csv
├── vix_volatility_forecasting.Rmd
└── vix_volatility_forecasting_report.pdf

Reproduce the analysis

Install the required R packages:

install.packages(c(
  "TSA", "ggplot2", "dplyr", "forecast",
  "tseries", "xgboost", "rmarkdown", "knitr"
))

Then render from the repository root:

rmarkdown::render("vix_volatility_forecasting.Rmd")

Data

The project uses public daily VIX observations. Reference sources:

Limitations

  • The final comparison uses only 10 held-out trading days.
  • VIX is an external market indicator and does not capture institution-specific exposure.
  • Forecast performance can change across market regimes and should be monitored over time.
  • This project is for analytical demonstration and is not financial advice.

About

ARIMA and XGBoost comparison for short-horizon VIX risk monitoring

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors