Beta — Data under validation. Values may contain errors.

ED.CAPTURE.RANGE

Capture price (EUR/MWh) or capture rate (%) time series by technology.

Capture price

Signature

ED.CAPTURE.RANGE([tech], [start], [end], [agg], [unit], [zone], [headers], [noDate], [method], [tz])

Description

Capture price time series. Pair with ED.GEN.RANGE (production volumes) and ED.OMIE.RANGE (spot reference) on the same dates and agg to build a complete revenue picture.

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.

With unit="pct" the spill returns the **capture rate** (capture / baseload × 100, %) gen-weighted in each bucket — the AFRY/EMBER/Aurora number.

**Granularity floor:** the underlying capture_daily series is daily by construction — there is no hourly capture price. Aggregations finer than daily (agg=0/RAW, "5min", "15min", "30min", or agg=1/H) are silently promoted to daily rather than rejected.

Parameters

NameTypeDefaultDescription
tech1-6 | string1 (solar_pv)Tech code or name (see table below). Capture is only computed for the 6 main techs.
startdateStart. Defaults: omit end for today (Madrid, with a small overnight cutoff), omit start for 30 days before end.
enddateEnd. Omit for today.
agg2-7 | string2 (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. Sub-daily aggregations (0/RAW, 5min, 15min, 30min, 1/H) are accepted but silently promoted to daily — the metric has no sub-daily resolution.
unit"" | "pct""" (EUR/MWh)Output unit. Default returns capture price in EUR/MWh per bucket. "pct" returns the capture rate (capture / baseload × 100, %).
zone"ES" | "PT""ES"MIBEL zone.
headers0 | 10Set 1 for header row.
noDate0 | 10Set 1 to omit the period column.
method0 | 10 (realized)0=realized, 1=PBF (ES only).
tz0 | 1 | 2"madrid"Accepted for parity with the other range functions, but **no-op here**: capture_daily is computed once per Madrid civil day, so the period buckets are the same regardless of tz.

Valid values for tech

CodeEnglish aliasDescription
1solar_pv, solar, pvSolar PV (uses gen_solar_pv as production weight).
2wind, eolicaOnshore wind.
3nuclearNuclear.
4hydro, hidraulicaReservoir + run-of-river hydro.
5combined_cycle, ccgt, gasCombined-cycle gas (CCGT).
6coal, carbonCoal-fired thermal.

The add-in accepts either the canonical Spanish code or the English alias — both are equivalent.

Returns

Spill array — [period, value] rows. Value is EUR/MWh by default, or % when unit="pct".

Examples

=ED.CAPTURE.RANGE(2, "2025-01-01",, 6)Wind annual capture price
=ED.CAPTURE.RANGE(1, "2025-01-01", "2025-12-31", 3, "pct")Solar monthly capture RATE (%) — the AFRY/EMBER series
=ED.CAPTURE.RANGE(1, "2025-01-01", "2025-12-31", 3, , "ES", 1)Solar monthly EUR/MWh with headers
=ED.CAPTURE.RANGE("solar", "2024-01-01",, 3, , , 1, 0, 1)Solar monthly PBF (ex-ante), EUR/MWh, with headers

Notes

  • **BREAKING in v8.0.0 (manifest 8.0.0.0)**: the unit parameter was inserted between agg and zone. Calls that passed zone/headers/noDate/method/tz positionally need an empty slot for unit. Example: v7 =ED.CAPTURE.RANGE(1, A1, A2, 3, "ES", 1, 0, 1) (method=PBF) becomes v8 =ED.CAPTURE.RANGE(1, A1, A2, 3, , "ES", 1, 0, 1). Calls that only passed the first four args are unaffected.
  • Capture rate (unit="pct") per bucket is gen-weighted: SUM(capture × gen) / SUM(baseload × gen) × 100 — equivalent to the AFRY/EMBER/Aurora definition.
  • Granularity floor is daily — sub-daily agg values are promoted, not rejected. If you need hourly EUR/MWh weighted prices, build them yourself via ED.OMIE.RANGE × ED.GEN.RANGE on hourly buckets.
  • tz is a no-op for the same reason: the daily bucket is identical under Madrid / CET / UTC interpretation.

Related functions