Day-ahead vs. real-time price spread at the CAISO trading hubs, conditioned on the ISO's own load, wind, and solar forecast errors. DART = day-ahead LMP − real-time LMP: positive means the day-ahead market cleared rich (an INC — selling day-ahead, buying back real-time — would have paid); negative means real-time spiked above day-ahead (a DEC paid). Data: CAISO OASIS, updated daily.
Average of the 24 hourly spreads each trading day at the selected hub. Blue days: day-ahead cleared above real-time (INCs paid). Red days: real-time ran above day-ahead (DECs paid).
Each cell is one hour's spread. Vertical red bands are real-time price excursions; persistent horizontal structure is the systematic hourly bias virtual bids chase.
Trailing 7-day mean absolute error and bias. Load: the day-ahead demand forecast vs. the RTPD (real-time market) forecast for the same hours — the same-definition demand surprise the RT market trades on (the published "actual integrated load" sits on a different BTM-solar accounting basis, so it is not compared directly). Wind & solar: DA production forecast vs. actual generation; midday economic curtailment shows up as persistent positive bias in summer.
Hourly observations bucketed by how far real time's view of net load moved from day-ahead's: (RTPD load fcst − DAM load fcst) − (wind + solar actual − DA forecast). When net load comes in above the DA view (right side), real time must buy more energy than the DA market cleared — the spread should go negative. Bars are the mean spread per bucket; the label is the share of hours with DART > 0.
Mean spread by hour-ending, split by days' net-load error sign (±400 MW threshold).
Days classified from actuals: solar & wind vs. period median, load by peak tercile. Mean spread in midday (HE11–16) and evening ramp (HE17–21) hours.
Left: expected value of a 1 MW INC by hour-ending over the selected range (a negative bar means the DEC side paid). Right: cumulative P&L of mechanical 1 MW strategies — INC across the evening ramp, DEC across midday, and a trailing-14-day signal that takes the historically profitable side of each hour. Gross of fees, bid-cost recovery, and uplift; this is a diagnostic, not advice.
Method. Day-ahead prices: OASIS PRC_LMP (DAM, hourly) at TH_NP15_GEN-APND /
TH_SP15_GEN-APND / TH_ZP26_GEN-APND. Real-time prices: PRC_INTVL_LMP (RTM 5-minute dispatch),
averaged to hour-ending — the unweighted hourly mean a 1 MW flat virtual settles against.
Load: SLD_FCST for the CAISO TAC — the DAM forecast is compared against the RTPD
(real-time market) forecast, not against "Total Actual Hourly Integrated Load": every OASIS forecast run
(2DA/DAM/RTPD/RTD) is published net of estimated behind-the-meter solar while the actual-load series is not,
a definitional gap that peaks around 8 GW midday. The DAM−RTPD revision is the same-definition
demand surprise the RT market actually prices. Actual integrated load is still used for the
peak-load regime classification. Wind/solar:
SLD_REN_FCST DAM forecast vs. actual generation summed over trading hubs; actual generation
reflects curtailment, so the solar "error" mixes forecast miss with economic curtailment — read it as
"MW that didn't show up," which is what the real-time market experiences. All dates are Pacific trading
days, hours are hour-ending 1–24. Backtests ignore transaction costs, bid-cost-recovery allocation,
and market impact. Nothing here is investment advice.