ED.DAYAHEAD.RANGE
Day-ahead spot price time series, any supported European zone, with temporal aggregation.
Signature
ED.DAYAHEAD.RANGE([start], [end], [agg], [zone], [headers], [noDate], [tz])Description
Returns a time series of day-ahead prices over the requested window, aggregated to your chosen granularity, for any supported bidding zone. Output is a spill array — one column for the period, one column for the price (drop the period column with noDate=1 if you already have your own time index).
Use this instead of looping calls to ED.DAYAHEAD. A single formula returning 8760 hourly buckets for an entire year is one HTTP request; the equivalent grid of =ED.DAYAHEAD(...) calls would be 8760 requests and very slow.
Zones: Iberia (ES, PT) sourced from OMIE; central/west (FR, DE, BE, NL, AT, CH), CEE (PL, HU, CZ, SK, SI, HR) and Italy (IT_NORD, IT_CNOR, IT_CSUD, IT_SUD, IT_CALA, IT_SARD, IT_SICI) sourced from ENTSO-E.
Aggregation is controlled by agg: 0=native, 5min/10min/15min, 1=hourly, 2=daily (default), 3=monthly, 4=quarterly, 5=semiannual, 6=annual, 7=total. Pass tz to switch the timezone interpretation: 0/madrid (default, DST-aware), 1/cet (UTC+1 fixed — 8760 hourly buckets/year), or 2/utc. See /docs/concepts for why this matters around the spring/autumn DST transitions.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| start | date | — | Start of the window. Defaults: omit end for today (Madrid, with a small overnight cutoff), omit start for 30 days before end. |
| end | date | — | End of the window. Omit for today. |
| agg | 0-7 | string | 2 (daily) | Aggregation is controlled by agg: 0=native, 5min/10min/15min, 1=hourly, 2=daily (default), 3=monthly, 4=quarterly, 5=semiannual, 6=annual, 7=total. |
| zone | string | "ES" | Bidding zone code. Iberia: "ES", "PT". Central/west: "FR", "DE", "BE", "NL", "AT", "CH". CEE: "PL", "HU", "CZ", "SK", "SI", "HR". Italy: "IT_NORD", "IT_CNOR", "IT_CSUD", "IT_SUD", "IT_CALA", "IT_SARD", "IT_SICI". |
| headers | 0 | 1 | 0 | Set to 1 to include a header row (Period, Price). |
| noDate | 0 | 1 | 0 | Set to 1 to omit the period column from the spill array. |
| tz | 0/"madrid" | 1/"cet" | 2/"utc" | "madrid" | Time zone interpretation. Madrid is DST-aware (24-25h days); cet produces 8760 buckets/year. |
Returns
Spill array — [period, price] rows in EUR/MWh, auto-formatted.
Examples
=ED.DAYAHEAD.RANGE("2025-07-01", "2025-07-01", 0)— ES native 15-min for one day (96 rows)=ED.DAYAHEAD.RANGE("2025-01-01",, 3)— ES monthly average from Jan 2025 to today=ED.DAYAHEAD.RANGE("2026-01-01",, 2, "DE")— Germany daily average YTD=ED.DAYAHEAD.RANGE("2026-01-01",, 2, "IT_NORD")— Italy North daily average YTD=ED.DAYAHEAD.RANGE("2001-01-01",, 6)— ES annual average since OMIE inception=ED.DAYAHEAD.RANGE("2025-01-01",, 1, "ES", 1, 0, "cet")— ES hourly with headers in fixed CET (8760 rows/year)Notes
- Non-OMIE zone coverage depends on backfill state — see ADR-008. Older windows for FR/DE/BE/NL/AT/CH/PL/HU/CZ/SK/SI/HR/IT_* may return fewer rows than expected until the backfill catches up.