ADR 0001: Frontend-MVP, Szenario- und Reporting-Architektur¶
Status: Accepted
Datum: 2026-07-01
Kontext¶
Immohai soll im ersten Schritt als private Web-App eine schnelle, transparente und nachvollziehbare Immobilienanalyse ermöglichen.
Die zentrale Frage lautet:
Lohnt sich der Kauf dieser Immobilie im Vergleich zu einer ETF-Alternative, und wie robust ist diese Einschätzung unter Best-, Base- und Stress-Annahmen?
Für den ersten MVP wurde bewusst ein statisches Frontend gewählt. Backend, Datenbank, Login, Monte Carlo, eigener PDF-Renderer und Objektvergleich bleiben spätere Ausbaustufen.
Die fachliche Leitlinie lautet:
Ein Berechnungsmodell.
Zwei Eingabetiefen.
Keine parallele vereinfachte Berechnung.
Alle Annahmen bleiben sichtbar.
Entscheidung¶
Der Frontend-MVP verwendet eine modulare, aber einfache JavaScript-Struktur.
Die wesentlichen Module sind:
| Modul | Aufgabe |
|---|---|
app.js |
Haupt-UI, Eingaben lesen, Basisergebnisse rendern, Tabs steuern |
calculations.js |
deterministische Berechnung, Jahresprojektion, KPIs, Rating, Plausibilität |
scenarios.js |
Modellkonfiguration laden und Best/Base/Stress-Inputs erzeugen |
formatters.js |
konsistente Zahlen-, Prozent- und Jahresformatierung |
wealth-scenarios.js |
Szenario-Graph und Szenarioannahmentabelle im ETF-&-Vermögen-Tab |
scenario-sliders.js |
Quick-Mode-Slider für Szenario-Spannweiten |
dashboard-assumptions.js |
Annahmenwerte und Herkunft im Dashboard |
compact-input-panel.js |
kompakte Darstellung der Quick-Mode-Eingaben und Initial-Refresh |
reports.js |
Reporttab, Reportauswahl und Reportvorschau |
Die UI darf keine eigene Fachberechnung einführen. Sie darf Daten nur anzeigen, gruppieren, formatieren oder erklären.
Szenariomodell¶
Die Szenarien werden zentral über buildScenarioInputs(...) erzeugt.
Base ist der Referenzfall. Best und Stress werden daraus abgeleitet.
Im Quick Mode können Szenario-Spannweiten über Slider verändert werden. Diese Slider ändern nicht die Berechnungsformeln, sondern nur die Eingabewerte für Best und Stress.
Grundsatz:
Base = Referenzannahme
Best = immobilienfreundlichere Abweichung
Stress = immobilienkritischere Abweichung
Quick-Mode-Slider¶
Im MVP gibt es Slider für:
| Slider | Wirkung im Best Case | Wirkung im Stress Case |
|---|---|---|
| Mietniveau-Variation | Monatsmiete höher | Monatsmiete niedriger |
| Zinsvariation | Anfangs- und Anschlusszins niedriger | Anfangs- und Anschlusszins höher |
| Wachstumsvariation | Miet- und Wertwachstum höher | Miet- und Wertwachstum niedriger |
| Inflationsvariation | Kosteninflation niedriger | Kosteninflation höher |
| Leerstandsvariation | Leerstand niedriger | Leerstand höher |
| CAPEX-Variation | CAPEX-Quote niedriger | CAPEX-Quote höher |
| ETF-Rendite-Variation | ETF-Rendite niedriger | ETF-Rendite höher |
Die ETF-Rendite wird als Opportunitätskostenannahme behandelt. Für die Immobilienbewertung ist eine niedrigere ETF-Rendite im Best Case günstiger, eine höhere ETF-Rendite im Stress Case ungünstiger.
CAPEX wirkt besonders stark, weil capex_pct jährlich auf den Immobilienwert angewendet wird:
running_capex_y = property_value_y * capex_pct
Deshalb ist die CAPEX-Spannweite im Quick Mode bewusst begrenzt.
Reporting-Architektur¶
Die Ergebnisansicht ist in Tabs gegliedert:
Dashboard
Finanzierung
Jahresprojektion
ETF & Vermögen
Reports
Dashboard¶
Das Dashboard zeigt:
- Plausibilitätsprüfung.
- Kern-KPIs.
- Best/Base/Stress-Vergleich.
- Annahmenherkunft mit konkreten Werten.
- Modellgrenzen.
- Bewertungslegende.
Finanzierung¶
Der Finanzierungstab zeigt den annuitätsnahen Darlehensverlauf des Base Case.
Die Logik ist bewusst eine Näherung und ersetzt keinen Bank-Tilgungsplan.
Jahresprojektion¶
Die Jahresprojektion zeigt den operativen Verlauf des Base Case:
- Bruttomiete.
- Leerstand.
- nicht umlagefähige Kosten.
- CAPEX.
- NOI.
- Kapitaldienst.
- Cashflow vor Steuer.
- jährlicher und kumulativer Zuschussbedarf.
ETF & Vermögen¶
Der ETF-&-Vermögen-Tab zeigt:
- Base-Case-Vermögenssummary.
- Net-vs-ETF-Graph für Best, Base und Stress.
- Szenarioannahmen und Ergebniswerte.
- Base-Case-Detailtabelle mit Immobilienwert, Restschuld, Side Account, Immobilienvermögen, ETF-Wert und Net-vs-ETF.
Reports¶
Der Reports-Tab zeigt eine erste Reportvorschau.
Aktuelle Reporttypen:
- Investment One Pager.
- Investment Report.
- Bank Report.
Die Reports lesen vorhandene gerenderte Eingaben, KPIs, Szenarioergebnisse, Annahmen und Plausibilitätsmeldungen aus der Oberfläche.
Grundsatz:
Reports berechnen keine Werte neu.
Reports sind Vorschauen auf Basis der aktuellen Analyse.
Der aktuelle Export erfolgt über Browser-PDF-Druck. Ein eigener PDF-Renderer bleibt eine spätere Ausbaustufe.
Annahmentransparenz¶
Alle relevanten Annahmen sollen eine Herkunft haben.
Im Frontend-MVP werden insbesondere diese Herkunftstypen sichtbar:
| Herkunft | Bedeutung |
|---|---|
manual |
Nutzer hat den Wert direkt eingegeben |
default |
Wert stammt aus Modell-/Profil-Default |
object_type_adjusted |
Wert wurde durch Objektart angepasst |
scenario |
Wert stammt aus Szenarioannahmen oder Szenario-Spannweiten |
Die Annahmenanzeige zeigt nicht nur Herkunft, sondern auch konkrete Werte.
Konsequenzen¶
Vorteile:
- Die App bleibt nachvollziehbar.
- Quick Mode und spätere Expert-Ansicht können dieselbe Engine nutzen.
- Szenario-Slider sind intuitiv, ohne eine zweite Berechnung einzuführen.
- Reporting und Berechnung bleiben getrennt.
- Reportvorschauen sind bereits im statischen Frontend möglich.
- Der statische MVP bleibt ohne Backend betreibbar.
Nachteile und Grenzen:
- Szenario-Slider sind im Quick Mode vereinfachte Spannweiten, keine vollständige Expert-Konfiguration.
- CAPEX- und ETF-Sensitivitäten können über lange Zeiträume sehr starke Effekte erzeugen.
- Der aktuelle MVP zeigt Base-Case-Detailtabellen, aber noch keine vollständigen Detailtabellen für Best und Stress.
- Der aktuelle Reportexport ist Browser-PDF-Druck, kein eigener PDF-Renderer.
- Es gibt noch keine Persistenz, keinen Objektvergleich und keine Monte-Carlo-Simulation.
Nicht entschieden¶
Noch offen sind:
- genaue Struktur des späteren Expert Mode.
- ob Szenario-Spannweiten später in JSON-Konfiguration ausgelagert werden.
- ob die aktuelle Frontend-Engine später 1:1 durch eine Python-/FastAPI-Engine ersetzt oder gespiegelt wird.
- welche Kennzahlen in späteren finalen PDF-/Investment-Reports verpflichtend sind.
- ob ein späterer PDF-Export clientseitig oder serverseitig erzeugt wird.
- wie Sensitivitäten und Monte Carlo später gemeinsam dargestellt werden.