Indonesia WtE Platform

Phase 2 · Step 4 — Financial Model Architecture

Architecture memo for the project-finance model build. Revised 2026-05-16.

1. What this model architecture is

Architecture blueprint for the financial model — sheet structure, anchor input map, output specifications, sensitivity scope, and execution tooling. The build steps execute against this architecture; no architectural decisions taken inside the build steps. Every input is anchored and used unmodified in the model build.

2. Model architecture & workbook structure

Architecture principle: three SPV-level financial models built from a single template, differing only by input parameter values. Each SPV produces standalone Project IRR / Equity IRR / DSCR / NPV. A separate portfolio summary file aggregates the three SPVs into single-investor returns and a consolidated cash-call profile.

Horizon: 25 years per SPV under the 1+2+22 structure — 1 year approvals + 2 years construction + 22 years operations with revenue. Portfolio horizon runs Oct 2026 (Pasarjaya award) through Oct 2052 (Lamsel concession end), 26 years end-to-end.

Capital structure layer: equity drawdown (1% / 59% / 40%) at 30% of CAPEX overlaid with a 10-year senior commercial loan at 7.0% drawn alongside equity across the three-year pre-commissioning window (1 approvals + 2 construction). Interest during construction is PIK'd and capitalized to PP&E. At each SPV's COD, the loan balance refinances at par into a 22-year amortizing senior bond at 7.0%. Bond tenor matched to the remaining 22-year operations concession at each SPV.

Currency: USD-denominated throughout. CBG offtake is USD-indexed; CAPEX equipment sourcing is largely USD/EUR; local IDR cost items converted at a single locked FX assumption.

Modeling unit: annual cashflows across all 25 years (1 approvals + 2 construction + 22 operations). v01 used quarterly granularity for the pre-commissioning window; v02 collapsed to annual since the 10-year loan and 22-year bond both amortize annually and the quarterly precision delivered no analytical benefit.

VAT treatment: PPN at 11% on equipment CAPEX (70% of CAPEX assumed VAT-able) is modeled explicitly as a working-capital drag. Input VAT paid during construction accumulates as a refund receivable on the balance sheet; the Indonesian DJP refund processing lag (~12 months) means the receivable peaks at end of Year 2 (largest CAPEX year) and clears in Year 4. Output VAT on CBG sales is pass-through (collected then remitted), modeled as cashflow-neutral. PMK 115/2021 Strategic Goods exemption flagged as upside subject to Indonesian tax-counsel confirmation.

2.1 Workbook architecture

The model is delivered as four Excel files in 05_generated_FM/:

File Purpose
FM_PDPasarjaya_v02.xlsx Pasarjaya standalone — 11 sheets (full P&L / IS / BS / CF)
FM_Bandung_v02.xlsx Bandung standalone — same 11-sheet architecture
FM_Lamsel_v02.xlsx Lamsel standalone — same 11-sheet architecture
FM_Portfolio_Summary_v02.xlsx Consolidated portfolio view — dashboard, calendar-year cashflow, portfolio P&L / BS / CF / Returns

Each per-SPV file uses an identical 11-sheet template:

# Sheet Purpose
00 Cover_Summary Headline outputs (Project IRR, Equity IRR, NPV, peak equity, min DSCR, lifetime NPAT) + capital-structure block + v02-vs-v01 delta table
01 Inputs All locked anchors (yellow input cells); single source of truth
02 Revenue CBG sales line + Carbon credit upside line (10% × CBG, kept separate) + Tipping fee (Bandung only); ramp curve; revenue-mix memo
03 OPEX Feedstock handling + plant ops + maintenance + insurance + G&A + land rental — utilization-scaled
04 CAPEX_Depreciation PP&E gross roll-forward (CAPEX + capitalized IDC) + accumulated depreciation (22-yr SL) + PP&E net
05 Loan_Repayment Construction loan Y1-Y3 (7%, PIK) + bond Y4-Y25 (7%, 22-yr amortizing); annual interest + principal + outstanding balance
06 Tax CIT (PMK 130/2020 5-year holiday + 22% thereafter) + VAT (input paid, refund received, receivable balance, ΔWC)
07 PL_IS Income Statement (Revenue → OPEX → EBITDA → D&A → EBIT → Interest → Pretax → CIT → NPAT) + margin lines
08 Cashflow CFO / CFI / CFF; VAT working-capital line broken out separately; CFADS and FCFE memo lines
09 Balance_Sheet Assets (cash, VAT receivable, PP&E net) / Liabilities (debt outstanding) / Equity (paid-in + RE) + balance-check row (must = 0 every period)
10 Returns_DSCR Period-by-period DSCR + headline block (Project IRR, Equity IRR, NPV, peak equity, cash-on-cash, payback)

