| Vose Software

Industry: Energy
Product: ModelRisk
Application: Probabilistic forecasting of wind and solar output for PPA pricing


Pricing a 600 MW Wind PPA: Probabilistic Output Forecasting in ModelRisk

A corporate offtaker is negotiating a 12-year virtual PPA on a 600 MW onshore wind farm in West Texas at a strike of $32/MWh. The developer's pro forma says expected annual generation is 2.21 TWh (capacity factor 42.1%) with a P50/P90 ratio of 0.91 — numbers that drive the financeable revenue stream and therefore the offtaker's mark-to-market exposure. Both sides know that the P50 is wrong in the long run because of climate-trend de-rating, and that the P90 underestimates the joint risk of a low-wind year coinciding with depressed power prices. The offtaker built a Monte Carlo forecasting model in ModelRisk to price the contract on its actual distribution of outcomes, not on a P50.

Simulating 50,000 twelve-year contract paths puts the whole story in one picture: the median lands on the developer's 2.21 TWh, but the financeable 90%-exceedance case (P90) is 1.946 TWh — below the developer's quoted P90 of 2.01 TWh, not above it.

Annual generation distribution — 600 MW wind farm

Where the forecast uncertainty actually lives

Wind output uncertainty decomposes into three sources that compound rather than add:

  • Inter-annual resource variability: long-run annual mean wind speed at hub height varies from year to year with a coefficient of variation of about 6%, fitted from 35 years of MERRA-2 reanalysis at the site. Modelled as Normal(μ = 7.8 m/s, σ = 0.47 m/s) on annual mean.
  • Intra-hour generation per m/s: power curve uncertainty captured by the Beta(α = 6, β = 1.4) shape of the conversion factor relative to nameplate. Beta is bounded, which the conversion must be — Normal here would allow negative or >100% capacity.
  • Long-term degradation: annual capacity loss modelled as LogNormal(μ_log = ln 0.6%, σ_log = 0.25), cumulating over contract life. The mean and median diverge over 12 years — and the diverged tail is what the bank financing the project actually cares about.
  • Power-price linkage (valuation layer): the simulated generation distribution is then valued against the forward price deck, where West-Texas wind output is negatively correlated with day-ahead price (ρ = -0.31, from ERCOT-West history) — a generated MWh is worth less in the very hours generation is highest. The PPA valuation applies this linkage and stresses it as a Clayton-copula tail-dependence assumption (θ = 0.6) for the lower-tail co-movement (low-wind + scarcity) a Gaussian dependence misses; the tornado below quantifies how sensitive contract value is to it. Note this price linkage is a valuation overlay on the generation simulation, not a term inside the 50,000-path output model itself.

Annual generation: what the deterministic projection missed

50,000 simulated 12-year contract paths produced the annual-generation distribution and the cumulative revenue distribution under the PPA strike.

The deterministic P50 of 2.21 TWh matches the simulation median to within 0.3%. The P90 of 2.01 TWh — the financeable case — is 3.3% optimistic relative to the simulated P90 of 1.946 TWh once long-term degradation and a 6% inter-annual CV are propagated through 12 years. A 3.3% generation shortfall at a $32/MWh strike, levered, is roughly 180 basis points off the equity IRR. The bank repriced its debt service coverage ratio covenant accordingly.

What actually drives the PPA's MTM value

Tornado: drivers of 12-year PPA mark-to-market

The wind–price anti-correlation parameter is the single biggest driver of MTM, more than the generation level itself. This is exactly the term that gets dropped from pro-forma spreadsheets: the developer's model treated generation and price as independent, which over-states the merchant-equivalent value of the contract by 11% — and over-states it most exactly when the offtaker is taking it.

Curtailment and battery sizing

The same simulation downstream-models curtailment (lost MWh when local LMP < $-5/MWh, ERCOT-West's congestion floor) and the value of a co-located battery to time-shift those MWh.

Annual curtailment distribution — with and without 100 MW / 400 MWh BESS

Unmitigated curtailment averages 7.4% of generation, with a P90 of 13.6%. A 100 MW / 400 MWh co-located BESS reduces curtailment to a mean of 3.1% (P90 of 5.8%) — a delta worth roughly $4.8M/year at the simulated price stack. Sized purely on the mean, a 60 MW battery would have been chosen; sized to keep curtailment-induced revenue loss inside ±$2M with 90% confidence, the 100 MW system is the right answer. The battery is being sized off the forecast distribution, not the forecast.

What changed

  • PPA strike repriced from $32.00/MWh to $31.20/MWh after the offtaker priced the wind–price anti-correlation into the merchant-equivalent value calculation — an estimated $9.6M present-value concession (the dominant valuation sensitivity in the tornado) that closed the deal.
  • DSCR covenant restructured to use the simulated P95 generation rather than a P90 with 5% headroom, removing the false precision in the lender's coverage test.
  • Co-located battery sized at 100 MW / 400 MWh rather than the deterministic-mean answer of 60 MW, on the basis of P90 curtailment exposure rather than mean curtailment.
  • Climate-trend de-rating made explicit at 0.6%/year LogNormal in the financial model — previously buried in a fixed 0.5%/year point input that under-priced the 10th-percentile financeable case.

ModelRisk Functionality Used

  • Inter-annual wind-resource Normal fit (CV = 6%) to 35 years of MERRA-2 reanalysis — the resource variability term most often understated in PPA models.
  • Beta-bounded power-curve conversion between hub-height wind speed and capacity-factor MWh — keeps the simulator inside physical bounds.
  • Clayton-copula wind-price tail-dependence assumption (θ = 0.6) applied in the PPA valuation overlay — captures the lower-tail co-movement (low-wind + scarcity) a Gaussian dependence misses, and ranked by the tornado as the dominant value sensitivity.
  • LogNormal long-term degradation compounded over 12 contract years — divergence of mean and median is what the bank covenants test.
  • Curtailment overlay that produced the BESS sizing decision on a distribution-of-curtailment rather than mean-curtailment basis.
  • PPA valuation overlay that applied the wind–price anti-correlation to the simulated generation distribution, quantifying the ~$9.6M PV strike concession the offtaker negotiated.

A wind farm's forecast is not a number, it is a joint distribution with price. Monte Carlo simulation in ModelRisk is what lets both sides of a PPA price the joint, not the marginals.