BESSview: BESS sizing and scenario analysis

Size your BESS project on real market data

BESSview finds the battery size and revenue a site can support: standalone, or co-located behind the meter with solar, wind and your own consumption. Every scenario is simulated and backtested per quarter-hour across five markets, with limited foresight, so the result is revenue the asset could actually have earned.

Five markets, one dispatch problem Solar, wind and consumption behind one connection 15-minute resolution, no perfect foresight Backtested on published prices

Explore is free: five simulation runs, no card, no call.

BESSview results for a 20 MW PV, 7 MW / 15 MWh battery project on a 2 MW grid connection: the ten-year simulation on the left showing ROI, project and equity IRR, NPV and net margin per market, and the 2025 backtest on the right showing realized net energy margin, discharge revenue and charging cost per market

One asset, two runs: the ten-year forward simulation on the left, the 2025 backtest on the right. Same engine, same constraints.

5 markets
Solved as one dispatch problem
15 min
Dispatch and settlement resolution
85-95%
Of the perfect-foresight ceiling
2050
Price curves reach this far out

See what the platform does

These are unedited screen recordings from BESSview.

Backtesting

Backtest against the markets that actually happened

BESSview runs your exact asset configuration against published historical prices, so you can see what it would have earned, and read that next to the forward-looking simulation on the same screen, in the same units.

  • Simulation and backtest, one screen, per market
  • Net margin, discharge revenue and charging cost split out
  • Absolute euros or per MW, one toggle, for clean comparisons
  • ROI, project IRR, equity IRR, NPV and cycles per year
No black box

Drill into every dispatch decision, every quarter-hour

If a result surprises you, you can check it. Open any day and see exactly when the battery charged, which market it discharged into, at what price, and what the state of charge was, alongside the market prices and reserve bids that drove the decision.

  • Power and state of charge per market, per PTU
  • aFRR up and down volumes and FCR capacity bids drawn per day
  • Monthly revenue by market across the year, as a heatmap
  • The underlying price curves, so any figure can be traced back
Your assumptions, not ours

Every parameter is yours to set

Degradation curve, availability, round-trip efficiency, inverter limits, SDE++ category, curtailment behaviour at negative prices, foresight horizon, aFRR and FCR reserve headroom, CAPEX and OPEX templates, loan structures, discount rates, energy tax. Change any of them and rerun. A ten-year, quarter-hourly, multi-market run finishes in seconds.

  • Guided setup: site, generation, grid, battery, economics, trading
  • Reserve headroom for aFRR and FCR, as a share of battery duration
  • Financing: equity, loans, interest, term, discount rate, energy tax
  • Reusable CAPEX/OPEX templates, with items linked to battery size
Every euro itemized

Cashflow per year, every cost on its own line

Year-by-year cashflow over the full project lifetime, with revenue split per market, degradation applied, cycles counted, and every cost itemized: transport standing charge, contracted power, kWmax peak, transported energy, optimizer fee, and OPEX broken out per line item rather than lumped into one number.

Backtest years sit on the same axis as the forecast years, so the step between what happened and what is projected is right there to see.

  • Battery and renewable cashflows, separately and combined
  • Solar market revenue, SDE++ subsidy, GvO certificates and imbalance cost
  • PDF report, Excel workbook, and a populated project-finance model
  • Lock a scenario to freeze it, or clone it to branch the assumptions
Yearly BESS cashflow: stacked bars per year for day-ahead, imbalance and intraday revenue against negative transport and optimizer costs, with a net benefit line falling from 2026 to 2035, and the 2024 and 2025 backtest years shown on the same axis
Battery cashflow. The two shaded columns on the left are backtest years; everything to the right of the dashed line is simulated. The declining net benefit line is degradation and the forward price curve, not an accounting adjustment.
Yearly solar cashflow: stacked bars per year for solar market revenue, SDE++ subsidy and GvO certificate revenue against negative solar imbalance cost, with a net benefit line, and the 2024 and 2025 backtest years shown on the same axis
Co-located solar, on the same footing: market revenue, SDE++ subsidy, GvO certificates and the imbalance cost of selling weather-driven output, each as its own band.
Site, not only the battery