The portfolio summary file contains five sheets:

# Sheet Purpose
00 Cover_Summary Per-SPV breakdown + portfolio headline returns dashboard
01 Calendar_Cashflow Equity / loan / CAPEX / debt service / dividends per SPV × per calendar year (2026-2051)
02 Portfolio_PL_IS Calendar-year aggregated P&L across all 3 SPVs
03 Portfolio_Balance_Sheet Aggregated assets / liabilities / equity by CY + balance-check row
04 Portfolio_Returns_DSCR Portfolio CFADS, debt service, DSCR per CY + headline returns block

Build and validation scripts live at 06_code_files/: build_per_spv_FMs_v02.py, build_portfolio_v02.py, validate_FMs_v02.py, run_cbg_price_sensitivity_v02.py.

Design choice — calc-first model. v02 takes a different design from v01: Python (compute_model() in build_per_spv_FMs_v02.py) is the canonical model, and the .xlsx files are read-only renderings of computed values. v01 used Excel formulas pointing at named cells — useful for "live edit" but fragile across 1300+ lines of formula bookkeeping. v02 trades the live-edit capability for ~25% less code, easier validation (BS balance check, CF reconciliation, IRR sanity), and zero formula-error risk. The sensitivity engine (run_cbg_price_sensitivity_v02.py) calls compute_model() directly with parameter overrides, so the same calc backbone powers both the base case and the sensitivities.

3. Anchor inputs from Phase 1

Every input below is anchored and used unmodified in the model build.

3.1 CAPEX

  • Per SPV (USD M): Pasarjaya 11 · Bandung 15 · Lamsel 14 → Portfolio 40
  • Drawdown profile (each SPV): Approvals Year 1 1% · Construction Year 1 59% · Construction Year 2 40%
  • Award sequence: Pasarjaya Oct 2026 · Bandung Apr 2027 · Lamsel Oct 2027
  • COD sequence: Pasarjaya Oct 2029 · Bandung Apr 2030 · Lamsel Oct 2030

3.2 OPEX

  • Scaling basis: Penang reference plant operating data, applied per SPV by capacity
  • Categories: feedstock handling, plant operations, maintenance, insurance, G&A, parasitic load (5–10% of biogas production)
  • Site-specific adjustments: Bandung in-kind MRF reduces OPEX scope; Lamsel light MRF adds OPEX vs Pasarjaya pre-sorted feedstock
  • Pasarjaya in-kind logistics: PD Pasarjaya BUMD bears feeder-truck logistics from 153 markets to transfer stations as in-kind support; Pasarjaya feedstock handling reflects bulk-haul + plant processing only, not feeder logistics

3.3 Revenue

  • CBG anchor: USD 15/MMBTU, firm long-term offtake, USD-denominated, all 3 SPVs
  • Counterparties: PGN (grid where available) · Pertamina (off-grid via truck-mounted distribution) · alternative qualified buyers at prevailing CBG market pricing
  • Tipping fee: 40% share of Kota Bandung waste-disposal payment — Bandung only
  • Carbon credits: AD methane-avoidance volumes across all 3 SPVs; standard open (IDXCarbon · Verra · Gold Standard)

3.4 Operating parameters

  • Utilization target: 90%+ steady state (80% Year 1 ramp); Penang reference benchmark
  • Hydraulic Retention Time: 25–35 days CLAD
  • Raw biogas methane content: 55–65%, upgraded to ≥97% CBG via membrane or PSA
  • Parasitic load: 5–10% of biogas production
  • Biogas yield: MSW organic ~80–120 m³/tonne · animal feedstock ~300–500 m³/tonne (3–5× uplift)
  • Animal feedstock: 75 tpd at Lamsel and Bandung — ~15–20% of mass, ~25–40% of biogas output
  • Total organic feedstock: Pasarjaya 315 · Bandung 425 · Lamsel 325 → Portfolio 1,065 tpd

