Charts / CH-TIM-08
CH-TIM-08 . family TIM

FAN

actual line continuing into declared forecast bands. Needs: actuals + forecast median with declared p25-p75 and p10-p90 bands.

trenduncertainty

DL-01 AGRAW
The forecast reaches 70 by October, inside a 22-point spread 0 20 40 60 80 100% Jan Feb Mar Apr May Jun Jul Aug Sep Oct FORECAST 70 median Source: sample dataset v1; quantile forecast, monthly refit

Use when

  • forecasts that honestly show their spread
  • committing to a range instead of a false point estimate

Do not use when

  • fabricating bands the model never produced
  • showing only the median (that is CH-TIM-01 with a dashed tail)

See instead

Alternatives

  • CH-TIM-02 (progress vs plan, no uncertainty)
  • CH-DST-10 (uncertainty on categories)

Rules

  • bands are DECLARED quantiles; the source names the method
  • median dashed: it is an estimate, not a measurement
  • the forecast region is visibly divided from actuals
  • y starts at zero

Never do this

  • bands without a named method
  • solid median implying certainty
  • hiding the actual/forecast boundary

QA before delivering

  • method in the source line
  • band90 contains band50 contains median
  • median dashed
  • unit once
  • source present

Data shape

titleaction title naming the range
sourcemust state the forecast method
uniton the top tick
xall period labels, actual + forecast
splitcount of actual periods
actualvalues for the first split periods
medianforecast medians
band50[[lo,hi]] p25-p75
band90[[lo,hi]] p10-p90
Sample data (golden)
{
  "title": "The forecast reaches 70 by October, inside a 22-point spread",
  "eyebrow": "PROGRESS FORECAST",
  "source": "Source: sample dataset v1; quantile forecast, monthly refit",
  "unit": "%",
  "x": [
    "Jan",
    "Feb",
    "Mar",
    "Apr",
    "May",
    "Jun",
    "Jul",
    "Aug",
    "Sep",
    "Oct"
  ],
  "split": 6,
  "actual": [
    40,
    44,
    47,
    52,
    55,
    58
  ],
  "median": [
    61,
    64,
    67,
    70
  ],
  "band50": [
    [
      59,
      63
    ],
    [
      61,
      67
    ],
    [
      63,
      71
    ],
    [
      65,
      75
    ]
  ],
  "band90": [
    [
      56,
      66
    ],
    [
      57,
      71
    ],
    [
      58,
      76
    ],
    [
      59,
      81
    ]
  ]
}