← All case studies
Capability

A battery operator can see the nodal spread before it's obvious — and dispatch against it.

We built NodalAlpha — a battery-storage arbitrage engine that forecasts nodal basis spreads, ranks every ERCOT and CAISO node by forward opportunity, and schedules charge and discharge against a sized unit. Backtested on a full year of real ERCOT settlement prices, energy arbitrage only.

Sector Trading & Risk Services AI / ML · Data Engineering · BI

Challenge

A battery is paid at a single settlement point, but the tools on most desks were built for gas and report zonal or hub averages — which average away exactly the nodal congestion that determines a storage asset's return. And most of them stop at a chart: they tell you what the basis did, not what it is about to do, and never link the forecast to a schedule on your actual unit. The work of turning a price view into a charge-and-discharge decision was left on the trader.

Approach

We built the signal end to end, so it ends in an action rather than a chart. A data fusion layer normalizes ISO market data, weather ensembles, gas basis, and interconnection-queue fundamentals into one nodal time series. A signal engine forecasts nodal basis spreads, fingerprints which constraints are structural versus transient, and ranks every node by forward opportunity. A dispatch optimizer then schedules charge and discharge against a sized unit — respecting power, energy, state of charge, round-trip efficiency, and cycle life — and is backtested against a real year, settling at realized prices so it takes real losses.

Technology

ERCOT and CAISO nodal price data, weather ensembles, gas basis, and interconnection-queue fundamentals feed a forecasting layer that publishes an 80% confidence band and a 0–100 confidence score against realized outturn. A dispatch optimizer — a greedy marginal-block heuristic that lands at or near the MILP optimum for the single-asset daily arbitrage problem, with the full MILP formulation in production — runs a year-long, interactive backtest under hard power, energy, state-of-charge, efficiency, and cycle-life constraints.

Outcome

On a 20MW / 80MWh unit backtested across a full year of real ERCOT prices — scheduled against day-ahead, settled at real-time — the engine captured 19–23% of the day's available spread at an 84–89% hit rate, worth $30–44/kW-yr across six trading hubs on energy arbitrage alone. Losing days, drawdowns, and cycle limits are visible rather than hidden: any bad day can be opened and read hour by hour, which is what makes the signal trustable when it is wrong.

Figures are from a 12-month backtest on real ERCOT day-ahead and real-time settlement prices across six trading hubs — energy arbitrage only, measured at trading hubs. They are not directly comparable to published whole-asset ERCOT benchmarks of $60–120/kW-yr, which include ancillary services and are typically earned at congested resource nodes.

Interactive demo

Explore the signal

Runs entirely in your browser on synthetic data — a hands-on view of the capability described above.

Interactive demo

NodalAlpha — live desk

Rank nodes by forward spread, then watch the optimizer schedule charge and discharge against them. Illustrative, synthetic data.

Have a similar problem worth solving properly?

Book a Consultation
Interactive demo

See it live

Tell us where to reach you and the demo opens right here. Built on synthetic data.