Back to evidence library

05 / Independent quantitative engineering · 2026

Tested public repositorydata sciencequant

Financial risk time-series laboratory

Rolling volatility and VaR forecasts built without looking into the future.

The rebuilt project makes the temporal contract executable: every estimate at time t uses only prior observations, horizon variance is explicit, and VaR exceptions are summarized with a finite Kupiec likelihood-ratio statistic.

Time Series project visual

Evidence register

4/4

tests

Core numerical and data-contract checks

t-1

information set

Strict no-look-ahead rolling estimates

1

backtest

Kupiec unconditional coverage

01 / Problem

Risk estimates can look precise while leaking future data, mishandling horizon variance or failing silently at zero and full exception counts.

02 / Approach

Validated prices become returns, rolling estimators produce volatility and VaR from past-only windows, and exceptions feed an explicitly guarded coverage test and report.

03 / Outcome

The repository provides a synthetic end-to-end demo, data provenance tooling, tested numerical functions, a small API and a reproducible report path.

How the evidence is produced.

Rebuilt the analysis as a tested Python risk pipeline covering provenance, temporal validation, numerical safeguards, reporting and serving.

  1. 01Validated prices → timestamped returns
  2. 02Past-only rolling windows → volatility and VaR
  3. 03Observed returns → exception sequence
  4. 04Coverage backtest → report and API

Validation scope

Four tests cover data validity and numerical edge cases. Rolling forecasts enforce past-only information, and Kupiec's statistic stays finite at boundary exception counts.

Known limitation

Coverage frequency alone does not test independence or tail severity. The project has no trading policy, liquidity model, transaction costs, stress programme or live monitoring.

What is inspectable

  • The forecasting loop makes the information boundary explicit in code.
  • Horizon variance and GJR persistence are calculated with validated parameters.
  • Synthetic data makes the public execution path independent of an undocumented dataset.

Next proof to add

  1. 01Add conditional-coverage and tail-loss backtests with confidence intervals.
  2. 02Benchmark historical, parametric and simulation-based VaR on governed data.
  3. 03Add drift monitoring and a clearly defined downstream capital or limit rule.

Main stack

PythonGARCHValue-at-RiskBacktestingFastAPICI