Skip to main content

Tutorial · forecast band

p10 / p50 / p90 is a map of uncertainty, not a price promise.

The forecast band shows the range where the model expects most realized prices and signals honestly when evidence gets weaker. Alvo does not submit orders and does not turn p90 into a price guarantee.

p10 / p50 / p90conformal calibrationGW gate

Tutorial · forecast band

What the band means

p50

The median price scenario read by the trading plan. It is not a clearing guarantee.

p10 / p90

The lower and upper bounds of an approximately 80% uncertainty interval.

GW gate

The Giacomini-White test must support that the model really beats the naive baseline.

Calibration

Coverage, PIT/Kupiec/Winkler and pinball show whether the band stays honest.

How to read the band

1. Start with freshness

Do not use the signal when the source is stale, unavailable or the sample is too short.

2. Read p50 as the center

p50 is the median scenario, useful for planning, but not a guaranteed market outcome.

3. Inspect p10-p90 width

A wide band means more uncertainty; a narrow band without calibration is not proof.

4. Check GW and calibration

When significance or coverage is weak, use the band as a warning layer, not as a green light.

What not to claim

No guarantee

p90 is not a maximum price, and p10 is not a floor. They are uncertainty bounds.

No cherry-pick

Do not show only p50 or the most attractive hour without freshness, coverage and caveats.

No auto-bid

V1 is decision support: the trader owns the order; Alvo supplies data, band and audit trail.

Tutorial · forecast band

Checklist

Morning band read

Minimal sequence before a human decision.

1. Confirm freshness: source is live, not stale.
2. Read p50 first: this is the median scenario, not a promise.
3. Compare p10-p90 width: wide band = more uncertainty.
4. Check GW/calibration: weak significance or poor coverage means hold back.
Fields to inspect

Field names an integration should treat as uncertainty.

forecast.points[hour] = {
  p10: lower uncertainty bound,
  p50: median served forecast,
  p90: upper uncertainty bound
}

forecast.metrics = {
  coverage: share of holdout prices inside p10-p90,
  significance: Giacomini-White gate vs naive baseline
}

Tutorial · forecast band

Forecast band FAQ

Is p90 the maximum price?

No. p90 is the upper edge of an uncertainty interval, not a cap and not a clearing guarantee.

What does GW significance mean?

The Giacomini-White test checks whether the historical model edge over the naive baseline is statistically real, with HAC protection for daily recalibration.

What if coverage is poor?

Treat the band as a warning layer: defer the decision, reduce volume or require manual review.

Want to see the band next to the market?

The workspace shows p10/p50/p90 next to OREE prices, cross-border regime and a deterministic decision brief.

Open workspace