Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPBVV Immobilien Check

Rentabilitäts- und Machbarkeitsanalyse für den Ankauf von Mehrfamilienhäusern durch eine Kapitalgesellschaft. Ausgelegt auf Objekte ab 8 Wohneinheiten in B- und C-Lagen mit hohem Fremdkapitalanteil und optionalem Sanierungsbedarf.

Web-Tool öffnen (passwortgeschützt) · Excel-Modell herunterladen

Es gibt zwei Werkzeuge mit identischem Rechenkern:

Zweck
Web-Tool (index.html) Screening. Schieberegler, Ergebnisse in Echtzeit, keine Installation. Eingaben bleiben im Browser (localStorage) und lassen sich als JSON pro Objekt sichern.
Excel-Modell (xlsx/) Arbeitsmodell. 12 Blätter, durchgängig formelbasiert, an Bank und Steuerberater weitergebbar, pro Objekt kopierbar.

Beide werden bei jedem Build gegeneinander validiert (siehe Validierung).


Was das Modell rechnet

Investition und Steuerbasis

Gesamtinvestitionskosten aus Kaufpreis, Erwerbsnebenkosten (Grunderwerbsteuer je Bundesland, Notar, Makler, Due Diligence), Sanierungsbudget inklusive Puffer und Bauzeitzinsen. Aufteilung in Grund und Boden (nicht abschreibbar) und Gebäude als AfA-Bemessungsgrundlage.

15 %-Test nach § 6 Abs. 1 Nr. 1a EStG. Übersteigt der Instandsetzungsaufwand der ersten drei Jahre 15 % der Gebäude-Anschaffungskosten, werden sämtliche Instandsetzungskosten zu anschaffungsnahen Herstellungskosten und sind nur über die AfA abziehbar — der Sofortabzug entfällt vollständig. Das Modell prüft das automatisch und rechnet mit dem tatsächlich zulässigen Sofortabzug weiter. Bei Sanierungsobjekten in typischer Größenordnung greift die Regel fast immer; sie ist der größte einzelne Steuerhebel im Ankauf.

Abschreibung in drei Schichten: linear auf den Altbestand, linear auf aktivierte Sanierungskosten ab Fertigstellung, sowie erhöhte Absetzungen nach § 7h/§ 7i EStG (8 × 9 %, danach 4 × 7 %) für den begünstigten Anteil.

Ertrag und Bewirtschaftung

Sollmiete aus Wohnen, Gewerbe, Stellplätzen und sonstigen Erträgen. Lineare Annäherung der Ist-Miete an die Zielmiete bis zum gewählten Stabilisierungsjahr, danach indexierte Fortschreibung. Leerstand getrennt nach struktureller Quote und zusätzlichem Bauzeitleerstand, der über die Bauzeit anteilig ausläuft.

Nicht umlagefähige Kosten: Verwaltung je Wohneinheit, Instandhaltung je m² (getrennt für die Zeit vor und nach der Sanierung), Mietausfallwagnis und nicht umlagefähige Nebenkosten.

Finanzierung

Drei Tranchen mit monatlicher Annuität, jahresweise aggregiert:

  1. Bankdarlehen — Betrag oder Anteil an der Gesamtinvestition, mit Zinsbindung und getrennt parametrierter Anschlussfinanzierung.
  2. KfW/BEG — mit tilgungsfreien Anlaufjahren und Tilgungszuschuss.
  3. Nachrang oder Verkäuferdarlehen — wahlweise endfällig.

Die Restschuld bei Zinsbindungsende wird geschlossen berechnet, nicht rekursiv aus der eigenen Zeile abgeleitet — sonst entstünde in Excel ein Zirkelbezug.

Steuern — beide Varianten parallel

  • Variante A: erweiterte Grundstückskürzung nach § 9 Nr. 1 Satz 2 GewStG. Körperschaftsteuer plus Solidaritätszuschlag, keine Gewerbesteuer auf Miet- und Veräußerungserträge.
  • Variante B: normale Gewerbesteuerpflicht, inklusive Hinzurechnung von 25 % der Schuldentgelte oberhalb des Freibetrags (§ 8 Nr. 1a GewStG) und einfacher Kürzung.

