Technical reference for the Hamburg Bismarckstraße deal — answering every question from the workshop catalog with sheet references, formulas, and visual walkthroughs.
Model Architecture
D2G v5.5.0 is organized in three tiers — Input → Calculation → Output. Every sheet is prefixed with a code that tells you its role:
| Prefix | Sheet | Role |
|---|---|---|
| 3A | CRM_INPUT | Market rent tiers from CRM (7 size cohorts, lower/mid/upper) |
| 2F | Input Rent Roll | Unit-level lease data (145 resi + 14 commercial + 56 parking) |
| 2E | Output Rent Roll | Monthly rent projections per unit (BGB, Staffel, Index logic) |
| 2B | GRI | Aggregated gross/net rental income by cohort |
| 2H | Subsidies | KfW, IfB, DUS grant & loan programs |
| 2A | CF Engine | 48-month cash flow: NOI, CAPEX, debt service |
| 2C | P&L + Tax Engine | P&L waterfall, depreciation, corporate + trade tax |
| 2D | Promote & IRR | Investor/GP waterfall with 3 hurdle tiers |
| 2G | Sensitivity | 2D matrices (exit month × multiple, rent × CAPEX) |
| 1A | Invest. Memo | IC-ready executive summary |
| 1B | IC Charts | Visual presentation charts for the Investment Committee |
This is the dependency map Ansgar asked about (Q8). Every arrow is a real cross-sheet formula reference.
Every arrow represents a live cross-sheet formula reference in D2G v5.5.0
The 1A Invest. Memo is not a passive printout — it contains toggle switches and linked formulas that pull from the calculation sheets. However, the heavy lifting happens in three sheets:
The memo (1A) and charts (1B) reference these via cross-sheet lookups. You can trust the memo values, but to audit them you must trace back to 2A/2C/2D.
Ansgar Q1 & Q2
| Input | Where | What It Means | Impact |
|---|---|---|---|
| EK Draw | 2A row 62+ | "Eigenkapital-Abruf" — the equity drawdown schedule. Determines when investor cash is called (months 0-48). | Very High. Timing directly shifts IRR — earlier draws dilute returns. The model distributes equity calls across CAPEX milestones. |
| LTV | 2A row 80+ | Loan-to-Value — ratio of senior debt to asset value. Drives debt quantum and interest cost. | Very High. Higher LTV = more leverage = higher IRR if returns > cost of debt, but more downside risk. Typical range: 55-70%. |
| CAPEX (EE / TI / General) | 2A rows 43-56 | Three categories: Energy-Efficiency (EE: €875/m²), Tenant Improvements (TI: €712/m²), General maintenance. | Very High. EE-CAPEX alone = €6.99M on this deal. It unlocks subsidies (2H) and rent upside via Modernisierungsumlage. TI-CAPEX triggers on churn events. |
| Subsidies | 2H rows 6-19 | Government grants (KfW, IfB) that offset CAPEX. On this deal: €7.16M total. | High. Subsidies cover ~50% of EE-CAPEX. Without them, levered returns drop dramatically. But timing risk exists ("cash traps"). |
| Target rents | 3A CRM / 2B GRI | Expected achievable rents by size cohort at exit. Resi entry: €7.24/m²; commercial: €17.26/m². | Very High. The exit multiple × GRI at that date = terminal value. A €0.50/m² swing can shift IRR by 200+ bps. |
| Exit month & multiple | 2G Sensitivity | When the asset is sold and at what yield. Base case: month 48, multiple ~23x. | Very High. The single biggest lever. See Sensitivity tab for matrices. |
| Building metrics | 2F col J | Total NLA (9,501 m²), unit count (215), vacancy (2.6%), average lease age, Wohnlage (location quality). | Medium. These are structural — they set the ceiling for rent potential and subsidy eligibility. |
The model does not hard-block unrealistic inputs — it will happily calculate a 200% LTV scenario. However, several soft constraints exist:
Felix — Rent Roll Deep Dive
| Columns | Content | Notes |
|---|---|---|
| A–E | Unit ID, status, address, location, type | Type = "Wohnen" (resi), "Gewerbe" (commercial), "Stellplatz" (parking) |
| J | Fläche (m²) | Mandatory. Drives all per-m² calculations. |
| M | Miete €/m²/month | Auto-calculated = N ÷ J |
| N | NK Miete (net cold rent) | Mandatory. The actual monthly rent excluding services. |
| Q–W | Total rent, deposit, Nebenkosten, heating, parking | Operating cost breakdown per unit |
| Y–AC | Lease dates (start, end, duration) | Feed into churn timing in 2E |
| AK | Noch mögliche BGB Mieterhöhung % | Remaining allowable rent increase under §558 BGB (max 20%/3yr). Complex — each unit tracks its own headroom based on prior increases. |
| AL | BGB Mieterhöhung €/m² | = AK × M (absolute amount per m²) |
| AQ | Index oder Staffel? | "Index" = CPI-linked rent; "Staffel" = fixed annual step; blank = standard BGB only |
| AS | Höhe Staffel (€ p.a.) | Annual step amount if Staffel lease |
| AV–AW | Market rent range (lower/upper) | Linked from 3A CRM tiers by size class |
TI = Tenant Improvements (Mieterausbau). These are the renovation costs incurred when a residential unit turns over. In the model, TI costs are 2A row 53 = €712/m² × renovatable area. They're triggered by churn events modeled in 2E rows 15-22. "TIs resi" simply means the tenant-improvement budget allocated to residential (as opposed to commercial) units.
Size classes are defined in 3A CRM_INPUT as 7 cohorts (up to 35 m², 35-40, 40-45, 45-50, 50-65, 65-75, 75+). Each cohort has a lower, mid, and upper target rent. These are consumed by 2B GRI via an INDEX/MATCH that selects the appropriate rent tier based on the dropdown in 2B cell E3 ("Rent Index - Upper", "Lower", "Mid", etc.). The formula:
German rent law (§558 BGB) caps residential rent increases at 20% over any rolling 3-year period (15% in "angespannte Wohnungsmärkte" like Hamburg). Column 2F AK tracks how much headroom remains for each unit.
For example, if a unit's rent was already raised 8% last year, only 12% (or 7% in tight markets) remains available. The Output Rent Roll 2E rows 29-36 uses these percentages to schedule BGB increases at specific months (e.g., month 6 at 15%, month 42 at 11%).
This is critical because it limits how fast rents can be raised to market level even after renovation.
At 1,309 rows, this is the most complex sheet. It projects every unit's rent month-by-month for 48 months.
Churn = tenant turnover. When a tenant leaves, the unit goes vacant temporarily, then gets re-let (ideally at a higher rent). Churn is modeled in 2E rows 15-22:
Churn matters because it triggers TI-CAPEX spend, temporary vacancy loss, and unlocks the ability to set a new (higher) rent on the re-let.
VAT Damage = non-recoverable VAT (Vorsteuer-Schaden). When CAPEX is spent on units that are rented to residential tenants (VAT-exempt), the investor cannot reclaim the 19% VAT. This "damage" appears in multiple places:
NLA = Net Leasable Area (Nettomietfläche). The rentable floor space excluding common areas, stairwells, and technical rooms. In 2E row 23, NLA starts at 926.49 m² (month 0) and grows to 1,098.99 m² by month 2 as commercial spaces are re-let after churn. Total portfolio NLA is 9,501 m².
EE-Top-Up = Energy-Efficiency surcharge (Energetische Modernisierungsumlage). After energy-efficiency renovations, German law (§559 BGB) allows landlords to pass through up to 8% of the renovation cost per year as a rent increase — on top of the normal BGB cap.
In the model: 2E row 43, calculated as a weighted average = €1.97/m²/month.
This kicks in from 2E row 31 "ModUmlage drawn month" = month 21 — i.e., once renovations complete.
Commercial units use three separate rent development mechanisms (Felix's question about rent-development, VPI, last indexation):
The logic in 2E row 24 uses a conditional INDEX/MATCH:
This finds the rent value for the specific month, falling back to the hold-period end if the month lookup fails.
This is the largest single calculation block in D2G. Each residential unit follows one of three paths based on 2F col AQ:
| Type | Mechanism | BGB Interaction |
|---|---|---|
| Staffel (fixed step) |
Rent increases by a fixed €/m²/year 2F col AS. Predictable, contractually locked in. | Staffel increases count against the BGB 20% cap. But since they're contractual, they're guaranteed. |
| Index (CPI-linked) |
Rent adjusts with CPI (Verbraucherpreisindex). Triggered when cumulative inflation exceeds threshold. | Index-linked increases are outside the BGB cap — they follow their own contractual rules. |
| None (standard BGB) |
No contractual escalation. Rent can only be increased by landlord request per BGB §558. | Fully subject to the 20%/3yr cap. Requires comparable rent evidence (Mietspiegel). 15-month minimum between increases. |
The combined rent development formula in 2E row 39 sums all components:
Color formatting in the rent roll: Cells with colored backgrounds typically indicate override zones where investment managers have manually adjusted assumptions for specific units — e.g., accelerated churn, custom renovation timing, or rent-free periods.
Modernisierungsumlage is the legal mechanism for passing renovation costs through to tenants. After energy-efficiency or other qualifying renovations:
Investment manager decision process: The manager decides when and how much to increase, weighing: BGB headroom remaining (col AK), EE-Top-Up eligibility (post-renovation), tenant sensitivity, and market comparables. The sheet provides the maximum possible increase; the manager often applies less to manage tenant relations.
Felix — GRI Deep Dive
| Term | Full Name | Meaning | Where |
|---|---|---|---|
| GRI | Gross Rental Income | Theoretical maximum income if 100% occupied at current rents. This deal: ~€898k p.a. at entry. | 2B |
| NRI | Net Rental Income | Actual rent collected after vacancy, rent loss, and letting fees. NRI = GRI minus leakage. | 2A row 19 |
| NLA | Net Leasable Area | Rentable floor space (m²), excluding common areas. This deal: 9,501 m². | 2E row 23 |
| Blended NRI | Weighted-average NRI | Single €/m² figure combining resi, commercial, and parking — weighted by area. Used for quick benchmarking. | 2B |
| GDP | Gross Development Profit | Total profit from the deal at exit = sale proceeds minus all-in cost (purchase + CAPEX + financing + fees). | 2A / 1A |
Why a separate rent cohorts table? (Felix's question) — Because the Output Rent Roll (2E) has 1,300+ rows of unit-level data. Direct references from the CF Engine to individual units would be unmaintainable. GRI (2B) solves this by:
So yes — the main purpose of GRI is weighted aggregation of unit-specific rent developments into a clean, auditable intermediate layer.
"Rent development based on averages" uses the cohort-level weighted average (from GRI), while "rent development based on rent roll" traces back to unit-level projections in 2E. They should converge, but small discrepancies arise because:
The CF Engine 2A row 19 uses the GRI-aggregated figures (not individual unit rows), making GRI the authoritative rent source for everything downstream.
Felix — CF Engine
The CF Engine runs monthly (columns K onward, one per month for 48 months). Here's the waterfall:
| Row | Line Item | Total (48m) | Notes |
|---|---|---|---|
| 19 | Rental Income (NRI) | €5.54M | From 2B GRI via SUMIF |
| 24 | Non-Recs / Maintenance | –€374k | €8/m²/yr inflating |
| 25 | Vacancy Cost | –€41k | €12/m²/yr on vacant units |
| 26 | Standard Rent Loss | –€55k | 1% of NRI — collection/bad-debt provision |
| 27 | Development Rent Loss | –€38k | 3% of NRI during active renovation period |
| 28 | Letting Fees (Resi) | –€99k | 2× monthly NRI per new lease |
| 32 | VAT Damage | –€81k | Non-recoverable VAT on resi OPEX |
| 34 | Total Opex Leakage | –€698k | 12.6% of NRI |
| 37 | NOI | €4.84M | NRI minus total OPEX |
| 52 | EE-CAPEX | –€6.99M | €875/m² × 9,501 m²; months 4-18 |
| 53 | TI-CAPEX | –€3.29M | €712/m² × ~5,253 m² renovatable |
Two separate provisions:
These are not the same as vacancy (row 25), which covers structurally empty units.
CAPEX doesn't hit all at once — it's phased across the hold period 2A rows 43-46:
Ansgar Q4d
The P&L cascades from NOI down to net income after tax. Key rows:
| Row | Level | Deductions at this level |
|---|---|---|
| 19 | NOI | (from 2A CF Engine) |
| 22 | → less VAT loss on TI-CAPEX | Non-recoverable VAT on renovation |
| 25 | → less VAT loss on Partner fees | |
| 28 | FFO (Funds from Operations) | NOI minus interior CAPEX, VAT, partner fees |
| 38 | EBITDA | FFO minus acquisition & asset-management fees |
| 40 | Depreciation | Standard 2% p.a. on building value (Gebäude-AfA) |
| 42 | EBIT | EBITDA minus depreciation |
| 44 | Bank debt interest | Senior loan interest expense |
| 46 | Grants | Subsidy income (positive — from 2H Subsidies) |
| 49 | EBT | EBIT minus interest plus grants |
| 52–55 | Corporate tax + Trade tax | ~15% KSt + ~15% GewSt ≈ 30% total |
| 57 | Net Income | After all taxes |
A key tax-optimization feature: 90% of equity is structured as a shareholder loan (SHL) rather than pure equity.
The SHL effectively converts equity returns into interest income, which can be more tax-efficient for certain investor structures.
Felix — Promote Explained
Promote (also called "carried interest" or "carry") is the GP's (General Partner / fund manager) performance fee. It's a share of profits that increases as returns exceed certain thresholds (hurdles). Think of it as: "the better the deal does, the more the manager earns."
| Tier | IRR Hurdle | Investor | RENEO (GP) |
|---|---|---|---|
| Below Hurdle 1 | < 11% | 100% | 0% |
| Hurdle 1 → 2 | 11% – 15% | 89% | 11% |
| Hurdle 2 → 3 | 15% – 20% | 80% | 20% |
| Above Hurdle 3 | > 20% | 75% | 25% |
The output is the Levered IRR (post-tax, post-promote) — the investor's true net return after all fees, taxes, and GP share.
Felix — Subsidies
| Program | Type | This Deal | Key Feature |
|---|---|---|---|
| KfW Kreditanstalt für Wiederaufbau |
Federal | €4.0M (repayment subsidy + WPB bonus) |
Main driver. Provides a low-interest loan (max €132,414/unit) with a repayment subsidy (€14,911/unit) and a WPB bonus (€9,941/unit). The loan itself reduces the need for bank debt. |
| IfB Investitionsbank Hamburg |
State (Hamburg) | €3.97M | Per-m² subsidy (€470/m² for IFB55 standard). Includes bonus for brick facades / monument protection (€110/m²). Hamburg-specific. |
| BAFA Bundesamt für Wirtschaft |
Federal | – | Energy-audit and individual-measure grants. Typically combined with KfW, not standalone. Not the main driver in this deal. |
| DUS Düsseldorf state program |
Municipal | €0 | Only applies if city = "Düsseldorf." This deal is Hamburg, so DUS is zeroed out. |
Yes — KfW and IfB stack. In this deal, KfW provides €4.0M and IfB provides €3.97M = €7.16M total. However, there's a 60% eligible-spend cap 2H row 17: total subsidies cannot exceed 60% of qualifying CAPEX. The model enforces this with a MIN() formula.
A cash trap occurs when subsidy conditions restrict cash distributions to investors. Some subsidy programs (particularly Hamburg's IfB/FKG programs) require:
In the model, this manifests as a period where cash flow is positive but cannot be distributed — it must be reinvested or held as reserve. The FKG (Förderung klimagerechter Gebäudesanierung) programs are particularly strict about this.
Ansgar Q4c
The sensitivity sheet produces three scenario grids, each showing IRR% / equity multiple for every combination:
| Matrix | X-Axis | Y-Axis | Example Output |
|---|---|---|---|
| 1 | Exit month (54–58) | Exit multiple (22.5–24.5×) | "16.8% / 1.89×" |
| 2 | Target rent resi (€/m²) | Target rent expansion | IRR / multiple at various rent combos |
| 3 | CAPEX EE (€/m²) | CAPEX Extension | IRR / multiple at various cost levels |
Each matrix lets investment managers see how returns shift across the most impactful levers — confirming which inputs have the highest IRR sensitivity.
Ansgar Q7
3A CRM_INPUT provides 7 market-rent cohorts (€5.69–€11.49/m²) for Hamburg. These set the target-rent ceiling.
2F Input Rent Roll — 145 resi units + 14 commercial + 56 parking are entered. Current resi rent: €7.24/m². Key fields: area (J), net cold rent (N), BGB headroom (AK), lease type (AQ).
2E Output Rent Roll projects each unit's rent monthly for 48 months. BGB increases at months 6 and 42. EE-Top-Up kicks in at month 21 (~€1.97/m²). Churn releases 383 m² of commercial space for re-letting at higher rents.
2B GRI aggregates all units into cohort-level GRI (~€898k/yr at entry). The selected rent-index scenario (E3 dropdown) determines which market-rent band is used for target pricing.
2H Subsidies models KfW (€4.0M) + IfB (€3.97M) = €7.16M in grants. Max KfW loan: €19.2M. Subject to 60% eligible-spend cap.
2A CF Engine builds the 48-month cash flow: NRI €5.54M – OPEX €698k = NOI €4.84M. CAPEX: EE €6.99M + TI €3.29M spread across months 4-21. Net CF after subsidies and debt service flows to P&L.
2C P&L + Tax deducts depreciation (2% p.a.), interest, and applies ~30% combined tax rate. The SHL structure (9% on 90% of equity) optimizes the tax position.
2D Promote & IRR runs the 3-tier waterfall. Below 11% IRR = 100% to investor. 11–15% = 89/11 split. 15–20% = 80/20. Above 20% = 75/25. Output: levered post-tax post-promote IRR.
1A Invest. Memo + 1B IC Charts pull everything together. Acquisition: €22.5M asking / €20.8M expected (€2,192/m²). Going-in multiple: 23.2× NRI. Charts visualize the return profile for the Investment Committee.
Ansgar Q8
Hover over any connection arrow to see exactly what data moves between sheets. Click a sheet node to highlight all its connections.
Each arrow is a real cross-sheet reference in D2G v5.5.0. Solid lines are direct cell references; dashed lines are parameter-driven (script or dropdown). Click any sheet node to highlight only its connections. Hover an arrow to see the exact data, row references, and why it flows that way.
Felix — Basic Concepts
| Term | Explanation |
|---|---|
| GRI | Gross Rental Income — theoretical max rent at 100% occupancy |
| NRI | Net Rental Income — actual rent after vacancy and losses |
| NLA | Net Leasable Area — rentable m² excluding common areas |
| P&L | Profit & Loss statement — income minus all expenses and taxes |
| Promote | GP's performance fee — escalating share of profits above IRR hurdles |
| IRR | Internal Rate of Return — annualized return accounting for cash-flow timing |
| NOI | Net Operating Income — NRI minus operating expenses (before CAPEX and debt) |
| FFO | Funds From Operations — cash earnings before depreciation and financing |
| EBITDA | Earnings Before Interest, Tax, Depreciation & Amortization |
| CoC | Cash-on-Cash yield — annual cash distributions ÷ invested equity |
| LTV | Loan-to-Value — senior debt ÷ asset value |
| EK | Eigenkapital (equity) — the investor's cash contribution |
| SHL | Shareholder Loan — equity structured as a loan for tax efficiency (9% interest) |
| BGB §558 | German Civil Code rent-increase rule: max 20% over 3 years (15% in tight markets) |
| §559 BGB | Modernization surcharge: max 8% of renovation cost p.a. passed to tenants |
| Staffelmiete | Stepped rent — fixed annual increases written into the lease |
| Indexmiete | Index-linked rent — tied to CPI (Verbraucherpreisindex) |
| VPI | Verbraucherpreisindex — German Consumer Price Index |
| Modernisierungsumlage | Renovation cost pass-through to tenants under §559 BGB |
| Mietspiegel | Local rent index — official benchmark for comparable rents (required for BGB increases) |
| Nebenkosten (NK) | Service charges / operating costs passed to tenants |
| AfA | Absetzung für Abnutzung — tax depreciation (typically 2% p.a. for buildings) |
| KSt | Körperschaftsteuer — German corporate income tax (~15%) |
| GewSt | Gewerbesteuer — German trade tax (~15%, varies by municipality) |
| KfW | Kreditanstalt für Wiederaufbau — federal development bank providing subsidized loans |
| IfB | Investitionsbank Hamburg — Hamburg's state investment bank |
| VAT Damage | Non-recoverable 19% VAT on CAPEX/OPEX for VAT-exempt (residential) units |
| Churn | Tenant turnover — when a unit becomes vacant and must be re-let |
| TI | Tenant Improvements — renovation costs for a unit at turnover |
| EE-CAPEX | Energy-Efficiency capital expenditure (insulation, heating, windows) |
| Cash Trap | Period when cash is generated but cannot be distributed due to subsidy conditions |