Market monitor run 2026-10-14_1852

Solar bond case (fictional project), LHoFT x STOKR. Created 2026-10-14 18:53. 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-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 months60.67 EUR/MWh2025-10-14 to 2026-10-13SMARD, 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/MWh2025-10-14 to 2026-10-13SMARD, Bundesnetzagentur
2026-10-14 18:53
ok

2. Model inputs changed, in the copy only

InputCellBase caseMarket copy
captureInputs!C214560.67

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.09x
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+153.8k
Year-1 revenue, planEUR 532.2kEUR 560.1k+27.9k
Hosts' savings after tax, year 1EUR 37.7kEUR 37.7kno change
Owner payback, years13.612.9-0.8 yrs
Owner return after tax, unlevered4.1%5.0%+0.9 pts
Owner return after tax, with the bond3.1%4.4%+1.3 pts

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

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

  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,091  table cell: Year-1 CFADS [a]
  3. 1.65x → 1.75x  table cell: Year-1 DSCR [a]
  4. 346,144 → 367,064  table cell: CFADS year 5 [a]
  5. 332,173 → 352,597  table cell: CFADS year 11 [a]
  6. 318,179 → 338,277  table cell: CFADS year 15 [a]

proposal.html

  1. 14 → 13 (check by eye)  Owners do it for Cheaper power on site, priced 20 years ahead; on 2026 prices the panels pay back in about 14 years.
  2. 1.50x → 1.59x  1.50x lowest cover in the plan (cash / payment due)
  3. EUR 2.25M → EUR 2.41M  I sized the bond to keep the cover ratio (cash available after costs and tax / payment due; lenders say DSCR) at or above 1.30x in the plan: the roofs carry EUR 2.25M, so EUR 2M fits, ranking ahead of EUR 3.1M of owner equity.
  4. 14 → 13 (check by eye); 4.1% → 5.0%  Using 70% of the power on site at the H1 2026 grid price (EUR 121.9/MWh), the panels pay back in about 14 years and return 4.1% a year after tax.
  5. 3.1% → 4.4%; 4.2 → 5.5; 4.9% → 6.1%  The bond cuts that to 3.1% (4.2-4.9% with a bank loan), as the project earns less than the coupon; they accept it to fix 20 years of power cost and start the roof programme.
  6. EUR 45 → EUR 61  Market EUR 45/MWh flat, less EUR 3/MWh fee; no premium while hosts buy
  7. EUR 1.35M → EUR 1.27M; 68% → 63%  Year 4: EUR 1.35M (68%) to refinance
  8. 1.50x → 1.59x  table cell: Minimum DSCR over bond life [a]
  9. 1.33x → 1.43x  table cell: PPA at EUR 100/MWh: plan minimum cover
  10. 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-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.