Model your real location, including solar, wind and the grid connection

Place your project on the map and describe it as it will actually be built: panel orientation and tilt, east-west or single orientation, inverter limits, turbine model and hub height, the site's own consumption profile, and the grid connection that all of it has to fit through.

  • Map-based location setup with real coordinates
  • PV detail: layout, azimuth, tilt, east-west, inverter limit
  • Wind detail: turbine model, hub height, system loss, power-curve smoothing
  • On-site consumption profiles for behind-the-meter sites
  • Reuse locations across simulations and scenarios
Real weather, real constraints

Weather-based production profiles and grid restrictions

Generate PV and wind production profiles from ERA5 reanalysis weather for your exact coordinates, or upload measured or contracted profiles. Then add the connection constraints: a non-firm profile, and the monthly kWmax peak tariff.

  • Location-specific profiles, interpolated to quarter-hours
  • Non-firm and flexible connections (ATO, TDTR) as time blocks
  • Ramp rate limits and renewable-first export priority
  • kWmax optimization: the LP trades revenue against the monthly peak tariff

Scenario analysis, side by side

Battery size, connection capacity, market mix, price curve: the case moves with each of them. Which assumption it actually hangs on only shows up when the runs sit next to each other.

Compare up to five, against a baseline

Pick up to five completed simulations and read their headline financials, per-market revenue, cashflow and operational metrics in one table. Star one as the baseline and every other column becomes a delta against it, so a 2 MW connection versus a 5 MW one is a number rather than an argument.

A config-differences panel lists only the fields that actually differ (battery, strategy and markets, grid, economics, project, cost items), which is how you find out that two runs you thought were identical were not. Drag the columns into low, mid, high order and save the whole selection as a named set your organization can reload.

  • Per-market revenue in €/yr, €/MW/yr, total or share of the stack
  • Total project or battery-only cashflow, on one toggle
  • Cycles, throughput, final state of health and curtailed energy

PDF report, methodology included

Financial and operational results, the methodology behind them, the BirdCurve forecast used, and the stated assumptions and limitations, in one document. Toggle CAPEX, OPEX and the derived NPV, IRR and payback out of it when you want to share a revenue-only view.

Excel, and a real financial model

Export the workbook and drop the numbers into your own model, or generate a populated project-finance model from one or more completed simulations and skip the retyping step where mistakes are made. The financial model is an Enterprise feature.

Locked scenarios and an audit trail

Lock the scenario you decided on so it cannot drift, clone it to test the next question, and keep the audit trail. Everything lives in your own organization, with roles, access control and an API for your own tooling.

Built to be checked

Every figure drills down to the dispatch and price data it came from, and every backtest runs on published prices you can look up.

Backtested on published prices

Any simulation can be re-run against the historical prices for the same period and read side by side.

Transparent to the quarter-hour

Drill from annual IRR all the way down to a single 15-minute PTU of dispatch, with nothing hidden behind an aggregate.

Built by energy professionals

Developed by the Birdview Energy team, who advise on BESS feasibility, grid connections and project financing every day. Meet the team.

Your data stays yours

Projects live in your own organization's account with user management and access control. Your pipeline is not our marketing material.

What BESSview does not model

This list ships inside every report, and it is on this page for the same reason: you will find these limits eventually, and it is better that you find them from us. Each one leans conservative, so the reported revenue is a floor rather than a mid-case.

  • Outages. The battery is assumed available whenever the schedule wants it, so plant downtime is yours to deduct.
  • Sub-PTU dynamics. Imbalance settles at the 15-minute PTU; what happens inside it is not resolved.
  • Order-book depth. Bid-ask spread, exchange and clearing fees are absorbed into one optimizer fee, visible in the OPEX breakdown.
  • Your own price impact. Reserve and capacity clearing prices are exogenous: your battery bidding in does not move them.
  • Cell-level variation. Degradation is deterministic, so warranty triggers and cell-to-cell spread are not represented.
  • Market redesign. Curves assume today's market structure; a capacity market or a gate-closure change would move them.

