A merchant battery storage revenue model that treats degradation as an afterthought can misstate 10-year net value by 10–30% — and the direction of the error is not what most developers expect. The naive spreadsheet model understates revenue because it cannot find the arbitrage. The revenue-maximizing optimizer overstates net value because it ignores how its own dispatch burns cycle life. Neither is a description of a real asset, because arbitrage revenue and battery wear are not independent outputs of a simulation; they are two sides of the same dispatch. Every cycle a BESS runs to capture a price spread simultaneously consumes a little of its future capacity. If your model optimizes dispatch for revenue and then applies degradation as an afterthought, you are solving the wrong problem.

Key figure: In a representative 100 MW / 200 MWh merchant system modeled in a European day-ahead market, a perfect-foresight economic dispatch captures roughly 30% more gross arbitrage revenue than a simple rule-based threshold controller. But it also cycles the battery up to a third more, driving faster capacity fade. Counting that wear, a degradation-aware rolling optimizer that prices cycling cost into each dispatch decision outperforms the revenue-maximizing optimizer by roughly 11% on 10-year net value — $152M versus $137M — and beats the rule-based baseline by about 42% ($107M).

Why Merchant Models Fail Differently Than Contracted Ones

Hybrid or solar-plus-storage projects with a PPA — like the long-duration >6-hour systems proliferating in Latin America and the Middle East — have a largely prescribed revenue stream. The battery follows a contracted dispatch profile, and the modeling question is mostly about capacity and duration. Revenue is relatively certain; degradation is a cost that can be forecast against a known operating pattern.

Merchant storage is the opposite. Revenue exists only where dispatch creates it, and dispatch is chosen by the operator in response to volatile prices. As dispatch strategy choices expand — from rule-based thresholds to economic dispatch to model-predictive control — the set of possible operating patterns widens, and so does the range of plausible degradation trajectories. The merchant model must therefore solve revenue and wear simultaneously, because the optimizer's choice of which hours to trade directly determines how hot, how deep, and how often the cells cycle.

This is why the most common merchant-modeling mistake is so damaging. A developer builds a price forecast, feeds it into a dispatch optimizer, derives revenue, and then separately computes degradation from the resulting cycle count using a fixed per-cycle table. That two-step approach treats wear as a consequence of revenue, when in practice the relationship is reciprocal: charging and discharging decisions are themselves constrained by the state of health (SOH) and by the economic cost of using that SOH down. Correctly, degradation is not a post-processing step — it is a price term inside the dispatch objective.

The Dispatch–Degradation Coupling Loop

Think of a battery as a machine with two dials: throughput (how many cycles and at what depth) and strain (C-rate, temperature, state-of-charge band). Every dispatch decision turns both dials, and turning them consumes usable capacity over the asset's life. The coupling is strongest along two axes:

  • Depth-of-discharge and cycle count. A battery cycled to 80% depth of discharge (DoD) every day accumulates far more calendar-equivalent wear per MWh moved than one cycled to 40%. An optimizer with no wear term will happily schedule deep, frequent cycles because they maximize gross spreads — subtly converting expensive cycle life into today's revenue.
  • State-of-charge band. Operating cells in the extreme SOC bands (below 10% or above 90%) accelerates degradation faster than middle-band cycling, even at identical DoD. A degradation-aware dispatch therefore prefers to clip a charge at 95% rather than push to 100% if the incremental spread does not justify the extra strain.
  • C-rate. Higher discharge C-rates raise internal temperature and increase stress. A 2C dispatch may win a single tight price spike, but a 0.5C dispatch of the same energy at a slightly lower price can be worth more once wear is priced.

Energy Optima models this coupled behavior with manufacturer-specific 3D SOH/RTE degradation tables — organized across year × C-rate × cycles per day with trilinear interpolation, currently spanning over 16,000 measured data points across the component library. Rather than a single annual capacity-fade percentage, the dispatcher looks up how much a given dispatch proposition wears the cell at its current age, C-rate, and duty cycle, and weighs that wear against the revenue the proposition would earn. This turns degradation from a forecast into an operating constraint.

