> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nexenergie.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# How Nexenergie Electricity Price Forecast Models Work

> Learn how Nexenergie uses machine learning models trained on weather, market, and power-system data to produce hourly electricity price forecasts.

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

## Horizons

<CardGroup cols={2}>
  <Card title="DA, IDA1, IDA2" icon="clock">
    96 points at 15-minute resolution.
  </Card>

  <Card title="IDA3" icon="clock">
    48 points starting 12:00 UTC.
  </Card>
</CardGroup>

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

<Steps>
  <Step title="Weather lands">
    The weather collector writes a complete hourly manifest.
  </Step>

  <Step title="Cleaning finishes">
    Weather cleaning upserts clean history and forecast tables.
  </Step>

  <Step title="Forecasts are written">
    One job runs per product: `da`, `ida1`, `ida2`, `ida3`.
  </Step>
</Steps>

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`.
