What This Simulation Covers

A 50 MWh battery system in dallas, simulated at module level for 30 days. The window runs from 2025-10-01 to 2025-10-30, covering typical ERCOT fall operations.

Every module (1,120 across 14 containers) runs through real market prices, grid frequency signals, and weather data. The simulation tracks revenue from two streams (ancillary services and energy arbitrage) and measures degradation using a physics-based degradation model.

$48k
30-Day Revenue
$2k
Daily Average
$46k
Annualized $/MW-yr
50 MWh
System Capacity
1.122%
30-Day Capacity Fade
How the Simulation Works
01
Configure the Asset
Set system size, location, and how capacity splits across revenue streams
02
Run the Markets
Feed in real ERCOT price data and grid frequency signals, day by day
03
Dispatch Every Module
Each of 1,120 modules runs through 30 days of charge and discharge
04
Settle and Assess
Calculate revenue, run degradation model, find the efficiency tradeoff

The Asset Layout

14 containers arranged in a grid. Each holds 10 racks of 8 modules. Every module runs both ancillary services and energy arbitrage in a unified dispatch.

Electricity Price Patterns Over the Window

DAM (day-ahead market) prices across the simulation period, rendered as a surface. The scheduler uses this 14-day lookback to decide when to charge (buy cheap) and discharge (sell high) each day. Price variation across the window shows which days the scheduler targets for arbitrage.

Daily Revenue Breakdown

Revenue per day split into ancillary (orange) and arbitrage (yellow). Daily revenue ranges from $400 to $3,200 depending on price spreads. 30-day total: $47,505.

Revenue vs Cycling Cost: Which Days Are Worth Dispatching?

Battery degradation has two components. Calendar aging happens regardless of dispatch: time and temperature wear the cells whether you operate or not. Cycling wear only happens when you charge and discharge.

The dispatch decision is about cycling cost alone. Calendar aging is a sunk cost. This curve sorts days by revenue-per-cycling-cost ratio (best first) and plots cumulative revenue against cumulative cycling wear. The knee point marks where marginal returns drop: days before the knee earn well above their cycling cost, days after contribute diminishing returns.

Daily P&L: Calendar, Cycling, and Net Profit

Each day's revenue alongside its calendar cost, cycling cost, and net profit. Sorted by revenue-per-cycling-cost ratio. Calendar cost is roughly constant across days. Cycling cost varies with how hard the system works.

Capacity Fade Per Day

Daily degradation percentage from the degradation model. Calendar aging (time and temperature) dominates over cycling degradation. Total fleet-average fade over 30 days: 1.122%.

Degradation Distribution Across the Fleet

Same physical layout, colored by how much capacity each module lost over 30 days. Manufacturing variation in internal resistance causes uneven wear. Average retention: 98.878%. Hover to see individual module values.

What Drives Uneven Wear

Calendar fade vs cycle fade plotted against temperature, SOC, and equivalent full cycles. Calendar aging dominates, driven by temperature and time at high SOC. Cycle fade is smaller but varies with how hard each module works.

Temperature Distribution Across Modules

Peak temperature for every module over the 30-day window. Modules with lower internal resistance draw more current and run warmer. Temperature is the primary driver of calendar aging. This shows where thermal risk concentrates.

Run This Simulation on Your Fleet Data

Every chart above runs live in our copilot. Set your system size, location, and container type to see what 30 days of operations look like for your specific asset.

Launch Copilot