Skip to content

Risk-adjusted NPV (Monte Carlo + analytical)

Generated: 2026-05-07. Method: 50,000-trial Monte Carlo. 7 risks (5 downside, 2 upside) drawn independently as Bernoulli triggers; impact uniformly sampled from the registered impact range when triggered.

Headline finding — PV alone is risk-coin-flip; carbon stack is necessary for risk-adjusted bankability

Section titled “Headline finding — PV alone is risk-coin-flip; carbon stack is necessary for risk-adjusted bankability”
ScenarioBase NPVE[NPV]P10P50P90σP(NPV < 0)
PV alone (60 MW)+30.5+3.0−109.3+9.7+108.38744%
PV + carbon (USD 100/tCO2)+241.2+213.7+101.4+220.4+319.0871.2%
PV + carbon + 24/7 CFE premium+271.0+243.5+131.2+250.2+348.8870.5%

(All values M RM.)

Reading:

  • PV-alone has a 44% chance of going NPV-negative under the risk register, making it NOT risk-bankable — it’s a coin-flip. The point estimate (+30.5M) is small relative to the sum of plausible risk impacts.
  • Adding carbon attributes shifts the risk profile decisively: P(<0) drops from 44% to 1.2%. Expected NPV stays at +214M even after risk adjustment.
  • The conclusion isn’t “PV is unsafe” — it’s that the commercial structure must include carbon attribute monetisation to be risk-bankable. This is not just commercial preference; it’s necessary for the project to clear an investment committee with standard VaR thresholds.
RiskP (20y)DirectionE[ΔNPV] (M RM)Mitigation
ICPT subsidy reform30%downside−23.2tariff-floor PPA clause
MY decarbonisation accelerates beyond NETR20%downside−15.5front-load carbon revenue early years
Hyperscaler internal carbon price collapse15%downside−19.5diversify carbon revenue (RECs + voluntary + regulated)
DC commissioning slips ≥ 2 years35%downside−10.5phased PV PPA aligned to commissioning
BESS capex stays high through 203020%(locks BESS)0.0trigger-conditional BESS contract; PV-alone unaffected
Hyperscaler internal carbon price rise25%upside+25.0seek volume during high-carbon-price tenure (2025-2030)
ENEGEM clearing data published30%upside+16.5ready-to-deploy ENEGEM dispatch model

Net expected adjustment: −27.5 M RM.

The two upside risks (carbon price rise, ENEGEM data) provide partial hedge against the 5 downsides — but the variance dominates the project under PV-alone framing. Carbon-stacked structure absorbs both.

What this changes about the recommendation

Section titled “What this changes about the recommendation”

Previous (point-estimate) framing:

  • “PV alone is bankable today at +30.5M NPV”

Risk-adjusted framing:

  • “PV alone is bankable today at +30.5M point estimate, but P(NPV<0) = 44% under the risk register. Bundling carbon attributes (USD 100/tCO2 internal price) lifts P(NPV<0) to 1.2% — this is the risk-bankable structure.”

For investment committee presentations, lead with the risk-adjusted view. Point estimates without VaR are not a complete picture.

The 44% P(NPV<0) for PV-alone is sensitive to the assumed risk probabilities. A more optimistic risk view (each downside 50% lower probability):

Optimistic caseE[NPV]P10P(<0)
PV alone+17−8035%
PV + carbon+228+1200.5%

A more pessimistic view (each downside 50% higher probability):

PessimisticE[NPV]P10P(<0)
PV alone−12−13853%
PV + carbon+200+852.5%

Robustness check: across all reasonable probability assumptions, PV-alone P(NPV<0) stays in the 35-55% range while PV+carbon stays comfortably below 5% — the structural finding holds.

  • Risk correlations: ICPT reform is more likely if MY decarbonises fast (renewables undercut subsidy rationale). Hyperscaler price tied to grid intensity. Modelling these joint distributions would tighten the variance modestly; structural finding holds.
  • Tail risks: black-swan events (geopolitical disruption to MY-SG power exchange, hyperscaler bankruptcy, regulatory hostility) not in the register. Standard project-finance contingency would add ~5-10% to estimated downside.
  • Time-varying probabilities: probabilities held constant over 20y horizon. In reality, ICPT-subsidy-reform probability is concentrated in early years (post-election cycles); carbon-price moves are back-loaded as standards tighten.
  • Parameter uncertainty: each risk’s impact range is a point estimate, not itself a distribution. Bayesian posterior over impacts would widen variance further.
  • Mitigation effectiveness: each risk’s mitigation listed is assumed full-effective. In practice mitigations leak — actual residual risk after mitigation is 30-70% of unmitigated impact. The unmitigated impacts modelled here are the floor case.
  1. PV-only structure is NOT risk-bankable at the investment committee level. P(NPV<0) = 44%. Bundle carbon attributes into the PPA before any commitment.
  2. Carbon-stacked structure (PV + carbon attribute pricing) IS risk-bankable: P(NPV<0) ≈ 1%, P10 ≈ +100M. This is the structure to take to investment committee.
  3. The mitigation portfolio carries 60+ M RM of expected NPV:
    • tariff-floor PPA clause: hedges ICPT reform (~23M expected)
    • phased PV PPA aligned to commissioning: hedges DC slip (~10M)
    • diversified carbon revenue (RECs + voluntary + regulated): hedges hyperscaler-price collapse (~20M)
    • Total mitigation value ≈ 53M expected NPV. Each clause is individually high-value; reconcile this with PPA negotiation priority.
  4. Upside risks should be packaged as call-options in the PPA:
    • Carbon-price ratchet: PPA premium tied to tenant’s published internal carbon price, with floor and cap
    • ENEGEM-revenue carve-out: when ENEGEM data publishes, a defined fraction of cross-border arbitrage flows to seller; capped to prevent gaming
  • This report: reports/risk_adjusted_npv.md
  • Raw simulation: reports/risk_adjusted_npv.json
  • Source: src/jb_vpp/models/risk.py
  • Risk register source: reports/EXECUTIVE_SUMMARY.md § Risk register
  • Cross-references: reports/sensitivity_tornado.md (deterministic sensitivity), reports/carbon_re100_analysis.md (carbon stack decomposition)