Forecast-side assumptions are set out the same way, with their direction of bias, in the BirdCurve method and in the report appendix.

Plans

Access is priced per project window, not per seat per year. Start free, and upgrade when the project asks for more.

Explore

First look

Free

Limited access

  • Day-ahead, intraday and imbalance
  • Central price curve
  • 5 simulation runs, up to 3 project years
  • Template locations, standard degradation and grid fees
  • Cashflow overview
Start free

Basic

Screening, go / no-go

€1500 excl. VAT

1 month access

Everything in Explore, plus:

  • aFRR and FCR markets
  • 10 runs, 1 custom location
  • All BESS and grid parameters, all DSO standard fees
  • Generated PV profile, configurable CAPEX/OPEX
  • Full Excel and PDF report

Credited if you upgrade to Pro

Get Basic
Most projects

Pro

Full project case

€6000 excl. VAT

6 months access

Everything in Basic, plus:

  • High, Central and Low price curves
  • 50 simulation runs
  • Upload your own degradation curve and PV/wind data
  • Tailor-made DSO/TSO grid fees
  • Full sensitivity suite and financing metrics
  • Calls and support hours
Get Pro

Enterprise

Full platform access

Custom

Custom agreement

Everything in Pro, plus:

  • Unlimited runs and locations
  • Upload your own price curves
  • Populated project-finance model
  • Dedicated support and custom contract terms
Talk to us

Prices exclude VAT. A run is one full simulation of a configured scenario; re-reading, comparing and exporting results costs nothing. Need more seats, a longer window, or several projects at once? Ask us.

Where BESSview sits

A battery business case has three separate questions in it: what will prices do, how restricted is the connection, and how well is the asset actually traded. Each has its own tool, and they share their inputs.

BirdCurve

The price curves BESSview runs on: 15-minute forward curves to 2050 in Low, Central and High, from a documented fundamental model rather than a licensed black box.

See how the curves are built →

BirdFlow

For a non-firm connection, BirdFlow models the Dutch transmission grid to tell you how many hours you would actually be restricted. BESSview turns those hours into euros.

See the grid model →

Benchmarking

Once the asset is running, the same dispatch engine produces the achievable-revenue reference your optimizer is measured against, monthly, while the contract still has time to run.

See the benchmark method →

Frequently asked questions

Straight answers, before you sign up.

