Solar

The solar model forecasts the revenue and performance of a solar site. It reports wholesale revenue alongside specific yield, load factor, capture rate, and the losses from clipping and negative prices.

The solar model uses the same assumptions as the co-located solar and storage model, so standalone and co-located results are consistent. It accepts either a custom generation profile or a set of site parameters. It also captures cannibalisation and negative-price behaviour, to give realistic long-term revenue forecasts.

Solar can also be co-located with a battery, or tri-located with wind and a battery. See Co-location for how the assets share a grid connection.

Solar sites are described by capacity, coupling, mounting, and losses

The model represents a solar site with the following parameters:

  • Nameplate capacity (MW): The maximum power rating of the solar site.
  • Coupling type: AC or DC coupling, which sets where conversion losses apply.
  • Tracking type: Fixed mounting or single-axis tracking (SAT).
  • Tilt and azimuth: The angle and orientation of the panels. These are used only when the model builds the profile, not for a custom upload.
  • Losses: Shading, soiling, mismatch, wiring, age, and availability losses.
  • Operational configuration: Settings that control market participation and revenue mechanisms.

The generation profile is either modelled or uploaded

The solar generation profile comes from one of two sources:

  • Custom profile: A generation time series uploaded for the site. The upload is used as provided, so tilt, azimuth, and other positioning parameters are not used. See Custom Generation Profile for the file format.
  • Modelled profile: A profile built with the open-source pvlib library from solar irradiance data and the site’s parameters, including tilt and azimuth.

Each profile has two parts. Unclipped generation is the output the panels could produce from the available sunlight. Clipped generation is the part of that output lost because it exceeds the inverter capacity.

Modelled profiles use decades of site irradiance data

In the USA and the National Electricity Market (NEM), modelled profiles take irradiance from ERA5, the European Centre for Medium-Range Weather Forecasts (ECMWF) global reanalysis. ERA5 gives an hourly record at the site from 1979 to 2025.

Market Irradiance data Resolution Years available
ERCOT, SPP, MISO, PJM, NYISO, ISO-NE ERA5 reanalysis Hourly 1979 to 2025
The NEM ERA5 reanalysis Hourly 1979 to 2025
UK & Europe Photovoltaic Geographical Information System (PVGIS) Hourly A typical meteorological year

The model converts irradiance into output with pvlib in the following steps:

  1. Sun position and irradiance: The sun’s position is set for the middle of each period, and irradiance is projected onto the panels for the site’s tilt, azimuth, and tracking.
  2. Terrain shading: The local horizon blocks the sun when it is low, and the site’s altitude is looked up automatically.
  3. Panel and inverter: Standard module and inverter models from the California Energy Commission (CEC) database convert the light into AC output. Panel temperature is modelled from air temperature and wind speed.
  4. Losses: Default losses are applied, as listed below.
Loss Default
Soiling 2%
Shading 2%
Mismatch 2%
Wiring 2%
Light-induced degradation 1.5%
Connections 0.5% for sites under 100 MW, 3% from 100 MW
Age and availability 0%

Single-axis trackers rotate east to west around a horizontal axis, up to 60 degrees each way, and backtrack to avoid row-to-row shading. NEM sites default to single-axis tracking.

The yield exceedance level picks the weather year

Annual solar yield varies from year to year with the weather. The model therefore lets each site choose how conservative its yield should be, as an exceedance level. P50, the default, is a median year. P90 is a low-yield year, beaten in 90% of years. P10 is a high-yield year, beaten in only 10% of years. Any level strictly between 0% and 100% can be chosen.

The model picks the weather year for a site in 3 steps:

  1. Model the site’s annual yield for every year from 1979 to 2025.
  2. Fit a normal distribution to those annual yields, and find the yield at the chosen exceedance level.
  3. Pick the real year whose yield is closest to that target. A non-leap year is preferred when its yield is within 0.5% of the target.

That year’s profile is then reshuffled onto the market’s weather year, as described below.

The exceedance level is set for each site, so two sites in the same market can model different years for the same level. It describes energy, not revenue: a P90 yield year is not a P90 revenue year.