Three Dispatch Strategies, Quantified

To make the point concrete, I ran a representative merchant case: a 100 MW / 200 MWh LFP BESS trading in a European day-ahead market over a 10-year horizon, using a stylized but internally consistent price-spread sequence (roughly 60–90 €/MWh daily peak-to-trough spreads, with seasonal variation). I compared three dispatch-modeling strategies, holding everything else constant:

  • Rule-Based: charge when the day-ahead price falls below a fixed threshold, discharge when it rises above a second threshold. Simple, fast, and the baseline most spreadsheet models use.
  • Economic (MILP): perfect-foresight day-ahead arbitrage optimization, maximizing gross revenue with no explicit wear term. This is the "pure revenue" benchmark.
  • Degradation-Aware MPC: a rolling optimization that prices a per-MWh cycling cost into every dispatch decision, shifting energy away from deep, fast, extreme-SOC cycles unless the price spread justifies the wear.
Figure 1: 10-year cumulative merchant BESS value by dispatch-modeling strategy for a 100 MW / 200 MWh system in a European day-ahead market. Degradation & replacement is negative (a cost); net 10-year value stacks gross revenue and degradation cost. Source: author synthesis for illustrative purposes.

The economic optimizer captures the most gross revenue — $193M over ten years versus $148M for rule-based — because it chases every favorable spread. But it pays for it: $56M in degradation and replacement costs, the heaviest of the three, because its revenue-maximizing schedule cycles the battery deepest and most often. The result is a net value of $137M.

The degradation-aware MPC gives up a little gross revenue — $189M, about 2% less than the economic optimizer — but slashes wear costs to $37M. The battery is used more gently: fewer deep cycles, more middle-band operation, and slightly lower peak C-rates. The trade buys a net value of $152M, about 11% better than the revenue-maximizing benchmark and 42% better than rule-based.

The lesson is not that wear terms are a nice-to-have. It is that the optimal merchant dispatch is not the revenue-maximizing dispatch. Once cycling depletes capacity, the asset's ability to capture future spreads shrinks with it. A model that ignores the coupling will tell you to run the battery to the ground for today's arbitrage — and will report the resulting capacity loss as a surprise cost in year six rather than a conscious trade made in year one.

Price Uncertainty: The Forecast Is the Vulnerability

Even a degradation-aware model can mislead if the price forecast feeding it is a single deterministic curve. Merchant revenue is a function of price differences across time, and those differences are the hardest thing to forecast. An annual-mean or monthly-average price input — the kind that fits neatly in a spreadsheet — erases the intraday shape that arbitrage actually exploits.

Three forecast failures dominate:

  • Smoothing the daily shape. If the model sees an average price rather than an hour-by-hour curve, it cannot identify which specific hours are worth cycling for. Averaging mechanically understates arbitrage value and commonly drives undersized dispatch — which then understates degradation too.
  • Ignoring solar penetration drift. As PV saturates a market, midday prices fall and the afternoon/evening ramp steepens. A forecast that holds today's spread shape flat over ten years overvalues early-year dispatch and misses the widening (or, in saturated markets, narrowing) arbitrage window. This is precisely the price-cannibalization dynamic that forced solar-plus-storage PPAs in high-penetration markets.
  • Treating forecast error as symmetric. Downside risk matters more than upside for a merchant asset with finite cycle life: a string of low-spread days still cycles the battery if the dispatcher chases them, consuming capacity for little return. A robust merchant model prices this optionality — deciding when not to trade is as strategic as deciding when to trade.

A rigorous workflow runs the dispatch under multiple price scenarios (high / central / low spread, and sensitivity to renewable buildout) rather than one central case. Each scenario produces its own dispatch and its own degradation trajectory, because a tight-spread scenario should dispatch less aggressively and preserve the battery. Collapsing that into a single average hides the coupling again — a model only learns 'trade less when spreads are thin' if it is actually asked to optimize under thin-spread conditions.

