Market monitor run 2026-10-17_1055

Solar bond case (fictional project), LHoFT x STOKR. Created 2026-10-17 10:58. Public market data, written into a copy of the model.

Proposed for review. The base case and the published documents are unchanged until an analyst approves.

1. What was fetched

InputValuePeriodSource, fetchedStatus
Hosts' grid power cost: Eurostat LU band ID, excl. VAT121.9 EUR/MWh2026-S1Eurostat nrg_pc_205
2026-10-17 10:55
ok
0.1219 EUR/kWh, newest semester; dataset updated 2026-10-16 11:00.
Export price: DE-LU solar capture, trailing 12 months61.17 EUR/MWh2025-10-17 to 2026-10-16Fraunhofer ISE energy-charts API
2026-10-17 10:58
ok
Solar-weighted day-ahead price, 8,760 of 8,760 hours (UTC days); 486 negative-price hours included. Rounded to EUR 0.01.
DE-LU baseload average, trailing 12 months (context, not a model input)106.97 EUR/MWh2025-10-17 to 2026-10-16Fraunhofer ISE energy-charts API
2026-10-17 10:58
ok

2. Model inputs changed, in the copy only

InputCellBase caseMarket copy
captureInputs!C214561.17

4. Checks

Engine vs Excel copyPASS: 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 baseIn sync: 0 differences on re-export, so every change here comes from the new inputs.
Monte CarloNot re-run; its base facts (mc_facts.json) are carried over unchanged.

3. Effect on key outputs

OutputBaseMarket copyChange
Lowest cover, plan1.50x1.59x+0.10x
Lowest cover, both hosts leave yr 50.94x0.94xno change
Missed when due, both hosts leaveEUR 0EUR 0no change
Debt capacity at 1.30x (plan)EUR 2.25MEUR 2.41M+158.7k
Year-1 revenue, planEUR 532.2kEUR 561.0k+28.8k
Hosts' savings after tax, year 1EUR 37.7kEUR 37.7kno change
Owner payback, years13.612.8-0.8 yrs
Owner return after tax, unlevered4.1%5.0%+0.9 pts
Owner return after tax, with the bond3.1%4.5%+1.3 pts

5. Sentences that are stale under today's market data: 20

factsheet.html 6 (40 numbers traced, 0 unmatched); proposal.html 14 (171 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

  1. EUR 45 → EUR 61  The rest goes to the grid at the market price: about EUR 45 per MWh in 2025, changing every year.
  2. 350,692 → 373,769  table cell: Year-1 CFADS [a]
  3. 1.65x → 1.76x  table cell: Year-1 DSCR [a]
  4. 346,144 → 367,732  table cell: CFADS year 5 [a]
  5. 332,173 → 353,248  table cell: CFADS year 11 [a]
  6. 318,179 → 338,919  table cell: CFADS year 15 [a]

proposal.html

  1. 1.50x → 1.59x  1.50x lowest cover in the plan (cover: cash available after costs and tax / payment due; lenders say DSCR)
  2. EUR 2.25M → EUR 2.41M  I sized it at 1.30x cover on cash before the tax saving on interest: the roofs carry EUR 2.25M, so EUR 2M fits, ahead of EUR 3.1M owner equity (Exhibit 2).
  3. 4.6% → 5.5%  table cell: Owner return if funded from cash, no bond, after-tax savings, grid EUR 121.9
  4. 4.2 → 5.5; 4.9% → 6.2%  table cell: Owner equity return with a bank loan at KfW class E + 1% fee, after-tax savings, grid EUR 121.9
  5. 3.1% → 4.5%  table cell: Sponsor IRR incl. after-tax power savings (25 years) [a]
  6. EUR 45 → EUR 61  Market EUR 45/MWh flat, less EUR 3/MWh fee; premium allowed while hosts buy, not counted
  7. EUR 1.35M → EUR 1.26M; 68% → 63%  Year 4: EUR 1.35M (68%) to refinance
  8. 1.0x → 0.0x  Cover = cash available / payment due; below 1.1x owners get nothing; at 1.0x cash just pays.
  9. 1.50x → 1.59x  table cell: Minimum DSCR over bond life [a]
  10. 1.33x → 1.43x  table cell: PPA at EUR 100/MWh: plan minimum cover
  11. EUR 45 → EUR 61  table cell: Merchant solar capture price, year 1 (EUR/MWh)
  12. 1.59x → 1.69x  table cell: Average DSCR over bond life [a]
  13. 45 → 61  I kept 45 because the window includes the 2026 gas shock and only the 30% export depends on it.
  14. EUR 45 → EUR 61  Only from the two roofs' electricity: 70% to the businesses in the buildings (the hosts) at EUR 110 per MWh, +1% a year; the rest to the grid at about EUR 45.

Decision: monitor.py approve|reject 2026-10-17_1055 --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.