An uploaded custom profile is used as provided, so the exceedance level does not apply to it. The exceedance level applies to forecasts only. It is available in ERCOT, SPP, MISO, PJM, NYISO, ISO-NE, and the NEM.

Reshuffling aligns the solar profile with the weather year driving prices

As solar penetration increases, wholesale prices tend to be lower when the sun is shining. This effect, known as cannibalisation, reduces the capture price for solar generators relative to the baseload price.

To capture cannibalisation accurately, the solar profile must line up with the weather year used in the Fundamentals Model. To ensure this, the model reshuffles the profile, whether uploaded or modelled, onto that weather year.

Reshuffling works on periods. A period is a single time step of the profile, such as one hour of a modelled profile. An hourly profile therefore has 8,760 periods in a non-leap year.

The reshuffle is done in 4 steps:

  1. Build a reference solar profile at the site for the market’s weather year.
  2. Rank every period of the reference profile from lowest to highest output.
  3. Rank every period of the site profile from lowest to highest output.
  4. Give the lowest site output to the lowest reference period, the next-lowest to the next-lowest reference period, and so on.

Every period is ranked across the full year. The reshuffled profile therefore follows the reference year’s daily shape, its seasons, and its sunny and cloudy spells, which are the conditions behind the power prices. The profile keeps every output value, so its annual energy and duration curve do not change.

The reference profile comes from the data source used by each market. This is the National Solar Radiation Database (NSRDB) in the USA, PVGIS in the NEM, and Renewables Ninja in UK & Europe. Also, in UK & Europe, rather than single periods, whole days are ranked and reordered by total generation within each month.

Backtests do not reshuffle. A backtest models the actual weather over its own dates, so its data ends about 8 days before the current date.

The weather year for each market is listed below:

Market Weather year Weather year documentation
ERCOT Synthetic, with each month drawn from a year between 2020 and 2025 Generation
SPP 2023 Generation
Eastern Interconnection 2022 Generation
UK & Europe 2018 Renewables
The NEM Synthetic, with each month drawn from a year between 2016 and 2023 Reference Years

Clipping, conversion losses, and the export limit cap solar output

The model applies three physical limits to solar output:

  • Inverter clipping: When the DC output of the panels exceeds the inverter capacity, the excess is clipped and lost.
  • Conversion losses: AC-coupled sites lose a further 2.5% of output in conversion, an efficiency of 97.5%.
  • Grid export limit: Solar exported to the grid can never exceed the site’s grid connection capacity.

Co-located batteries can store solar output

When solar shares a site with a battery, the model decides how to use every unit of solar output. Solar output is split three ways:

  • Exported: Sold to the grid, within the export limit.
  • Stored: Used to charge the battery, up to the solar output available and the battery’s charging power.
  • Curtailed: Neither exported nor stored.

Energy moving from the solar into the battery loses both the AC conversion efficiency and the battery’s charging efficiency. See Co-location for how AC and DC coupling change this.

Merchant revenue is solar exports multiplied by the power price

Merchant revenue in each period is the solar exported multiplied by the wholesale power price. A site that is not exposed to negative prices does not pay to export when prices fall below zero. Revenue in negative-price periods is then counted as zero rather than as a cost.

Contracts and certificates add further revenue, and these vary by market. See the regional documentation, for example the GB Solar Forecast for Contracts for Difference (CfDs) and Renewable Energy Guarantees of Origin (REGOs).

Capture metrics measure the value of solar output

The model reports three metrics for the value of solar output against the market:

  • Capture price: The average price received for solar output, weighted by generation in each period.
  • Capture rate: The capture price divided by the time-weighted average market price. A capture rate below 100% means solar output falls mostly in lower-priced periods.
  • Profile delta: The capture price minus the average market price. A negative profile delta shows cannibalisation, which grows as solar penetration rises.

The solar model reports revenue, generation, value, and losses

The solar model provides the following outputs:

  • Revenue projections: Revenue forecasts broken down by revenue stream.
  • Generation metrics: Total generation (MWh), specific yield (kWh/kWp), and load factor (%).
  • Market value metrics: Capture price (currency/MWh), capture rate (%), and profile delta (currency/MWh).
  • Loss analysis: Clipping losses in MWh and revenue, and revenue lost in negative-price periods.