Beta — Data under validation. Values may contain errors.

ED.CURTAIL.RANGE

Renewable curtailment — economic (forecast vs PBF) or technical (PBF vs P48).

Capture price

Signature

ED.CURTAIL.RANGE(tech, type, [start], [end], [agg], [unit], [zone], [headers])

Description

Renewable curtailment time series. Two methodologies:

- **Economic curtailment** (type="economic"): forecast − Σ PBF. The fraction of forecast renewable production that did not clear the day-ahead market because bids were rejected at low/negative prices. Source: ESIOS forecast 10358 (combined wind+solar) minus the sum of OMIE PBF programs. Currently only tech="vre" (combined) is supported because the upstream forecast is bundled.

- **Technical curtailment** (type="technical", default): PBF − P48 (downward redispatch). The MWh that cleared MD but were curtailed by the operator's RRTT (Restricciones Técnicas) Phases 1 + 2 to keep the grid stable. Combined Phase 1 + Phase 2 — the source data does not split them.

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.

Parameters

NameTypeDefaultDescription
tech*1-3 | stringTechnology: 1=solar_pv, 2=wind, 3=vre (combined wind+solar). For type="economic" only vre is allowed (forecast is bundled).
type0 | 1 | string1 ("technical")0=economic (forecast − Σ PBF, VRE only), 1=technical (PBF − P48, default).
startdateStart. Defaults: omit end for today (Madrid, with a small overnight cutoff), omit start for 30 days before end.
enddateEnd. Omit for today.
agg1-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. Underlying series are 15-min (P48 / PBF) or hourly (forecast); native is honoured down to 15-min for technical and hourly for economic.
unit"mwh" | "pct""mwh"Output unit. "mwh" returns curtailed MWh per bucket. "pct" returns curtailment as % of the reference series (PBF for technical, forecast for economic).
zone"ES""ES"ES only in v1 (PT not yet wired).
headers0 | 10Set 1 for header row.

* Required.

Valid values for `tech`

CodeEnglish aliasDescription
1solar_pv, solar, pvSolar photovoltaic. Available for type="technical" only.
2wind, eolicaOnshore wind. Available for type="technical" only.
3vre, renewable, wind_solarCombined wind + solar. Required for type="economic" because the upstream ESIOS forecast (10358) is bundled.

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

Returns

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

Examples

=ED.CURTAIL.RANGE("vre", "economic", "2026-01-01", "2026-04-30", 3, "mwh")VRE economic curtailment, monthly MWh
=ED.CURTAIL.RANGE("vre", "economic", "2026-01-01",, 7, "pct")VRE economic curtailment, total % of forecast
=ED.CURTAIL.RANGE(1, "technical", "2026-01-01", "2026-04-30", 7, "pct")Solar technical curtailment, total % of PBF (~17.7%)
=ED.CURTAIL.RANGE("wind", "technical", "2026-01-01",, 3)Wind technical curtailment, monthly MWh (default unit)

Notes

  • **Limitation — economic mode is VRE-only**: the ESIOS forecast indicator (10358) is forecast_renewable_d1, a bundled wind+solar series. Per-tech economic curtailment would need a per-tech forecast which is not published. Calling type="economic" with tech="solar_pv" or "wind" returns 400.
  • **Limitation — technical mode mixes Phase 1 + Phase 2**: PBF − P48 captures all downward redispatch, but the source does not separate Fase 1 (constraints solved at scheduling) from Fase 2 (real-time). They are reported aggregated.
  • **Not implemented in v1**: type="technical_settled" (would use C2 c2_rrtt_energy_down — system aggregate, no tech split) and unit="eur" (cost in EUR via redispatch prices). Both return 400 with a clear message.
  • **Methodology disclaimer**: technical % can disagree with publicly reported figures by several pp depending on the denominator (Σ PBF vs gross gen vs theoretical generation without restrictions) and the phase split assumed. The HANDOFF for the 2026-05-05 sanity-check documents a 17.7% (this function) vs 13% (LinkedIn analyst) divergence traced to denominator choice.

Related functions