Why our forecast engine refuses to forecast — and yours should too
A forecasting engine that never says "I don't know" is not confident. It is lying with extra steps. Here is why refusal is a feature we built on purpose.
Most forecasting tools will return a number for any SKU you throw at them. New product with three weeks of history? Here's a forecast. Spiky, intermittent spare part? Here's a smooth seasonal curve that has never once matched reality. The number looks authoritative. It is noise wearing a suit.
Two places we refuse
Below nine months of history. There isn't enough signal to separate trend, season and noise. Rather than fit a curve to what is essentially randomness, we show a designed refusal screen — and, if it's a launch, we ask you to declare an analogue predecessor so we can borrow a curve honestly, badged as estimated.
When nothing beats naïve. Every forecast goes through a tournament of 7–13 models on a holdout slice of your own history. If none of them beats a naïve baseline, we don't ship the "best loser." We tell you the naïve number is your best available estimate, and why.
Why publish it
Because a refusal is information. It tells the planner exactly where judgment is required instead of hiding the weak spots inside a confident-looking chart. Our refusals are counted on our public accuracy page — the same page that shows where our forecasts were wrong.
The uncomfortable truth: the honesty is the moat. Anyone can compute a forecast. Very few tools will look you in the eye and say "not this one, not yet."
Every number in SangamIQ shows its work — see our live accuracy page, or start free and put your own CSV through it in ten minutes.