Skip to main content
Each forecast run is one model output for a single market product. Results live in Postgres, not in object storage.

Horizons

DA, IDA1, IDA2

96 points at 15-minute resolution.

IDA3

48 points starting 12:00 UTC.
Values are in EUR/MWh. Points may include p10 and p90 when the model provides them.

Inputs

The price-forecast worker reads cleaned data from Postgres:
  • Own-market prices
  • Weather history and forecast for Madrid, Burgos, and South Spain
  • For IDA markets: preceding-market real prices and forecasts
  • Previous own-market forecast runs
Models are loaded from MLflow (spain-da, spain-ida1, spain-ida2, spain-ida3).

When a run happens

1

Weather lands

The weather collector writes a complete hourly manifest.
2

Cleaning finishes

Weather cleaning upserts clean history and forecast tables.
3

Forecasts are written

One job runs per product: da, ida1, ida2, ida3.
A new metadata row is a published run. If the series moves enough versus the previous run, the platform can also emit forecast.changed.

Accuracy

The metric worker scores unscored forecasts against realized OMIE prices: MAE, WAPE, Pearson correlation, and a trend metric. Dashboard endpoints expose these under /api/v1/dashboard.