Skip to content

BESS investment trigger curve

Generated: 2026-05-08 (post full-year correction). Inputs: BNEF Lithium-Ion Battery Price Survey trajectory 2024-2035, industry-realistic O&M (50 kRM/MWh/yr, mid-Lazard LCOS 2024 4-h), full-year-corrected LP BTM-incremental savings (100 kRM/MWh/yr), 5 VPP service revenue scenarios.

VPP service revenue is the structural trigger, not capex. BESS does NOT become economic just by waiting for capex to fall. Even at the BNEF 2035 floor (USD 326/kWh = 1.5 M RM/MWh), pure BTM avoided cost delivers BESS NPV per MWh of −1,356 RM/MWh — still 100% negative.

The trigger problem decomposes cleanly:

VPP Revenue (RM/MW/mo)Effective rate contextFirst trigger yearNPV at trigger
0BTM onlyNever within horizon
30,000Modest aggregator (Tier 2 modeled)Never within horizon
60,00024/7 CFE premium @ RM 100/MWh × 30% util2031+41 RM/MWh
120,000Strong VPP stack (DRC + capacity + 24/7 + carbon)2027+84 RM/MWh
180,000Custom hyperscaler “anchor floor” PPA2025+374 RM/MWh

Reading: at sufficient VPP revenue (180k+ RM/MW/mo), BESS triggers already in 2025 at current capex. Without VPP revenue (BTM only), no amount of capex decline within BNEF’s 2035 horizon makes BESS economic.

Year-by-year NPV per MWh (RM/MWh, ”✓” = NPV ≥ 0)

Section titled “Year-by-year NPV per MWh (RM/MWh, ”✓” = NPV ≥ 0)”
YearCapex (M RM/MWh)BTM onlyTier 2 30k24/7 60kStrong 120kPremium 180k
20245.00−5,667−4,783−3,900−2,133−365
20254.40−4,928−4,044−3,161−1,394+374 ✓
20263.80−4,189−3,306−2,422−655+1,113 ✓
20273.20−3,450−2,567−1,683+84 ✓+1,852 ✓
20282.70−2,834−1,951−1,067+700 ✓+2,467 ✓
20292.30−2,342−1,458−574+1,193 ✓+2,960 ✓
20302.00−1,972−1,089−205+1,562 ✓+3,330 ✓
20311.80−1,726−842+41 ✓+1,809 ✓+3,576 ✓
20321.65−1,541−658+226 ✓+1,993 ✓+3,761 ✓
20331.55−1,418−534+349 ✓+2,116 ✓+3,884 ✓
2034+1.50 (floor)−1,356−473+411 ✓+2,178 ✓+3,945 ✓

(For a 60 MWh BESS multiply per-MWh figures by 60. Premium PPA scenario 2025 commit: +374 × 60 = +22,440 kRM = +22.4 M RM project NPV — meaningfully positive once the anchor PPA is in hand.)

The OpEx ceiling — why “wait for capex” doesn’t work alone

Section titled “The OpEx ceiling — why “wait for capex” doesn’t work alone”

BESS at 50 kRM/MWh/yr O&M and 100 kRM/MWh/yr BTM-incremental savings has a net annual cash flow of only 50 kRM/MWh/yr — even at zero capex.

Annuity at 8% × 20y = 9.82 → max NPV at zero capex = +491 RM/MWh minus year-10 augmentation ≈ stays positive at zero capex.

Said differently: even zero capex on the battery itself doesn’t push BTM NPV high enough to compensate for opex + degradation if no VPP service revenue exists. The trigger is contractual, not technological.

RM/MW/moRough USD equivalentAchievable today?Notes
30,000$79/kW/yrNot in MYUK FFR floor (~50/kW/yr);SGDRC 50/kW/yr); SG DRC ~60/kW/yr; MY would need new market
60,000$157/kW/yrUK CM upper + DRC stack — achievable today in mature markets
120,000$314/kW/yrCustom contracts onlyStacked frequency + capacity + dispatch + 24/7 CFE premium
180,000$471/kW/yrHyperscaler anchor floorSingle-customer contract floor; market-clearing rare
Year BTM 30k 60k 120k 180k
2025 ❌ ❌ ❌ ❌ ✓ ← inflection point: anchor PPA clears
2026 ❌ ❌ ❌ ❌ ✓
2027 ❌ ❌ ❌ ✓ ✓ ← inflection point: strong VPP stack clears
2028 ❌ ❌ ❌ ✓ ✓
2029 ❌ ❌ ❌ ✓ ✓
2030 ❌ ❌ ❌ ✓ ✓
2031 ❌ ❌ ✓ ✓ ✓ ← inflection point: 24/7 CFE premium clears
2032 ❌ ❌ ✓ ✓ ✓
2033+ ❌ ❌ ✓ ✓ ✓

The pure-BTM-only column never clears within BNEF’s modeled horizon. This is structural: the BTM-incremental annual cash flow (100 kRM/MWh/yr gross, 50 kRM/MWh/yr net of O&M) cannot finance a battery that cycles with ~10% RTE loss + degradation requires augmentation. Capex falling helps but not enough by itself.

Option A: Wait until 2025 if anchor PPA at 180k clears

Section titled “Option A: Wait until 2025 if anchor PPA at 180k clears”

If a hyperscaler counterparty signs a custom PPA at ≥180 kRM/MW/mo for the BESS service component, commit BESS in 2025 at current 5 M RM/MWh capex — NPV per MWh +374, project NPV +22.4 M RM at 60 MWh.

Option B: Wait until 2027–2028 if strong VPP stack at 120k clears

Section titled “Option B: Wait until 2027–2028 if strong VPP stack at 120k clears”

If the project can credibly stack DRC + capacity + 24/7 CFE premium + carbon attributes to ≥120 kRM/MW/mo, commit BESS in 2027 or 2028. NPV per MWh: +84 to +700 RM/MWh.

Option C: Wait until 2031+ at 60k RM/MW/mo

Section titled “Option C: Wait until 2031+ at 60k RM/MW/mo”

If only the 24/7 CFE premium materializes (60 kRM/MW/mo on power-rated contract = ~30% utilisation × RM 100/MWh on bundled PPA), commit BESS in 2031 at BNEF projected 1.80 M RM/MWh capex. NPV per MWh: +41 RM/MWh. Plus risk: assumes 2031 capex hits 1.80M RM/MWh per BNEF; if curve slips by 1–2 years, trigger slips correspondingly.

  • Sign the framework agreement now for BESS dispatch services with the anchor tenant. Trigger is “VPP contract signed”, not “BNEF year reached.”
  • Negotiate option price for BESS deployment in 2025–2031. Strike conditional on either (a) hyperscaler PPA carbon-attribute pricing, or (b) MY DRC market activation, or (c) BNEF capex floor + tariff regime unchanged.
  • The single most modest 60k RM/MW/mo rate clears BESS by 2031 already. Pre-position cost is low; option value is highest in 2026–2027.

The 2031 trigger year (24/7 CFE @ 60k) is sensitive to:

  • BNEF capex curve realisation (±1 year for ±15% capex drift)
  • BTM-incremental savings (currently 100 kRM/MWh — drops 5–10 kRM if ICPT reform; trigger slips 1 year)
  • Augmentation cost trajectory (modeled flat 50% — actual curves smoother)
  • Annual O&M rate (Lazard band 37–69 kRM/MWh — using 50 mid-band)

For the 120k Strong VPP stack scenario the 2027 trigger is robust to ±1 year of capex drift; the 180k Premium PPA 2025 trigger is bulletproof within current capex assumptions.