Alpha Not Foundopen trading research archive

Archive / Energy & compute / E829

AI-generated research, checked but not peer-reviewed. It may contain errors.
E829  KILL  No signalTested · October 2026

Past power price spreads do not predict the next day's

In a large US wholesale power market, the recent average gap between day-ahead and real-time hub prices gives no edge for financial (virtual) bids: the holdout earns -$0.01 per MWh after a $1 cost.

electricity virtual-bidding day-ahead-market risk-premium hub-prices

US power markets let purely financial traders bet on the gap between the day-ahead price and the real-time price. If utilities overpay to lock in prices a day ahead, that gap should be persistently positive and predictable from its own recent history. On 217,536 hub-hours over three years, the average gap was only $0.34 per MWh, and a rule that follows the recent gap earned -$0.01 per MWh in the holdout year after a $1 cost, and the worst single day lost $22,777.

Holdout net-$0.01 / MWh95% interval -$2.70 to +$2.35
Average day-ahead premium+$0.34 / MWhbefore any cost; cost assumed $1
Hub-hours analysed217,5368 hubs, Oct 2023 to Sep 2026
Worst holdout day-$22,7771 MW at each of 8 hubs, 13 hours
01 · The idea being tested

Day-ahead power prices carry a predictable premium over real-time prices that a financial bidder can collect.

Why people believe it

Utilities and retailers buy most of their power in the day-ahead market to avoid real-time price spikes, and may pay a premium for that certainty. US system operators allow virtual bids: a trader sells day-ahead (an increment) and buys back in real time, or the reverse (a decrement), without owning any generation. If the premium depends on hub, hour and weekday, its recent history should tell a virtual bidder which side to take.

Why it would persist The argument, as stated before testing

Taking the other side means carrying real-time spike risk, needs market membership and collateral, and the premium compensates exactly the risk that hedgers want to shed.

02 · How it was tested

For each hub and hour of the next day, we looked at how day-ahead and real-time prices compared over the previous four weeks (with a one-week lag, so everything was known before the bid deadline). If day-ahead had been more than $1 above real time, we simulated selling day-ahead; if more than $1 below, buying. The verdict was taken on a holdout year, with a control that uses the history of a random other hour.

Pass required

Holdout mean at least +$0.50 per MWh at c = $1, day-clustered 95% interval above 0, median day above 0, positive at 5 of 8 hubs, increments and decrements each at least 0, control clearly below.

Killed if

Holdout mean at or below 0 at c = $1, or the result disappears without the 5 best days, or only increments work and the worst day exceeds 30 days of their gains.

Costs

c = $1 per MWh primary ($0.50 and $2 reported). Collateral and other operator charges not modelled.

Controls

Negative control: the same rule with the signal taken from a random other hour's history.

03 · What happened
Why it was rejected

The holdout earns -$0.01 per MWh at c = $1, with an interval from -$2.70 to +$2.35 and a heavy real-time loss tail.

  • Across all 217,536 hub-hours (all 24 hours, 8 hubs, three years), day-ahead exceeded real time by only $0.34 per MWh on average, a third of the assumed $1 cost.
  • The rule lost in every window: -$0.61 per MWh in the report year (0 of 8 hubs positive), -$0.31 in validation (1 of 8), -$0.01 in the holdout.
  • In the holdout, increments earned +$0.37 and decrements lost $1.03 per MWh; without the 5 best days the result falls to -$1.47.
  • The median holdout day lost $36 and the worst lost $22,777 for 1 MW at each of 8 hubs over 13 hours.
  • The random-hour control earned +$0.22 per MWh, above the real signal.

Negative or zero in every period

-$2.00$0.00$2.00pass: +0.50Report year 2023-24-$0.61 [-$1.23, +$0.02]Validation 2024-25-$0.31 [-$0.93, +$0.34]Holdout 2025-26-$0.01 [-$2.70, +$2.35]Control: random hour's history+$0.22

Mean net result per traded MWh after the $1 cost, with day-clustered 95% intervals. The pass bar was +$0.50 with an interval above zero; the holdout interval runs from -$2.70 to +$2.35.

Chart data ($/MWh)
Mean95% low95% high
Report year 2023-24-0.61-1.230.02
Validation 2024-25-0.31-0.930.34
Holdout 2025-26-0.01-2.72.35
Control: random hour's history0.22Not reportedNot reported

The holdout, taken apart

-$1.50-$1.00-$0.50$0.00All trades-$0.01Increments (sell day-ahead)+$0.37Decrements (buy day-ahead)-$1.03Without the 5 best days-$1.47

Holdout net per MWh after the $1 cost. Only increments are positive, and the total depends on a handful of days.

Chart data ($/MWh)
Holdout net
All trades-0.01
Increments (sell day-ahead)0.37
Decrements (buy day-ahead)-1.03
Without the 5 best days-1.47

The premium is smaller than the toll

$0.00$0.25$0.50$0.75$1.00Average day-ahead minus real-time+$0.34Assumed cost per MWh+$1.00

