Estimating portfolio risk the honest way — a 100-million-sample Monte Carlo run — is accurate but far too slow to sit inside an interactive workflow. This project trains Gaussian-process and neural-network surrogates on that expensive simulation so the same VaR and CVaR numbers come back in milliseconds, with sub-1% error against the full baseline.
problem.txt
Monte Carlo is the ground truth for tail risk, but it doesn't fit a feedback loop — you can't re-run 100M paths every time an analyst nudges a parameter. The question: can a learned model reproduce the simulator's risk numbers closely enough to replace it at interactive speed?
architecture.drawio
Simulate — a 100M-sample Monte Carlo engine produces ground-truth VaR / CVaR over sampled portfolios.
Train — Gaussian-process and neural-network surrogates learn the mapping from portfolio inputs to risk.
Evaluate — surrogate estimates are scored against the held-out simulation baseline.
Serve — a single forward pass replaces the simulation at query time.
challenges.log
Sampling portfolios densely enough to cover the tail behaviour that drives VaR.
Trading off GP calibration (great uncertainty, slower) against NN speed.
Validating that 'within 1%' holds across portfolios, not just on average.
results.json
error
< 1% vs 100M-sample MC
surrogates
Gaussian process + neural net
query cost
one forward pass
lessons-learned.md
A surrogate is only as good as the regions of input space you sampled — tails need oversampling.
Two model families answer different questions: GPs for trust, NNs for throughput.
Speed unlocks a different product: risk becomes interactive instead of a nightly batch.
future-work.md
Active learning to sample where the surrogate is least certain.
Extend to path-dependent and exotic instruments.
Confidence-aware fallback to full MC when the surrogate is unsure.