How the Upswitch Index measures itself — backtest of every published vintage against the approved observation set, with MAE, MAPE, and blended-band hit-rate per scope.
Every published vintage is backtested against the approved observation set held in `peer_observations`. The metrics below summarise how close the published P50 sat to the realised observation, and how often the realised observation fell inside the published P25–P75 blended percentile band (a conjugate-style shrinkage estimator — see methodology). Methodology is locked: trim outliers with MAD, freeze the dataset to the active vintage, time-split train/test, and compute scope-level summaries — never tune the model on the test set.
When a backtest run exists, this page renders MAE, MAPE, and blended-band hit-rate against the approved observation set. The active vintage is honestly published with blended percentile bands per row, but the next backtest run is the trust artifact this page will surface.
Operators: schedule the weekly Delphi backtest flow or apply migration 019+ so `backtest_runs` can be populated.
MAE and MAPE are computed against the approved observation set in `peer_observations` for the active scope. Hit-rate uses the published P25–P75 blended percentile band as the inclusion test. Outliers are trimmed by MAD before the regression is fit; we never use the test observations to tune the model. Scope keys mirror the index scope hierarchy (BENELUX, EUROPE, GLOBAL).
Read the full methodology →The same data is available as JSON. Pass `?scope=BENELUX` (or another scope key) to pin the response to a specific scope.
GET /api/benchmarks/v1/accuracy →Upswitch.app
This database is the public benchmark layer. Upswitch is the full platform: company-specific valuations, client-ready reports, advisor workflow, and API access for teams. Free accounts work across both.