The average day-ahead premium over three years against the cost assumed for one round trip. Collecting the average premium on every hour would lose money after cost; the trailing-history rule did not pick the profitable side often enough to do better.

Chart data ($/MWh)
$/MWh
Average day-ahead minus real-time0.34
Assumed cost per MWh1
04 · What it means

Why it failed Interpretation · not established

At trading hubs the day-ahead premium has already been competed down to about $0.34 per MWh by professional virtual traders, and its recent history does not say which way the next day will go. What remains is real-time price risk: the median holdout day lost $36, and the worst lost $22,777.

Lesson

A premium can be real on average and still be smaller than the toll for collecting it. Here a near-zero holdout mean (-$0.01) hides a result that rests on a handful of days: without the 5 best days it falls to -$1.47. The day-clustered interval and the without-best-days check expose this; a mean over hours does not.

Scope of this result

Covers 8 hubs of one US system operator, hours 1-13, October 2023 to September 2026, with a trailing-history signal and a $1 cost. It does not cover node-level prices, other operators, hours 14-24 as a verdict, or signals built from information other than past prices.

A rejected experiment applies to the tested conditions and does not prove an idea can never work. bp = basis point, 0.01%.

1. Test design

Pre-registered
Yes: rule and criteria fixed before the test data was examined
Data
Day-ahead ex-post and real-time final locational marginal prices, 8 trading hubs — a large US independent system operator covering the Midwest and South, public daily market reports; hourly; 2023-10..2026-09 (1,133 days); public download, no login
Universe
8 trading hubs; hours ending 1-13 (they settle within about 24 hours of the day-ahead award); hours 14-24 reported separately.
Signal
Mean of (day-ahead minus real-time) for the same hub, hour and day class (weekday or weekend) over days D-35 to D-8. Above +c: increment (P&L = DA - RT - c). Below -c: decrement (P&L = RT - DA - c).
Execution
1 MW per hub and hour, placed before the day-ahead deadline on D-1, settled against real-time prices on day D.
Costs
c = $1 per MWh primary ($0.50 and $2 reported). Collateral and other operator charges not modelled.
Controls
Negative control: the same rule with the signal taken from a random other hour's history.
Sample split
Report year 2023-10..2024-09; validation 2024-10..2025-09; holdout 2025-10..2026-09 (decides the verdict).
Pass criterion
Holdout mean at least +$0.50 per MWh at c = $1, day-clustered 95% interval above 0, median day above 0, positive at 5 of 8 hubs, increments and decrements each at least 0, control clearly below.
Kill criterion
Holdout mean at or below 0 at c = $1, or the result disappears without the 5 best days, or only increments work and the worst day exceeds 30 days of their gains.
Power
Not computed in advance.

2. Result

Observations
—
Instruments
8
Net mean
-$0.01
95% interval
-$2.70 to +$2.35
Median
—
Worst
—
Finding 1
Across all 217,536 hub-hours (all 24 hours, 8 hubs, three years), day-ahead exceeded real time by only $0.34 per MWh on average, a third of the assumed $1 cost.
Finding 2
The rule lost in every window: -$0.61 per MWh in the report year (0 of 8 hubs positive), -$0.31 in validation (1 of 8), -$0.01 in the holdout.
Finding 3
In the holdout, increments earned +$0.37 and decrements lost $1.03 per MWh; without the 5 best days the result falls to -$1.47.
Finding 4
The median holdout day lost $36 and the worst lost $22,777 for 1 MW at each of 8 hubs over 13 hours.
Finding 5
The random-hour control earned +$0.22 per MWh, above the real signal.

3. Interpretation

Why it failed
At trading hubs the day-ahead premium has already been competed down to about $0.34 per MWh by professional virtual traders, and its recent history does not say which way the next day will go. What remains is real-time price risk: the median holdout day lost $36, and the worst lost $22,777.
Lesson
A premium can be real on average and still be smaller than the toll for collecting it. Here a near-zero holdout mean (-$0.01) hides a result that rests on a handful of days: without the 5 best days it falls to -$1.47. The day-clustered interval and the without-best-days check expose this; a mean over hours does not.
Scope
Covers 8 hubs of one US system operator, hours 1-13, October 2023 to September 2026, with a trailing-history signal and a $1 cost. It does not cover node-level prices, other operators, hours 14-24 as a verdict, or signals built from information other than past prices.

4. Reproducibility

Steps
1) Download the operator's daily day-ahead ex-post and real-time final LMP files for the period and keep the 8 hubs. 2) For each hub, hour and day class compute the mean of DA - RT over D-35..D-8. 3) Take an increment or decrement when the signal is beyond c and settle as stated. 4) Day-clustered bootstrap; split by hub, by side and without the best days; run the random-hour control.
Grade
COMPLETE
Feedback
Feedbacksite

Feedback on the archive

Type
Type

Text only. No name or e-mail is asked; please do not include personal data. Nothing identifying you is stored.

0/2000

Agents: the same channel is available as submit_feedback, see API & agent access.