PowerTradingLab

Data interface

Files over HTTPS. There is no query interface.

Base address: https://powertradinglab.org/benchmarks/data/

How the files are organised

[PLACEHOLDER — the frozen archive versus the mutable files; naming (zone, one underscore); the three files per series (full, 90 days, latest); passes as-known and as-final; versions per row; how absences appear in the columns.]

A query interface

[PLACEHOLDER — the data is free and complete as files; a query interface means a second machine and uptime somebody has to be responsible for, so it exists if someone funds that work, and then it serves the same numbers just as freely.]

Files

FileBytessha256
index.jsonthe map: vocabulary, definitions, files
zones.jsonper zone: EIC, timezone, currencies, first and last day
NL_forecasts-90d.csv2,195d6afe20e4ce302a29286150ad4a12e157d49a1d69551d044481b79ede8b5211d
NL_forecasts-latest.csv2636e21c0ae57303b989fa35dce2785057558cb29740416c5fa2ea7242fffa28b6d
NL_forecasts.csv2,195d6afe20e4ce302a29286150ad4a12e157d49a1d69551d044481b79ede8b5211d
NL_scores-90d.csv2,4020ec3e9c924c9dcff5a7bd19860a72e0f012ed53c9dd5c3b6dd99359a5c5a9524
NL_scores-latest.csv37076ae5c31595a16d456f594a3d0d39f27ae2f18f0d1e98439a725aa677d5f395c
NL_scores.csv2,4020ec3e9c924c9dcff5a7bd19860a72e0f012ed53c9dd5c3b6dd99359a5c5a9524
RO_forecasts-90d.csv673aadf3f55950456bb2ef78dc8721a8324038657a5a9c717818d60e99a64d486ab
RO_forecasts-latest.csv263ad2731ec49300043ecfee45ce2df6d23cfdebddccd3d778ed88050fb46829da5
RO_forecasts.csv673aadf3f55950456bb2ef78dc8721a8324038657a5a9c717818d60e99a64d486ab
RO_scores-90d.csv2,309dc963989428d9325392daad3ac195f995dd330aedbada6fde83253d0f38b698c
RO_scores-latest.csv369ec74d2a86ab1919e84dae1e91eb08be4f80126d445d6c04aff2628b76c169236
RO_scores.csv2,309dc963989428d9325392daad3ac195f995dd330aedbada6fde83253d0f38b698c
forecasts-latest.csv390bfaba046c873d9da6c5279c0b574fa5dce22595280b510d5f177ef8dbc4c0442
scores-latest.csv528b72d2337e6b4367c0f5d445caba81b8f494231e355c8d5151798675bed4c4ac6
zones.json505f5613f9b7f423e409a3aeb73269ba785dc29a688e27d30eada1d799908d049a1

Score columns

zone
Bidding zone code.
delivery_day
The delivery day in the zone's own market time, ISO date.
ptu
How many 15-minute periods the day was graded on. Less than a full day means the source published fewer.
ptu_with_action
How many of those carried a decision of ours. The denominator for trailing_bias_value.
pass
as-known (graded the morning after delivery) or as-final (regraded after imbalance settled).
calc_iteration
Which pass this is for this delivery day, counting from 1.
knownby_ts
The instant the row was computed — everything in it was knowable then.
source_file
The frozen published document this row was derived from.

Benchmark columns

Extractable extractable_value
The better of the two passive positions, chosen per PTU with perfect hindsight. It can be negative where dual imbalance pricing leaves the day-ahead price inside the penalty band, and that negative is real.
Trailing bias trailing_bias_value
The result of the hourly trailing-bias rule, which picks the day-ahead side from a trailing mean per hour of day and uses only what was known before the auction closed. Empty where no decision was issued.
Passive DA buy passive_da_buy_value
Buy 1 MW on the day-ahead auction for every PTU of the day and settle the position in imbalance. No foresight: the same side every PTU.
Passive DA sell passive_da_sell_value
Sell 1 MW on the day-ahead auction for every PTU of the day and settle the position in imbalance. No foresight: the same side every PTU.
Adverse adverse_value
The worse of the two passive positions, chosen per PTU with perfect hindsight. Where a zone prices imbalance single-sided it is the exact mirror of extractable_value.

Forecast columns

zone
Bidding zone code.
delivery_day
The day the decision is FOR, in the zone's own market time.
knownby_ts
When the decision was made. Always before the day-ahead gate of the day before delivery_day.
ptu
15-minute periods in the delivery day (92, 96 or 100).
ptu_buy
Periods with action +1: buy on the day-ahead auction, settle in imbalance.
ptu_sell
Periods with action -1: sell on the day-ahead auction, settle in imbalance.
ptu_no_action
Periods with no action. ptu = ptu_buy + ptu_sell + ptu_no_action, always.
data_through
The freshest fact the signal saw.
skip_reason
Empty: where there is no action, the signal did not form. Set: the forecast was REFUSED, and the value says why (kind:missing day[:leg]).
source_file
The frozen published forecast this row was derived from; per-period actions are there.