Der kumulierte Unterschied beider Varianten über die Haltedauer inklusive Exit wird ausgewiesen — er beziffert, was die richtige Strukturierung wert ist.

Steuerliche Überleitung mit Rückrechnung des kalkulatorischen Mietausfallwagnisses und Verlustvortrag über die Laufzeit.

Exit

Verkaufspreis über Faktor auf die Jahresnettomiete oder über Zielrendite. Buchwert aus Anschaffungskosten zuzüglich aktivierter Sanierung abzüglich kumulierter AfA, Veräußerungsgewinn und Steuer in beiden Varianten, Netto-Exit-Erlös nach Tilgung der Restschuld. Daraus Eigenkapital-IRR und Equity Multiple.

Auswertungen

  • Quickcheck — Ampelbewertung: Investitionsfaktor, Nettoanfangsrendite, DSCR, Cash-on-Cash, IRR, Eigenkapitalquote, Beleihungsauslauf, Zinspuffer.
  • Break-even — Kipppunkt je Parameter mit Puffer in Prozent: Sollmiete, Miete je m², Leerstand, Zins, Anschlusszins, Kaufpreis (nach DSCR und nach Cash-on-Cash), Sanierungsbudget, Instandhaltung, Exit-Faktor.
  • Sensitivität — fünf Zwei-Parameter-Matrizen, unter anderem DSCR im ersten Jahr nach Zinsbindung.
  • Szenarien — neun Szenarien mit vollständiger Neuberechnung von Finanzierungsstruktur, Tilgungsplan, Steuern und Exit.
  • Liquiditätsbedarf der Anlaufphase, getrennt vom Eigenkapital ausgewiesen.

Die Break-even-Werte sind geschlossen gelöst, nicht iterativ gesucht — sie aktualisieren sich mit jeder Eingabe mit. Der praktisch wichtigste ist der tragbare Anschlusszins: bei 80–90 % Fremdkapital ist das Refinanzierungsrisiko der größte Einzelhebel.


Aufbau

index.html                 ausgelieferte Seite: Passwortabfrage mit verschlüsseltem Inhalt
xlsx/                      gebautes Excel-Modell
build/tool.html            unverschlüsselte Zwischenstufe (nicht versioniert)
src/
  engine.js                Rechenkern in JavaScript
  tool.template.html       Oberfläche; der Rechenkern wird beim Build injiziert
  gate.template.html       Passwortabfrage und Entschlüsselung im Browser
  build_html.py            baut build/tool.html
  encrypt.mjs              verschlüsselt build/tool.html zu index.html
  build_model.py           baut das Excel-Modell (openpyxl)
  validate.py              Validierung, siehe unten
requirements.txt

index.html, build/tool.html und die Excel-Datei sind erzeugte Dateien. Änderungen an der Rechenlogik gehören in src/engine.js (Web) und src/build_model.py (Excel) — und immer in beide, sonst laufen die Rechenkerne auseinander. validate.py erkennt genau das.

Bauen und prüfen

python3 -m venv venv && ./venv/bin/pip install -r requirements.txt
./venv/bin/python src/build_model.py            # Excel-Modell erzeugen
./venv/bin/python src/build_html.py             # build/tool.html erzeugen
SEITEN_PASSWORT='' node src/encrypt.mjs        # daraus die verschlüsselte index.html
./venv/bin/python src/validate.py               # Validierung (benötigt zusätzlich Node.js)

Das Passwort wird ausschließlich über die Umgebungsvariable übergeben. Es steht weder im Repository noch in der ausgelieferten Seite; encrypt.mjs bricht ab, falls es das dort findet.

Zugangsschutz