BESSview is Birdview Energy's web platform for sizing, simulating and backtesting battery energy storage projects, standalone or co-located behind the meter with solar, wind and on-site consumption. You define the asset, the grid connection, the economics and the trading strategy; BESSview optimizes dispatch across multiple markets at 15-minute resolution and turns it into IRR, NPV and year-by-year cashflows, so battery sizes and scenarios can be compared on the same footing.
Five: day-ahead, intraday, imbalance, aFRR (capacity auction and energy activation) and FCR capacity. They are cross-optimized in one dispatch problem, not simulated separately and added up, which matters because the same MW cannot be sold twice. The Dutch market is covered in depth. Another bidding zone? Talk to us. Coverage is expanding.
No, and this is the question worth asking any BESS revenue model. The production strategy is a rolling-horizon linear program. The optimizer sees a foresight window of typically three days, commits only its first day, then rolls forward onto prices it did not know about. Measured against the perfect-foresight ceiling, that lands at 85 to 95% of it. A full perfect-foresight run is available, clearly labelled as an upper bound, and it is never used as a projection.
A simulation projects your asset forward over the project lifetime using BirdCurve price scenarios. A backtest runs the same asset against prices that were actually published, quarter-hour by quarter-hour, showing what it would really have earned. Same engine, same constraints, both on one screen, so you can judge how the forward-looking numbers relate to what markets have actually done.
Standalone BESS, solar+storage and wind+storage, in any size, plus an on-site consumption profile for behind-the-meter sites. You control battery power and capacity, degradation curve, availability, round-trip efficiency, inverter limits, PV panel layout (including east-west), azimuth and tilt, turbine model and hub height, and how solar-to-battery charging behaves, including what happens during negative price hours, and whether that transfer is booked at zero cost for a behind-the-meter site.
Yes. Non-firm and flexible connections (ATO, TDTR, capacity limitation contracts) go in as time-dependent transport restrictions, with a ramp rate limit and an option to give renewables first claim on export capacity. The monthly kWmax peak-power tariff is optimized alongside trading revenue, so dispatch respects the connection and the tariff in your agreement. If you do not yet know how many restricted hours to expect, that is what BirdFlow is for.
From BirdCurve NL, our own fundamental forecasting system: 15-minute curves from 2018 to 2050 for day-ahead, intraday (the ID3 index: the volume-weighted average price of continuous trades in the last three hours before delivery), imbalance and aFRR energy, plus aFRR and FCR capacity in 4-hour blocks. Low, Central and High scenarios ship with the platform and are refreshed every quarter; Enterprise accounts can upload their own. Backtests use published exchange and TSO prices. Production profiles come from ERA5 reanalysis weather for your exact coordinates, or you upload measured or contracted profiles.
ROI, project and equity IRR, NPV, payback, net annual energy margin, revenue and charging cost per market, cycles and state of health per year, and a year-by-year cashflow with revenue, grid tariffs and OPEX itemized. Exports are a PDF report including the methodology and its limitations, an Excel workbook, and, on Enterprise, a populated project-finance model. Everything is readable in absolute euros or per MW.
Yes. Your projects, locations and scenarios live in your own organization's account, with user management and access control so you decide who in your team sees what. We do not share your project data with third parties.
Sign up at bessview.nl and Explore is free straight away: five runs, the Central curve, the three energy markets, on a template location. Beyond that it is €1500 for a month (Basic, credited if you move to Pro), €6000 for six months (Pro), or a custom agreement (Enterprise), all excluding VAT, with the full breakdown in Plans. To be walked through it on your own project first, request a demo.

Still have questions? Contact us. We answer ourselves, not a chatbot.

Who it is for

Whether you are sizing a new project, structuring a PPA, or adding a battery to a site that already generates or consumes, the question is what the battery will actually earn on your connection.

PV & BESS developers

Size the battery against the connection you were actually offered, test non-firm capacity (ATO/TDTR) scenarios, include SDE++ and curtailment, and compare battery sizes side by side before ordering hardware.

  • Standalone, solar+storage and wind+storage
  • Non-firm and flexible connections, plus the kWmax peak tariff
  • IRR, NPV, payback and loan structures built in

Traders & PPA providers

Quantify what a battery is worth under your trading strategy before you structure the PPA or tolling agreement. Backtest revenue stacking across all five markets on real published prices.

  • Cross-market stacking every quarter-hour
  • aFRR and FCR with SoC reserves and 1 MW bid floors
  • Trading constraints and foresight horizon you control

Sites behind the meter

Add a battery to a site that already has solar, wind or its own consumption on one connection. Load your consumption profile, size the battery against the connection and the kWmax peak tariff, and see what the battery adds to the site as a whole.

  • On-site consumption profile on the same connection
  • Zero-cost solar-to-battery transfer in negative price hours
  • SDE++ delayed feed-in via the battery, modelled to the subsidy rules

How the numbers are made

The dispatch optimizer, the foresight window, the degradation model and the price curves behind every figure on this page.

