Forecast data explained
A forecast contains values for delivery intervals. Each value is identified by its time, series and output.
Read one value
This illustrative row is a median price forecast for one series:
{
"validTime": "2026-07-26T22:00:00.000Z",
"seriesKey": "signed",
"outputKey": "p50",
"value": 68.4
}
| Field | Meaning |
|---|---|
validTime | Start of the delivery interval, as an RFC 3339 timestamp |
seriesKey | The series being forecast, such as positive, negative or signed; use the catalog's key and label |
outputKey | The point, quantile or probability output; read its type and unit in the catalog |
value | The numeric prediction in that output's unit |
For a price output measured in €/MWh, the example predicts a median of 68.4 €/MWh at that interval. A positive or negative series identifies a direction; it does not by itself describe the sign allowed for its numeric values.
Use (validTime, seriesKey, outputKey) when joining or pivoting data. Joining only on time mixes series and quantiles. Two series with three outputs produce six rows per interval.
Interpret quantiles
| Output | Interpretation for a calibrated forecast |
|---|---|
p10 | The observed value falls at or below this prediction about 10% of the time |
p50 | The median: about half of observed values fall below it |
p90 | The observed value falls at or below this prediction about 90% of the time |
p10 to p90 represents a central 80% prediction interval. p50 is a median, not necessarily a mean. The available outputs depend on the selected product; do not assume every forecast contains these three quantiles.
Interpret probabilities
A probability output uses values from 0 to 1: 0.25 means a 25% probability of the product's event, such as a negative day-ahead price. It is not a price or a quantile. Read the event definition and output bounds from the selected product.
Delivery time and availability time
For customers, validTime is when delivery begins and releasedAt is when the forecast became available. Historical queries use a fixed asOf or a calculated cutoffAt. A forecast published at 11:45 cannot inform an 11:30 decision, even if it was generated earlier.
For providers, generatedAt is when you produced the predictions and receivedAt is when Telescope accepted them. Submission deadlines and historical visibility use receipt time, so backdating generatedAt does not change eligibility.
See historical queries or submission scheduling for your workflow.
Timestamp formats
| Field or context | Format | Example |
|---|---|---|
deliveryDay, delivery date range, current start | Local date in the product's IANA time zone | 2026-10-25 |
| Request timestamps | RFC 3339 with seconds and Z or a numeric offset | 2026-10-25T00:00:00Z |
| Response timestamps | RFC 3339 in UTC | 2026-10-25T00:00:00.000Z |
Use datetime.fromisoformat(value.replace("Z", "+00:00")) in Python or new Date(value) in JavaScript.
Delivery days and daylight saving
deliveryDay belongs to the product's time zone, not necessarily UTC or your computer's time zone. Construct local midnight boundaries first, then convert to UTC. A local day is not always 24 hours.
| Resolution | Ordinary local day | Spring clock change | Autumn clock change |
|---|---|---|---|
PT15M | 96 intervals | 92 intervals | 100 intervals |
PT1H | 24 intervals | 23 intervals | 25 intervals |
PT4H | Six local block starts | Six local block starts | Six local block starts |
The counts above describe the one-hour clock changes used by the documented European markets. PT4H starts remain at local 00:00, 04:00, 08:00, 12:00, 16:00 and 20:00; their elapsed durations across a clock change can differ. Rolling coverage uses elapsed hours and can span partial local days.
Units belong to outputs
Use the unit on the corresponding catalog output. Do not infer units from a product name, resolution or the magnitude of a value.
| Target | API unit | Interpretation |
|---|---|---|
| Energy price | EUR_MWH | Euros per MWh of energy |
| Spanish mFRR activations | MWH | Signed energy in MWh per interval; do not convert to MW by assumption |
| German FCR, aFRR and mFRR capacity prices | EUR_MWH | €/MW/h of reserved capacity; values are hourly rates, not four-hour totals |
| Power forecasts, including German reserve activations | MW | Power in megawatts for the interval |
| Event probability | PROBABILITY | A fraction from 0 to 1; 0.25 means 25% |
Read the current customer catalog or producer definition for the target, outputs and units. Preserve permitted negative values.
Missing data is not zero
For relative historical responses, available: true means at least one complete interval exists. Check coverageRatio or availablePoints before assuming a complete day. Public previews use null for missing forecasts or actuals. A missing interval or metric does not represent a forecast of zero.
Continue with First forecast, Historical data or First submission.