← EnergyViewInvestment-only scenario comparison
The ordinary measured/planned home recommendation is unchanged. Investment research now evaluates three cases per tested combination: selected tariff basis, no positive variable injection revenue, and the same no-income case with 10% less added PV production and 15% higher estimated capital components. The two stress settings are configurable and labelled as policy assumptions, not probability estimates.
investment-risk.js wraps the existing invoice engine. It adds back only positive quarter injection revenue, preserving negative prices, export subscriptions, taxes, capacity charges and the original first-year/recurring discount treatment. Its output is checked against a real Eneco dynamic tariff invoice. Battery alternatives are redispatched using the existing causal practical policy for conservative cases; the original mode-1 physical schedule remains a separately labelled exact row and never becomes a fresh automatic battery recommendation.
Reference contracts without any purchase are evaluated before heavy battery searches. Each scenario selects the cheapest tested no-purchase reference over the complete 15-year horizon. Scenario net benefits subtract all candidate capital, invoices, known battery maintenance and explicitly early replacements. The optional discount column discounts these same annual purchase-only differences and does not control recommendation or sorting. Legacy npv and financial fields retain their previous current-contract meaning for compatibility; user-visible purchase recommendations use riskPolicy and row scenarios exclusively.
A battery must provide at least EUR20 per nominal kWh per year beyond the same contract/profile without storage in the no-positive-injection case. Missing scenario outcomes are unavailable, never zero. Within budget, the automatic investment proposal maximises positive undiscounted no-positive-injection net benefit; otherwise it selects no purchase. Large PV is allowed to win if its conservative benefit is actually higher.
Only estimated capital parts receive the stress markup. An exact-size supplied PV/battery quote is not inflated; scaling a PV quote to another size makes that component an estimate. Known electrical-work estimates remain estimates. Optional entered AC inverter power caps added PV quarter output. Unknown clipping, technical roof/grid suitability, unpriced repairs, financing and constant 15-year performance are explicitly disclosed. Exact mode-1 battery schedules are not fabricated for a lower-PV stress case; separately simulated alternatives provide that comparison instead.
Verification: complete repository suite (133 files), negative-price/fees/cash-flow/budget/quote tests, and actual tariff engine on a synthetic 35,040-quarter year (23 combinations across all 3 scenarios). Product browser route tested with a synthetic year: investment worker completed 72/72 combinations; all columns rendered; changing the comparison discount rate changed only that column. No personal profile was published.