A Correct Merchant Revenue Modeling Workflow

Putting this together, here is the workflow I use for merchant BESS valuation — and that Energy Optima's capacity optimization and EMS dispatch modules automate:

  1. Load an hourly price series, not an average. Use a credible day-ahead spread shape with hourly granularity, and define multiple forward scenarios (central, high-spread, low-spread) rather than one curve. The shape matters more than the level.
  2. Pick a degradation model that varies with dispatch, not a fixed percentage. A single annual fade rate cannot represent the difference between gentle 0.5C middle-band cycling and aggressive 1C deep cycling. Use a 3D model (year × C-rate × cycles/day) so each candidate dispatch has a defensible wear number.
  3. Price wear inside the dispatch objective. Add a per-MWh cycling cost derived from the cell's remaining cycle life and the replacement/augmentation price. Now the optimizer naturally avoids deep, fast cycles unless the spread pays for them.
  4. Co-optimize sizing with dispatch. The optimal MWh-to-MW ratio depends on the dispatch strategy — a degradation-aware dispatch may justify a larger (or smaller) battery than a revenue-maximizing one, because the two have different capacity-fade trajectories and revenue-to-wear ratios. Size and dispatch are one problem, not two.
  5. Run 25-year financials with SOH-driven augmentation. Carry the dispatch-informed SOH trajectory into the financial model, and trigger augmentation/replacement when SOH crosses the contractual or economic threshold (commonly around 70–80% depending on the storage guarantee). The timing of that augmentation spend is a direct output of dispatch choices made in years one through five.

Energy Optima carries each of these steps end to end: LP-optimized capacity sizing on 8,760-hour profiles, three dispatch strategies (rule-based, economic, and MILP-hybrid), manufacturer-specific degradation tables, and 25-year financial projections that tie SOH-driven augmentation to cumulative cashflow. The dispatch strategy you select changes the sizing recommendation and the augmentation schedule, which is exactly the coupling most tools abstract away.

The practical takeaway: For any merchant BESS, run the valuation at least twice — once with a revenue-only optimizer and once with a degradation-aware dispatcher — and compare the net 10–25 year value, including replacement spend. If the two agree, your system is cycling gently enough that wear is immaterial. If they diverge, the divergence is the analysis: it tells you how much merchant revenue is really being eaten by capacity fade, and how your dispatch rules and sizing should change to hold on to it.

The Bottom Line

Merchant BESS valuation is not a revenue problem with degradation attached. It is a single coupled optimization whose two halves cannot be separated without distorting both. A rule-based model understates revenue and understates wear. A revenue-maximizing model overstates revenue and lets the battery bleed its own future. Only a dispatch that prices wear into every decision — and is stress-tested across price scenarios — produces a net value you can take to an investment committee with confidence.

As merchant storage grows across Europe and beyond — from Czechia's first utility-scale arbitrage systems to subsidy-free merchant offshore wind paired with storage — the models used to underwrite these assets must mature at the same pace.

Model Merchant BESS Revenue Correctly

Energy Optima's platform optimizes merchant BESS dispatch with degradation-aware economic dispatch, runs LP capacity sizing on 8,760-hour price profiles, and projects 25-year cashflow with SOH-driven augmentation. Set up a merchant case, pick your dispatch strategy, and see how wear changes the bottom line.

Create Free Account

Mark L. — Lead Simulation Engineer at Energy Optima. 16 years in renewable energy modeling, previously building PV and BESS financial models at an IPP with a 5 GW portfolio. He writes step-by-step methodology guides on PV/BESS simulation, dispatch optimization, and techno-economic analysis.

← Comparing Dispatch Strategies: Rule-Based vs Economic vs MILP Czechia's 57 MW / 120 MWh Merchant BESS →