Proposed for review. The base case and the published documents are unchanged until an analyst approves.
| Input | Value | Period | Source, fetched | Status |
|---|---|---|---|---|
| Hosts' grid power cost: Eurostat LU band ID, excl. VAT | 121.9 EUR/MWh | 2026-S1 | Eurostat nrg_pc_205 2026-10-14 18:52 | ok 0.1219 EUR/kWh, newest semester; dataset updated 2026-10-13 23:00. |
| Export price: DE-LU solar capture, trailing 12 months | 60.67 EUR/MWh | 2025-10-14 to 2026-10-13 | SMARD, Bundesnetzagentur 2026-10-14 18:53 | ok Primary source failed (energy-charts: HTTP 503, 3 tries); used the secondary public source. Solar-weighted day-ahead price, 8,760 of 8,760 hours (UTC days); 471 negative-price hours included. Rounded to EUR 0.01. |
| DE-LU baseload average, trailing 12 months (context, not a model input) | 106.47 EUR/MWh | 2025-10-14 to 2026-10-13 | SMARD, Bundesnetzagentur 2026-10-14 18:53 | ok |
| Input | Cell | Base case | Market copy |
|---|---|---|---|
| capture | Inputs!C21 | 45 | 60.67 |
| Engine vs Excel copy | PASS: the Python engine (mc_engine.py) matches the Excel copy, largest difference EUR 0.000000 (Case A, Case B, Downside, IRRs, payback); it read the new inputs: yes. |
| Published facts vs base | In sync: 0 differences on re-export, so every change here comes from the new inputs. |
| Monte Carlo | Not re-run; its base facts (mc_facts.json) are carried over unchanged. |
| Output | Base | Market copy | Change |
|---|---|---|---|
| Lowest cover, plan | 1.50x | 1.59x | +0.09x |
| Lowest cover, both hosts leave yr 5 | 0.94x | 0.94x | no change |
| Missed when due, both hosts leave | EUR 0 | EUR 0 | no change |
| Debt capacity at 1.30x (plan) | EUR 2.25M | EUR 2.41M | +153.8k |
| Year-1 revenue, plan | EUR 532.2k | EUR 560.1k | +27.9k |
| Hosts' savings after tax, year 1 | EUR 37.7k | EUR 37.7k | no change |
| Owner payback, years | 13.6 | 12.9 | -0.8 yrs |
| Owner return after tax, unlevered | 4.1% | 5.0% | +0.9 pts |
| Owner return after tax, with the bond | 3.1% | 4.4% | +1.3 pts |
factsheet.html 6 (40 numbers traced, 0 unmatched); proposal.html 10 (157 numbers traced, 0 unmatched). Stale: a number the reader sees would differ at the precision shown. A dated figure (EUR 45 in 2025) stays true for its year but is listed because the model input it stands for would change. Table cells show the model row they trace to.
factsheet.html
proposal.html
Decision: monitor.py approve|reject 2026-10-14_1852 --by NAME --note "..." only adds a line to approvals.csv. The base model, its facts and the documents stay as they are until an analyst changes them by hand.