{
  "dataset": "PowerTradingLab benchmarks",
  "interface_version": 1,
  "publisher": {
    "name": "PowerTradingLab",
    "url": "https://powertradinglab.org"
  },
  "terms": "Free to use with attribution. Derived values only: no day-ahead or imbalance prices are republished here or anywhere else in this dataset.",
  "generated_from": "2026-10-01T09:40:24Z",
  "unit": "EUR per MW of trading capacity, summed over the delivery day",
  "granularity": "one row per zone per delivery day, newest pass only",
  "benchmarks": {
    "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_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.",
    "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.",
    "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.",
    "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."
  },
  "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 \u2014 everything in it was knowable then.",
    "source_file": "The frozen published document this row was derived from."
  },
  "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."
  },
  "zones": [
    "NL",
    "RO"
  ],
  "files": [
    {
      "name": "NL_forecasts-90d.csv",
      "bytes": 2195,
      "sha256": "d6afe20e4ce302a29286150ad4a12e157d49a1d69551d044481b79ede8b5211d"
    },
    {
      "name": "NL_forecasts-latest.csv",
      "bytes": 263,
      "sha256": "6e21c0ae57303b989fa35dce2785057558cb29740416c5fa2ea7242fffa28b6d"
    },
    {
      "name": "NL_forecasts.csv",
      "bytes": 2195,
      "sha256": "d6afe20e4ce302a29286150ad4a12e157d49a1d69551d044481b79ede8b5211d"
    },
    {
      "name": "NL_scores-90d.csv",
      "bytes": 2402,
      "sha256": "0ec3e9c924c9dcff5a7bd19860a72e0f012ed53c9dd5c3b6dd99359a5c5a9524"
    },
    {
      "name": "NL_scores-latest.csv",
      "bytes": 370,
      "sha256": "76ae5c31595a16d456f594a3d0d39f27ae2f18f0d1e98439a725aa677d5f395c"
    },
    {
      "name": "NL_scores.csv",
      "bytes": 2402,
      "sha256": "0ec3e9c924c9dcff5a7bd19860a72e0f012ed53c9dd5c3b6dd99359a5c5a9524"
    },
    {
      "name": "RO_forecasts-90d.csv",
      "bytes": 673,
      "sha256": "aadf3f55950456bb2ef78dc8721a8324038657a5a9c717818d60e99a64d486ab"
    },
    {
      "name": "RO_forecasts-latest.csv",
      "bytes": 263,
      "sha256": "ad2731ec49300043ecfee45ce2df6d23cfdebddccd3d778ed88050fb46829da5"
    },
    {
      "name": "RO_forecasts.csv",
      "bytes": 673,
      "sha256": "aadf3f55950456bb2ef78dc8721a8324038657a5a9c717818d60e99a64d486ab"
    },
    {
      "name": "RO_scores-90d.csv",
      "bytes": 2309,
      "sha256": "dc963989428d9325392daad3ac195f995dd330aedbada6fde83253d0f38b698c"
    },
    {
      "name": "RO_scores-latest.csv",
      "bytes": 369,
      "sha256": "ec74d2a86ab1919e84dae1e91eb08be4f80126d445d6c04aff2628b76c169236"
    },
    {
      "name": "RO_scores.csv",
      "bytes": 2309,
      "sha256": "dc963989428d9325392daad3ac195f995dd330aedbada6fde83253d0f38b698c"
    },
    {
      "name": "forecasts-latest.csv",
      "bytes": 390,
      "sha256": "bfaba046c873d9da6c5279c0b574fa5dce22595280b510d5f177ef8dbc4c0442"
    },
    {
      "name": "scores-latest.csv",
      "bytes": 528,
      "sha256": "b72d2337e6b4367c0f5d445caba81b8f494231e355c8d5151798675bed4c4ac6"
    },
    {
      "name": "zones.json",
      "bytes": 505,
      "sha256": "f5613f9b7f423e409a3aeb73269ba785dc29a688e27d30eada1d799908d049a1"
    }
  ]
}