GitHub Pages ist statisches Hosting und kennt keine Zugangskontrolle. Eine Passwortabfrage in JavaScript allein wäre wirkungslos — der Quelltext ist für jeden lesbar. Deshalb wird nicht der Zugang geprüft, sondern der Inhalt verschlüsselt:

  • Aus dem Passwort leitet PBKDF2-HMAC-SHA-256 mit 600.000 Iterationen einen 256-Bit-Schlüssel ab.
  • Die gesamte Seite wird mit AES-256-GCM verschlüsselt; ausgeliefert werden nur Salt, IV und Chiffrat.
  • Die Entschlüsselung läuft im Browser über die WebCrypto-API. Das Passwort verlässt das Gerät nicht, es gibt keinen Server, der es prüft.

Ohne Passwort ist der Inhalt nicht rekonstruierbar — auch nicht aus dem Seitenquelltext.

Grenzen, die daraus folgen:

  • Das Passwort ist das einzige Geheimnis. Wer es kennt, hat Zugriff; es lässt sich nicht einzeln entziehen, nur für alle gemeinsam wechseln.
  • Das Chiffrat ist öffentlich abrufbar und damit offline angreifbar. Die hohe Iterationszahl macht das teuer, ersetzt aber kein ausreichend langes Passwort.
  • Passwortwechsel heißt: encrypt.mjs mit dem neuen Passwort erneut ausführen und die neue index.html pushen. Wer die alte Datei zuvor gespeichert hat, kann sie mit dem alten Passwort weiterhin öffnen — die Git-Historie enthält sie ebenfalls.
  • Für echte, entziehbare Zugangskontrolle bräuchte es ein Hosting mit serverseitiger Authentifizierung; das leistet GitHub Pages nicht.

Validierung

src/validate.py prüft drei Dinge:

  1. Namenskollisionen. Ein benannter Bereich wie FK1 ist zugleich eine gültige Zelladresse (Spalte FK, Zeile 1) — Excel würde ihn als Zellbezug lesen und still einen leeren Wert liefern. Alle 257 Namen werden dagegen geprüft.
  2. Vollständige Neuberechnung der Excel-Datei mit einer unabhängigen Formel-Engine; jede Fehlerzelle wird gemeldet. Dieser Schritt hat Zirkelbezüge in den Tilgungsplänen aufgedeckt, die durch geschlossene Formeln ersetzt wurden.
  3. Abgleich beider Rechenkerne über 27 Kennzahlen und alle neun Szenarien. Toleranz 10⁻⁶; erreicht werden derzeit rund 10⁻¹⁵, also Maschinengenauigkeit.

Zusätzlich validieren sich die Break-even-Formeln selbst: setzt man den Ziel-DSCR gleich dem tatsächlichen DSCR, geben alle Kipppunkte exakt die aktuellen Eingabewerte zurück.


Grenzen

Kalkulations- und Entscheidungsinstrument, keine Steuer- oder Rechtsberatung.

Bewusste Vereinfachungen: Vollvalutierung im Zeitpunkt 0, monatliche Annuitäten, keine Mindestbesteuerung nach § 10d EStG, keine gesondert geführten gewerbesteuerlichen Fehlbeträge, keine Grunderwerbsteuer-Besonderheiten bei Share Deals, keine Umsatzsteuer bei Gewerbeeinheiten, keine Besteuerung auf Gesellschafterebene.

Die hinterlegten Grunderwerbsteuersätze im Blatt Referenz ändern sich länderweise und sind vor Verwendung zu prüfen. Die Beispielwerte sind ein plausibel kalibrierter Modellfall, keine Marktrecherche.

Der Zugangsschutz der veröffentlichten Seite ist Verschlüsselung mit einem gemeinsamen Passwort, keine Benutzerverwaltung — siehe Zugangsschutz.

Ergebnisse vor Ankauf mit Steuerberater und Finanzierer verifizieren.

About

IPBVV Immobilien Check – Rentabilitäts- und Machbarkeitsanalyse für den Ankauf von Mehrfamilienhäusern: Excel-Modell und passwortgeschütztes Web-Tool mit identischem Rechenkern

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages