Hourly price is conditioned on net load alone
Pexapark’s hourly price forward curve methodology has always conditioned forward hourly prices on net load. What has changed is how we sample the historical record: instead of drawing price scalars from a pool specific to each hour of the day, we draw from the distribution observed at that level of net load, independent of the hour of the day. The shape of forecast net load now translates directly into the shape of price and price variability is a function of net load, fully decoupled from the time of day.
What changed
The same data, organised by net load rather than by hour of day.
Pexapark uses historical price scalars and net load scalars to convert forward-looking monthly baseload prices into hourly curves against which PPA and FPA contracts are priced. The advantage of using scalars is that they are dimensionless: an hourly price is divided by the monthly average price of the block in which the hour lies. Price scalars are sampled from the historical pool and normalized such that every month and block ties exactly to the traded forward. A subtle difference in how those prices are sampled is the basis of this update.
The previous approach grouped the historical record by hour of day. Every hour carried its own pool of observed price scalars, and a forecasted value of net load set the level of that pool. That structure carries an assumption with it: that price variability is a property of the time of day.
The updated approach groups the same observations by net load instead. Within each month/block combination, historical observations are ranked by net load and split into quantiles (e.g., deciles), so each bucket holds the same number of observations, not the same range of load. Rather than collapsing each bucket to a single summary statistic, the full set of price scalars observed at that load level is kept intact, so sampling later can draw from the actual empirical spread instead of an assumed distribution. A forward-looking hour is then priced by where its net load sits, not by what time it is. A forecast net load shape becomes a price shape with nothing further assumed about when during the day prices should be high and/or volatile.
Previously grouped by hour. One pool per hour of day. The diurnal shape is carried by the pools themselves.
Now grouped by net load. The same observations, re-sorted. One pool per level of net load, per month and block.
Why
SEASONALITY
Net load is changing differently in every season.
Solar build-out hollows out the middle of the day in spring and summer while winter evening peaks sharpen. These are two movements that need to be resolved separately. Buckets are now fitted independently for each calendar month and block, so the net load response is seasonal by construction rather than by adjustment.
DISTRIBUTION
The dispersion is retained, not just the level.
Each bucket retains every price scalar observed at that level of net load. That preserves the spread as well as the central tendency. This includes the scarcity tail, where a large share of the value in a shaped contract sits, and where the relationship between net load and price is at its most convex.
DECOUPLING
Time of day is no longer an input to price scalar sampling.
Sampling now asks only how extreme an hour's net load is; where that lands in the day comes from the net load forecast. As the peak migrates later with solar penetration, the price peak migrates with it. The day-ahead price shape follows the forecast rather than the historical calendar.
What’s the impact
The forecast price shape is a direct read-out of forecast net load.
Monthly average by hour of day, ERCOT North Hub, 2035. Each row shares a common scale across both months; the dashed rule marks the monthly average.
The two series are drawn on separate scales because price responds convexly: a 20% swing in net load produces a multiple of that in price. What matters is that the turning points coincide, hour for hour. Holding the month fixed and moving the horizon out isolates what build-out does to the shape: between 2027 and 2035 the midday trough deepens and broadens from a single hour around HE11 into a plateau spanning HE11-HE18, and a second morning peak emerges at HE7. The price shape follows in both years.