Metric

What is forecast accuracy, and how do you measure it in Metabase?

Forecast accuracy measures how close your forecast came to what actually closed. It's the metric that tells you whether to trust the number leadership commits to the board — and the one most teams can't compute because they never saved the forecast. Measure it in Metabase from CRM and revenue-intelligence data synced into a database (Salesforce, HubSpot, Gong, Salesloft/Clari).

TL;DR — Forecast accuracy = 1 − |actual − forecast| ÷ forecast. You must snapshot the forecast at a fixed point (e.g. start of quarter); you can't reconstruct it from a live pipeline. Track bias, not just error.

How is forecast accuracy defined?

There are a few common formulations — pick one and hold it:

  • Accuracy = 1 − |actual − forecast| ÷ forecast — the symmetric, headline number. 100% means a perfect call.
  • Variance = actual − forecast — the signed miss, which reveals direction (over vs. under).
  • Attainment = actual ÷ forecast — a ratio some teams prefer for quota-style reporting.

Report accuracy for the headline and bias (signed variance) for diagnosis — a team that's accurate on average but always over-forecasts has a real problem the accuracy number hides.

Why you need forecast snapshots

This is the part teams miss. A live CRM only tells you the pipeline right now. To measure accuracy you need the forecast as it stood at the commitment point — start of quarter, or each week. Capture a periodic snapshot of forecast amount (and stage/category) so you can compare it to what actually closed.

  • Start-of-period snapshot answers "how good was the initial call?"
  • Weekly snapshots answer "how does the forecast converge as the quarter progresses?"

What data does forecast accuracy need?

  • A forecast snapshot table with period, snapshot date, and forecast amount (ideally by category: commit, best case, pipeline).
  • Actual closed-won amounts per period from the deals table.
  • A consistent period definition (fiscal quarter, month) across both.
  • Segmentation columns: team, region, and forecast category.

SQL patterns

Forecast accuracy by quarter (start-of-period)PostgreSQL
-- Forecast accuracy by quarter: forecast vs. actual closed-won
SELECT
  f.period,
  f.forecast_amount,
  a.actual_amount,
  ROUND(
    100.0 * (1 - ABS(a.actual_amount - f.forecast_amount)
      / NULLIF(f.forecast_amount, 0)),
    1
  ) AS accuracy_pct
FROM modeled_forecast_snapshots f
JOIN (
  SELECT period, SUM(amount) AS actual_amount
  FROM modeled_deals
  WHERE is_won
  GROUP BY period
) a ON a.period = f.period
WHERE f.snapshot_type = 'start_of_period'
ORDER BY f.period;
Forecast bias (direction of the miss)PostgreSQL
-- Forecast bias: are we consistently over- or under-forecasting?
SELECT
  f.period,
  f.forecast_amount,
  a.actual_amount,
  a.actual_amount - f.forecast_amount AS variance,
  CASE
    WHEN a.actual_amount >= f.forecast_amount THEN 'under-forecast'
    ELSE 'over-forecast'
  END AS direction
FROM modeled_forecast_snapshots f
JOIN (
  SELECT period, SUM(amount) AS actual_amount
  FROM modeled_deals
  WHERE is_won
  GROUP BY period
) a ON a.period = f.period
ORDER BY f.period;

Pitfalls

Trying to compute it from a live pipeline.→ Without a saved forecast snapshot, there's nothing to compare actuals against. Start snapshotting now — you can't backfill it.
Reporting accuracy without bias.→ A team can average 95% accuracy while always over-forecasting. The signed variance reveals the pattern.
Mixing forecast categories.→ Commit, best case, and pipeline are different commitments. Compare each to actuals separately.
Shifting the period definition.→ If fiscal periods or close-date rules change, historical accuracy stops being comparable.

Where this metric applies

Analytics

Metrics

FAQ

Why can't I compute forecast accuracy from my CRM today?
A live CRM only shows the current pipeline. Accuracy compares actuals to the forecast as it stood at the commitment point, so you need periodic forecast snapshots saved into a table. You can't reconstruct a past forecast after the fact.
Should I track error or bias?
Both. Accuracy (1 − |actual − forecast| ÷ forecast) is the headline; signed variance shows whether you consistently over- or under-forecast, which is what you actually coach against.
How often should I snapshot the forecast?
At minimum, start of each period. Weekly snapshots let you see how the forecast converges toward actuals as the quarter progresses.