3.5 Capital structure

  • Bridge debt: drawn alongside equity through the 3-year pre-commissioning window (1 approvals + 2 construction); sized to maintain DSCR feasibility post-refi
  • Bond refinancing: at each SPV's COD; tenor matched to the remaining 22-year operations concession
  • DSCR target: minimum ≥ 1.30× · average target 1.50–1.80×
  • Equity / debt split: finalized in p3 from DSCR-binding constraint; project-finance norm ~70/30 debt-heavy as starting reference

3.6 Tax & regulatory

  • PMK 130/2020 tax holiday: 5-year holiday at 100%; all 3 SPVs within qualifying CAPEX bracket
  • Corporate tax post-holiday: Indonesia statutory rate (locked assumption in p3)
  • Carbon tax / pricing regime: held flat in base case; carbon revenue is upside, not back-solve lever

3.7 Currency & macro

  • CBG revenue: USD-denominated → no FX exposure on the primary revenue line
  • CAPEX sourcing: USD/EUR (Europe critical equipment) · USD/CNY (China non-critical) · IDR (local content)
  • OPEX: mixed USD/IDR — single locked FX assumption in p3, not a forecast curve
  • Inflation: locked assumptions in p3 (separate USD and IDR rates)
  • Discount rate / WACC: locked assumption in p3 from infrastructure-investor benchmarks

4. Outputs & sensitivities

4.1 Base-case outputs

Metric Computed at Target
Project IRR Per SPV + Portfolio 15% (validate)
Equity IRR Per SPV + Portfolio 20% (validate)
Minimum DSCR Per SPV ≥ 1.30×
Average DSCR Per SPV 1.50–1.80×
NPV at locked discount rate Per SPV + Portfolio Positive
Payback period Per SPV + Portfolio Reported
Peak equity outstanding Portfolio Reported (sizes the raise)

Validation logic: if base-case Project IRR or Equity IRR falls short of target, back-solve via variable lever in this priority order: (1) CBG offtake price uplift · (2) carbon-credit pricing assumption · (3) tipping-fee rate (Bandung only) · (4) capital-structure leverage adjustment.

4.2 Sensitivity scope

Single-variable tornado (Equity IRR axis): - CBG price ± 20% (USD 12–18/MMBTU) - Utilization ± 10% (80–100%) - CAPEX ± 15% - OPEX ± 20% - Discount rate / WACC ± 200 bps - Carbon-credit price ± 50% - Co-digestion biogas yield ± 25%

2-variable matrices (Equity IRR cell values): - CBG price × Utilization - CAPEX × OPEX - CBG price × Carbon-credit price

5. Tooling & execution approach

Build tool: model-builder subagent. Custom subagent installed at .claude/agents/model-builder.md, designed for Excel project-finance models. Subagent runs on the project .venv (openpyxl 3.1.5, xlsxwriter 3.2.9, pandas 3.0.3 per ENVIRONMENT.md).

Execution decisions: - Audit trail: every formula in each SPV file traceable to a named input cell in 00_Inputs; no hard-coded numbers in formulas - Sensitivity engine: Excel data tables for 2-variable matrices; tornado via single-variable solver - Output format: Excel .xlsx for the working models; PDF export of key sheets for deck-source reference - Build artifacts: Python build and validation scripts stored at 06_code_files/ for full regeneration capability

6. Anchor assumptions

  1. Anchor inputs used unmodified in the model build. CAPEX 11/15/14, drawdown 1/59/40, CBG USD 15/MMBTU, 75 tpd animal feedstock at Lamsel + Bandung, 90%+ utilization (80% Year 1 ramp), DSCR ≥ 1.30×, PMK 130 tax holiday.

  2. Three SPV-level FMs built from one template — same model structure, differing only by input parameter values. Enables clean side-by-side comparison and consistent portfolio rollup in the portfolio summary file.

  3. Quarterly cashflow granularity for the 48-month pre-commissioning window (1 approvals year + 2 construction years per SPV, staggered six months apart); annual rollup for the 22-year operations period keeps the workbook auditable without sacrificing pre-commissioning precision.

  4. USD denomination with single locked FX assumption for IDR cost items. CBG revenue is naturally USD-indexed; mixed-sourcing CAPEX/OPEX requires a locked FX assumption (single rate, not a forecast curve) in p3 base case.

  5. Validate base-case IRR against 15% / 20% targets first; back-solve any gap via lever priority: CBG price → carbon price → tipping fee (Bandung) → leverage.

  6. Build delivered via the model-builder subagent. Subagent invocation runs on the project venv.