Renewal Forecast Accuracy
Renewal Forecast Accuracy: How closely the forecast renewal value matched the value actually renewed, for contracts ending in the period.
Formula
Forecast Accuracy = 1 - |Forecasted renewals - Actual renewals| / Actual renewals Computable definition
The canonical formula in the GASP formula grammar. The MCP server compiles it to SQL over the datasets listed below.
1 - abs(sum(field.forecast_renewal_amount where in_period(field.contract_end)) - sum(field.renewal_amount where in_period(field.contract_end) and field.renewed = true)) / sum(field.renewal_amount where in_period(field.contract_end) and field.renewed = true) Unit: percent (the formula yields an unscaled ratio)
Data requirements
Grain: Monthly aggregate · Frequency: Monthly · Aggregation: aggregate (month) · Staged: no · Main source: Billing.
| Field | Dataset | Type |
|---|---|---|
contract_end | subscription | date |
forecast_renewal_amount | subscription | decimal |
renewal_amount | subscription | decimal |
renewed | subscription | boolean |
snapshot_date | subscription | date |
Example SQL (Postgres)
SELECT (1 - (CAST(ABS(((SELECT COALESCE(SUM(forecast_renewal_amount), 0) FROM subscription WHERE snapshot_date = :period_end AND (contract_end >= :period_start AND contract_end <= :period_end)) - (SELECT COALESCE(SUM(renewal_amount), 0) FROM subscription WHERE snapshot_date = :period_end AND ((contract_end >= :period_start AND contract_end <= :period_end) AND renewed = TRUE)))) AS DOUBLE PRECISION) / NULLIF((SELECT COALESCE(SUM(renewal_amount), 0) FROM subscription WHERE snapshot_date = :period_end AND ((contract_end >= :period_start AND contract_end <= :period_end) AND renewed = TRUE)), 0))) AS renewal_forecast_accuracy From an agent: with the GASP MCP server, call
lookup_metric({ "name": "Renewal Forecast Accuracy" }) or generate_query({ "metric": "Renewal Forecast Accuracy", "adapter": "<your adapter JSON>" }).
What It Tells You
How far revenue planning can rely on the renewal forecast.