How rolling-horizon dispatch optimization works in BESSview The project lifetime is divided into overlapping windows. Each window is solved as one linear program over a foresight horizon of typically three days. Only the first day of each solved schedule is committed; the remainder is discarded. State of charge and state of health are carried forward, the window rolls one day ahead, and the next linear program is solved. Because the optimizer never sees beyond its horizon, it cannot trade on prices it would not have known. LP solve 1 committed solved, then discarded LP solve 2 committed solved, then discarded LP solve 3 committed solved, then discarded and on to the end of the project lifetime → state of charge and state of health carried forward degradation applied, usable capacity shrinks Day 1Day 2Day 3Day 4 Day 5Day 6Day 7Day 8 Committed to the result Inside the foresight horizon, thrown away and re-solved

Rolling-horizon dispatch. The optimizer only ever commits decisions it could have made with the information available at the time.

The foresight assumption

Solve a whole year of prices in one go and a battery looks brilliant: it charges at the annual minimum and discharges at the annual maximum. That number is a physics limit, not a business case, yet it is the basis of many BESS revenue projections.

BESSview does not allow it. Each linear program sees a foresight horizon of a few days, commits only its first day, and carries that decision into the next window, which opens on prices it did not know about. Set the horizon yourself in the trading step and see how the revenue responds.

Across the runs we have measured, rolling-horizon dispatch lands at 85 to 95% of the perfect-foresight ceiling. We report the lower number and tell you what the ceiling was, because the gap is the part of the business case that depends on how good your trader really is.

Rolling LP

What we report

Overlapping windows, limited foresight, decisions locked before the next window opens. Degradation and state of charge carry across windows, so the asset ages inside the simulation.

Every headline figure on your report (IRR, NPV, cashflow, revenue per market) comes from this run.

Full LP

Upper bound only

One linear program over the entire horizon with complete knowledge of every future price. Useful as a ceiling to measure against, and available to run.

Not achievable in practice, so it is never presented as a projection.

Quarters, not hours

Dispatch, settlement and reporting all run on the 15-minute Programme Time Unit the Dutch market actually settles on. Hourly averages hide exactly the volatility a battery is paid for.

Deterministic dispatch

Dispatch is a linear program solved by HiGHS, the open-source simplex and interior-point solver. It is exact within numerical tolerance: no Monte Carlo, no heuristic. Run it twice on the same inputs and you get the same schedule.

Degradation inside the loop

Calendar and cycle ageing are tracked between windows, including the energy cycled through aFRR and FCR activations. The optimizer sees today's usable capacity, so revenue declines as the asset ages instead of being discounted afterwards.

Simulation and backtest

A simulation runs your asset forward on BirdCurve scenarios. A backtest runs the identical asset on prices that were actually published. Same engine, same constraints, both on one screen, so you can see how the forecast relates to what markets have done.

The price input

The curves are ours too, and they are documented

BESSview does not buy a forward curve and hope. Its price scenarios come from BirdCurve NL, Birdview Energy's own fundamental forecasting system: a gradient-boosted ensemble trained on gas marginal cost, residual load, scarcity, cross-border flows and weather, with a documented feature set rather than a licence agreement that forbids you from asking.

Low, Central and High scenarios ship with the platform and are refreshed every quarter. Enterprise accounts upload their own curves, and every report states which curve produced which number.

How BirdCurve is built and validated →
Markets covered by the BirdCurve price curves feeding BESSview, with their resolution
Market Resolution
Day-ahead15 minutes
Intraday continuous (ID3, 3-hour VWAP)15 minutes
Imbalance, long and short15 minutes
aFRR energy, up and down15 minutes
aFRR capacity4-hour blocks
FCR capacity4-hour blocks

Netherlands, 2018 to 2050. Intraday is priced at the ID3 index: the volume-weighted average price (VWAP) of continuous trades in the last three hours before each 15-minute delivery period. All five markets are cross-optimized in a single dispatch problem, not simulated separately and added up.

See your project's real numbers

Explore is free, so run your own project through it. Or request a demo and we do the first run together, on your project.

Five simulation runs, no card, no call. See what each plan includes.