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.

Stop planning blind.

Bring one CSV and get a badged, explainable plan in ten minutes. Starter is free forever.