Generator
Synthetic Market Data Generator
Generate synthetic price series — GBM, GARCH(1,1), regime-switching, or copula-linked pairs. Download CSV/JSON. Scaffold backtests safely.
Runs in your browser. Nothing you enter is uploaded, and no account or API key is needed.
Generated path
20.6%
GBM, 252 days, realized annualized vol
drift +8%, target vol 20%
1. Pick a model
2. Parameters
3. Preview
Ann. return
+1.78%
Ann. vol
+20.60%
Max DD
-15.86%
Sharpe (ret/vol)
0.09
When this is useful
- Scaffold backtest code without touching proprietary data. Generate a CSV, wire up your pipeline, then swap in real data once the plumbing works.
- Unit-test risk estimators. GARCH with a known σ lets you verify your vol-targeting layer clips correctly.
- Sanity-check drawdown distributions. Run 1,000 seeds of GBM at your target drift/vol, see what Max DD looks like — calibrate your stops against that distribution, not a single historical path.
- Share a reproducible bug report. Seed + parameters → exact same series on any machine.
How to use it
- Pick a model: GBM, GARCH(1,1) volatility clustering, a two-state bull/bear regime switch, or a correlated pair.
- Set the model's parameters: start price, drift and volatility, GARCH ω, α and β, regime drifts, vols and switch probabilities, or the pair's correlation.
- Set the number of days and a seed. The same seed and parameters always reproduce the same path.
- Read the realized annualized volatility, return, max drawdown and Sharpe of the path and preview the chart.
- Download the path as CSV or JSON, or press Generate new path for a new seed. Use it for testing code, never as a trading signal.
Questions people ask
Why generate synthetic data instead of using real?
To test pipeline code and risk estimators on series whose true parameters you know, to stress a strategy on regimes the history does not contain, and to share examples without real positions. Synthetic paths carry no information about real markets.
How realistic is the synthetic data?
Only as realistic as the chosen model. GBM has constant volatility and normal returns, GARCH(1,1) adds volatility clustering, the regime model adds bull and bear phases, and the pair model adds correlation. The tool does not calibrate to your data or report fit metrics; it reports the realized statistics of each generated path.
What model is under the hood?
Four simple generators driven by a seeded random number generator: geometric Brownian motion, GARCH(1,1) on log returns with normal shocks, a two-state Markov switch between two GBM regimes, and two GBMs with correlated normal shocks. There is no skewed-t, jump or copula model.
Can I generate correlated multi-asset data?
Two assets: the pair model takes a correlation ρ between their shocks. Larger correlated universes are not supported.
Is synthetic data appropriate for production trading?
No. Synthetic data is for testing code and stress-testing strategies, not for live signal generation. Signals computed on synthetic series have no real-world predictive content by construction.
Guides, formulas and worked examples
- Guide How to Generate Synthetic Market Data for Testing
- Comparison Block Bootstrap vs IID Bootstrap
- Comparison GBM vs Jump-Diffusion Price Models
- Comparison Simple vs Exponential Moving Average
Related tools
- Generators Trading System Blueprinter
Pick your data source, LLM, broker, storage, risk engine, and logger. Get a Mermaid architecture diagram and a copyable starter file tree — the full stack before you write code.
- Generators SEC Filing Chunk Optimizer
Pick a filing archetype, tune chunk size and overlap, and see chunk count, embedding cost, and structural-boundary warnings across three chunking strategies.
- Generators Quant Interview Question Generator
Curated bank of probability, stats, derivatives, microstructure, and regression questions across easy/medium/hard difficulty. Reproducible by seed. Nothing generated live.
Articles
- 10 min read Synthetic Market Data for Backtests: Beyond GBM
Synthetic market data beyond GBM — when GARCH(1,1), regime-switching, or copula-linked pairs are the right next step. Trade-offs plus a Python template.
- 7 min read Kupiec vs Bootstrap for VaR Validation
30-day VaR backtest: 7 exceptions vs 0.3 expected, Kupiec LR 32.34, p 1.3e-8. Bootstrap agrees but converges slower. Basel III names Kupiec.
- 7 min read Synthetic Data: GARCH vs GBM for Backtesting
GBM Sharpe 1.91 on 504 days is the strategy null. GARCH paths add vol clustering — the regime that breaks vol-sensitive strategies. Run both.
Use it from code
The same calculation as a JavaScript module you can import. It runs where you import it, with no request, key or rate limit.
import { compute } from "https://aifinhub.io/engines/synthetic-market-data-generator.js";