Version 5.5.0

D2G Investment Model
Workshop Q&A

Technical reference for the Hamburg Bismarckstraße deal — answering every question from the workshop catalog with sheet references, formulas, and visual walkthroughs.

How everything connects

Three-Tier 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. The primary starting tab for any new analysis is 3B_CRM_CONSOLE.

SheetRoleDocument as
INDEX Front page / workbook versioning Reference only
1A Invest. Memo Presentation output Output, not source-of-truth
1B IC Charts Presentation output Output, not source-of-truth
2A CF Engine Monthly deal engine — NOI, CAPEX, debt service (up to 180 months) Primary audit tab
2B GRI Rent aggregation layer — cohort-weighted GRI/NRI Intermediate calc tab
2C P&L + Tax Engine P&L / tax / SHL logic Primary audit tab (tax caveat)
2D Promote & IRR Waterfall and return sharing — 3-hurdle promote Primary promote tab
2E Output Rent Roll Rent engine — unit-level monthly projections (BGB · Staffel · Index) Primary audit tab
2F Input Rent Roll Granular rent-roll input — 215 units, 48 columns Primary audit tab (active reconciliation warning)
2G Sensitivity Scenario matrix store — exit · rent · CAPEX matrices Useful but rerun-dependent
2H Subsidies Subsidy logic and caps — KfW, IfB, BAFA, DUS Primary subsidy tab
2I RCS Outputs Compact KPI export Helpful output summary
2J ML Output Unit-level export Useful secondary output
3A CRM_INPUT Asset metadata and rent cohorts — 7 size classes, lower/mid/upper Primary input tab
>> Backoffice Support layer Auxiliary / internal
3B CRM_CONSOLE ⭐ Central scenario control layer Primary starting tab
0A CCS D2G Mapping Integration / mapping layer Technical support tab

Data-Flow Diagram

This is the dependency map Ansgar asked about (Q8). Every arrow is a real cross-sheet formula reference.

3A CRM INPUT Market rent tiers 2F Input Rent Roll Unit-level lease data 2E Output Rent Roll Monthly rent projections 2H Subsidies KfW / IfB / DUS grants 2B GRI Rent aggregation & cohorts 2A CF ENGINE 48-month cash flow (core) 2C P&L + Tax Tax engine & depreciation 2D Promote & IRR Waterfall & returns 2G Sensitivity Scenario matrices 1A INVEST. MEMO & 1B IC CHARTS IC-ready outputs INPUT CALCULATION OUTPUT

Every arrow represents a live cross-sheet formula reference in D2G v5.5.0

Where does the "core logic" sit? (Ansgar Q3)

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:

  • 2E Output Rent Roll — the single largest calculation block in the entire model (1,300+ rows), computing every unit's rent trajectory month by month
  • 2A CF Engine — aggregates everything into a 48-month cash-flow waterfall (rental income, opex, CAPEX, debt service)
  • 2C P&L + Tax — layered P&L from NOI down to net income, then shareholder loan mechanics

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.

Critical Inputs & Their Impact

Input Categories & Semantic Meaning

InputWhereWhat It MeansImpact
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.

Input Constraints & Guardrails (Ansgar Q2)

The model does not hard-block unrealistic inputs — it will happily calculate a 200% LTV scenario. However, several soft constraints exist:

  • BGB rent cap 2F col AK: Maximum 20% increase over 3 years per §558 BGB. The "Noch mögliche BGB Mieterhöhung %" column tracks remaining headroom per unit.
  • Subsidy caps 2H row 17: KfW max loan = €132,414/unit; IfB capped at 60% eligible spend. Exceeding these zeroes out the benefit.
  • Market rent boundaries 3A CRM: Upper/lower bounds per size class. Inputs outside these ranges produce unrealistic GRI projections.
  • Hold period: Model built for 180 months (15 years) of monthly columns. The current Hamburg deal uses 48 months as its exit assumption — extending within the 15-year structure requires only a parameter change. Going beyond 180 months would then require adding new columns across all sheets.

Input & Output Rent Roll

Input Rent Roll — Column Map 2F

ColumnsContentNotes
A–EUnit ID, status, address, location, typeType = "Wohnen" (resi), "Gewerbe" (commercial), "Stellplatz" (parking)
JFläche (m²)Mandatory. Drives all per-m² calculations.
MMiete €/m²/monthAuto-calculated = N ÷ J
NNK Miete (net cold rent)Mandatory. The actual monthly rent excluding services.
Q–WTotal rent, deposit, Nebenkosten, heating, parkingOperating cost breakdown per unit
Y–ACLease dates (start, end, duration)Feed into churn timing in 2E
AKNoch 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.
ALBGB Mieterhöhung €/m²= AK × M (absolute amount per m²)
AQIndex oder Staffel?"Index" = CPI-linked rent; "Staffel" = fixed annual step; blank = standard BGB only
ASHöhe Staffel (€ p.a.)Annual step amount if Staffel lease
AV–AWMarket rent range (lower/upper)Linked from 3A CRM tiers by size class
What is "TIs resi"?

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.

Where are Size Classes and Target Rents used?

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:

=IF($E$3="Rent Index - Upper", AVERAGE('2F_CAL Input Rent Roll'!$AW$5:$AW$13), IF($E$3="Rent Index - Lower", AVERAGE('2F_CAL Input Rent Roll'!$AV$5:$AV$13), ...))
Noch mögliche BGB Mieterhöhung % — explained

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.

Output Rent Roll — The Biggest Calculation in D2G 2E

At 1,309 rows, this is the most complex sheet. It projects every unit's rent month-by-month for 48 months.

What is "Churn"?

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:

  • Row 15-16: Gewerbe Laden (retail): 79 m² churning at month 0
  • Row 17-18: Gewerbe Büro (office): 304.49 m² churning at month 0
  • Row 22: Total Gewerbe Relet — area requiring re-tenanting

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.

What is "VAT Damage"?

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:

  • 2E row 20: VAT Damage on churned TI = percentage lost on tenant improvement costs
  • 2E row 77: VAT Damage Modernisierungscapex = 0.72 (72% of modernization VAT is non-recoverable)
  • 2A row 32: Total VAT Damage in CF = –€81k over the hold period
What is "NLA"?

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².

What is "EE-Top-Up"?

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.

EE-Top-Up = SUMPRODUCT(W393:W1309, E393:E1309) / SUM(E393:E1309)

This kicks in from 2E row 31 "ModUmlage drawn month" = month 21 — i.e., once renovations complete.

Commercial Rent: Three Calculation Paths

Commercial units use three separate rent development mechanisms (Felix's question about rent-development, VPI, last indexation):

  1. Rent Development — The base annual rent growth assumption applied to commercial rents. Market-driven.
  2. VPI (Verbraucherpreisindex) — Consumer Price Index indexation. Commercial leases often tie rent adjustments to CPI. Triggered when cumulative CPI exceeds a threshold (typically 5-10%).
  3. Last Indexation — Tracks when the rent was last CPI-adjusted. The model checks if enough time has passed and enough inflation has accrued since the last adjustment before applying the next one.

The logic in 2E row 24 uses a conditional INDEX/MATCH:

=IF(L$10*12 > CEILING($H$2/12,1)*12, "", IFERROR(INDEX($AC24:$HA24, 1, IFERROR(MATCH(L$10*12, $AC$8:$HA$8, 0), MATCH($H$2, $AC$8:$HA$8, 0))), ""))

This finds the rent value for the specific month, falling back to the hold-period end if the month lookup fails.

Residential Rent — Staffel, Index, and BGB (the big one)

This is the largest single calculation block in D2G. Each residential unit follows one of three paths based on 2F col AQ:

TypeMechanismBGB 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:

Rent development = Base rent (AC41) + BGB increase (J42) + EE-Top-Up (J43) + Index/Staffel (J44)

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.

The Critical €7/m² Threshold — why it matters for strategy

The Modernisierungsumlage has a two-tier cap that creates a sharp strategic inflection point:

Pre-renovation rentMaximum EE-Top-UpImpact
> €7/m²/monthMax €3/m²/monthFull modernization levy applicable
≤ €7/m²/monthMax €2/m²/month€1/m² less — significant at scale

On a 100 m² unit held 36 months, the difference is €1 × 100 × 36 = €3,600 per unit. Across a portfolio of 145 resi units this creates substantial return impact.

Strategy: Investment managers time the first BGB rent increase to bring as many units as possible above €7 before EE-CAPEX completes. Getting a unit from €6.80 to €7.10 via a BGB increase before renovation is complete unlocks the full €3 levy.

Entry Date Sensitivity — how buying one month later can change IRR

The entry date affects IRR through two compounding mechanisms that are easy to overlook:

  1. BGB increase eligibility window: The model uses "months from entry date" (not calendar months) for when BGB increases can be applied. Shifting the entry date by one month shifts all BGB increase windows by one month — which can suddenly make a large portion of the rent roll eligible or ineligible depending on the applicable Mietspiegel values.
  2. Annual Mietspiegel update: If the Mietspiegel only updates once a year (e.g., in March), and BGB increase is scheduled for month 6 after a February purchase, the applicable reference is 11 months old. A March purchase instead uses a freshly updated Mietspiegel with a higher value — yielding a meaningfully larger BGB increase.

Example: an entry date shift from February to March could increase the share of rent roll eligible for full BGB increases from 60% to 80% — a direct IRR impact of 100–200 bps at deal scale. Senior analysts know this; junior users often don't realise changing the entry date has this effect.

Staffel lease + Modernisierungsumlage: the catch-up rule

Staffel lease tenants cannot be charged the Modernisierungsumlage levy while the Staffel is active (legally contested but the model's default position). However, v5.5 includes a "catch-up" toggle:

  • If the Staffel expiry falls shortly after EE-CAPEX completion, the full accumulated levy can be applied as a lump catch-up once the Staffel ends
  • This is legally argued as applying the levy at the point the contractual barrier (the Staffel) lifts
  • The toggle is configurable per-deal based on legal advice

Without the catch-up, a Staffel unit that churns late in the hold period may never receive the EE-Top-Up at all — a meaningful return leak on units with long Staffel durations.

Modernisierungsumlage & the Investment Manager Process

Modernisierungsumlage is the legal mechanism for passing renovation costs through to tenants. After energy-efficiency or other qualifying renovations:

  1. Landlord completes renovation (CAPEX in 2A rows 43-56)
  2. After completion (modeled at month 21 in 2E row 31), landlord can announce Umlage
  3. Max pass-through: 8% of allocated renovation cost per year (§559 BGB), adding ~€1.97/m²/month 2E row 43
  4. This is on top of normal BGB increases — it has its own cap

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.

GRI, NRI, and Rent Aggregation

Definitions

TermFull NameMeaningWhere
GRIGross Rental IncomeTheoretical maximum income if 100% occupied at current rents. This deal: ~€898k p.a. at entry.2B
NRINet Rental IncomeActual rent collected after vacancy, rent loss, and letting fees. NRI = GRI minus leakage.2A row 19
NLANet Leasable AreaRentable floor space (m²), excluding common areas. This deal: 9,501 m².2E row 23
Blended NRIWeighted-average NRISingle €/m² figure combining resi, commercial, and parking — weighted by area. Used for quick benchmarking.2B
GDPGross Development ProfitTotal profit from the deal at exit = sale proceeds minus all-in cost (purchase + CAPEX + financing + fees).2A / 1A

Rent Roll → GRI: How Aggregation Works

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:

  1. Grouping units into 7 size cohorts (from 3A CRM)
  2. Computing weighted-average rents per cohort (weighted by m²)
  3. Running 4 rent-index scenarios (Lower, Mid, Upper, Mid-Upper) via the dropdown in 2B E3
  4. Producing a single monthly GRI row that the CF Engine can reference cleanly

So yes — the main purpose of GRI is weighted aggregation of unit-specific rent developments into a clean, auditable intermediate layer.

Averages vs. Rent Roll — how weighting works

"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:

  • Averages smooth out timing differences (one unit's BGB increase hits month 6, another's hits month 9)
  • Weighting is by m² (area), so a 100 m² unit has more influence than a 35 m² unit

The CF Engine 2A row 19 uses the GRI-aggregated figures (not individual unit rows), making GRI the authoritative rent source for everything downstream.

Cash Flow Engine

CF Engine Structure 2A

The CF Engine runs monthly (columns K onward, one per month for 48 months). Here's the waterfall:

€5.54M
NRI (48 months)
–€698k
Total OPEX
€4.84M
NOI
–€10.3M
Total CAPEX
RowLine ItemTotal (48m)Notes
19Rental Income (NRI)€5.54MFrom 2B GRI via SUMIF
24Non-Recs / Maintenance–€374k€8/m²/yr inflating
25Vacancy Cost–€41k€12/m²/yr on vacant units
26Standard Rent Loss–€55k1% of NRI — collection/bad-debt provision
27Development Rent Loss–€38k3% of NRI during active renovation period
28Letting Fees (Resi)–€99k2× monthly NRI per new lease
32VAT Damage–€81kNon-recoverable VAT on resi OPEX
34Total Opex Leakage–€698k12.6% of NRI
37NOI€4.84MNRI minus total OPEX (based on 48-month exit assumption)
52EE-CAPEX–€6.99M€875/m² × 9,501 m²; months 4-18
53TI-CAPEX–€3.29M€712/m² × ~5,253 m² renovatable
What is "Rent Loss"? (Felix's question)

Two separate provisions:

  • Standard Rent Loss row 26 = 1% of NRI — covers tenants who pay late or default (Mietausfall)
  • Development Rent Loss row 27 = 3% of NRI — additional provision during active renovation, when construction disruption causes temporary rent reductions or concessions

These are not the same as vacancy (row 25), which covers structurally empty units.

CAPEX distribution timing

CAPEX doesn't hit all at once — it's phased across the hold period 2A rows 43-46:

  • EE-CAPEX: Months 4–18 (energy retrofit phase)
  • TI-CAPEX: Triggered by churn events (as units turn over)
  • General CAPEX: Months 4–18 (general maintenance)
  • Expansion CAPEX: Months 7–21 (building extensions/conversions)

P&L + Tax Engine

P&L Waterfall 2C

The P&L cascades from NOI down to net income after tax. Key rows:

RowLevelDeductions at this level
19NOI(from 2A CF Engine)
22→ less VAT loss on TI-CAPEXNon-recoverable VAT on renovation
25→ less VAT loss on Partner fees
28FFO (Funds from Operations)NOI minus interior CAPEX, VAT, partner fees
38EBITDAFFO minus acquisition & asset-management fees
40DepreciationStandard 2% p.a. on building value (Gebäude-AfA)
42EBITEBITDA minus depreciation
44Bank debt interestSenior loan interest expense
46GrantsSubsidy income (positive — from 2H Subsidies)
49EBTEBIT minus interest plus grants
52–55Corporate tax + Trade tax~15% KSt + ~15% GewSt ≈ 30% total
57Net IncomeAfter all taxes

Shareholder Loan Mechanics 2C rows 59-73

A key tax-optimization feature: 90% of equity is structured as a shareholder loan (SHL) rather than pure equity.

  • Row 66: Drawdown = 90% of total equity
  • Row 69: SHL Interest = 9% p.a. — this is tax-deductible, reducing the corporate tax base
  • Row 71: Repayment = Month 48 (at exit)

The SHL effectively converts equity returns into interest income, which can be more tax-efficient for certain investor structures.

Promote & IRR Waterfall

What is "Promote"?

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."

Three-Tier Waterfall 2D

TierIRR HurdleInvestorRENEO (GP)
Below Hurdle 1< 11%100%0%
Hurdle 1 → 211% – 15%89%11%
Hurdle 2 → 315% – 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.

Why the Team Obsesses Over 20% IRR

Hitting exactly the 20% hurdle unlocks a disproportionately higher promote tier (75/25 vs. 80/20). On a €50M deal, crossing the 20% threshold can be worth several hundred thousand euros in additional promote — purely from the waterfall mechanics.

This is why you'll sometimes see investment managers push to optimize the last 50–100 bps of IRR through exit-month selection, rent-increase timing, or CAPEX phasing — not because the deal is borderline, but because the promote structure creates a hard financial incentive right at that threshold.

Note: different investors have different promote agreements (Peakside vs. new fund investors). The promote tab in D2G can be adapted per investor AMA. The sensitivity matrices help show how much headroom exists relative to each hurdle.

Subsidy Programs

Program Comparison 2H

ProgramTypeThis DealKey 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.
€7.16M
Total Subsidies
€19.2M
Max KfW Loan
~50%
EE-CAPEX Offset
Are subsidy programs combined?

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.

How is the Modernisierungsumlage base calculated? (net qualifying spend)

The €/m² levy you can charge tenants after renovation is not simply 8% of gross CAPEX. The qualifying spend is calculated net of several deductions — this matters significantly for the final number:

  1. Start with gross EE-CAPEX
  2. Add back the non-recoverable VAT share (net spend is what you actually paid)
  3. Subtract the KfW interest advantage for year 1 (the subsidised loan benefit must be deducted)
  4. Subtract the portion attributable to commercial space (residents shouldn't fund commercial upgrades)
  5. Subtract the maintenance share — the portion you would have spent anyway on standard upkeep (e.g., window replacement that was already due)
  6. Subtract grants and subsidies received (KfW repayment subsidy, IfB grants)
  7. Divide result by total resi m² → then apply 8% → gives annual levy → divide by 12 for monthly amount

This net figure is capped: max €3/m²/month if the pre-renovation rent is above €7; max €2/m²/month if below €7. See the €7 threshold explained in the Rent Roll tab.

What does Felix mean by "cash traps"?

The term "cash trap" was raised as a question in the workshop catalog — the actual explanation requires input from the business team on the specific FKG program mechanics. What is confirmed from the D2G architecture session: subsidies are modeled as immediate cash offsets against CAPEX spend in the CF Engine. Any program-specific distribution restrictions or timing conditions are not currently modeled inside D2G itself, but exist as external legal constraints managed at the SPV/fund level.

Sensitivity Analysis

Three 2D Matrices 2G

The sensitivity sheet produces three scenario grids, each showing IRR% / equity multiple for every combination:

MatrixX-AxisY-AxisExample Output
1Exit month (54–58)Exit multiple (22.5–24.5×)"16.8% / 1.89×"
2Target rent resi (€/m²)Target rent expansionIRR / multiple at various rent combos
3CAPEX EE (€/m²)CAPEX ExtensionIRR / 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.

End-to-End Walk-through

Hamburg Bismarckstraße — Full Deal Flow

Step 1 — CRM Inputs

3A CRM_INPUT provides 7 market-rent cohorts (€5.69–€11.49/m²) for Hamburg. These set the target-rent ceiling.

Step 2 — Rent Roll Entry

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).

Step 3 — Rent Projection

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.

Step 4 — Rent Aggregation

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.

Step 5 — Subsidies

2H Subsidies models KfW (€4.0M) + IfB (€3.97M) = €7.16M in grants. Max KfW loan: €19.2M. Subject to 60% eligible-spend cap.

Step 6 — Cash Flow

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.

Step 7 — Tax & 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.

Step 8 — Returns

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.

Step 9 — IC Output

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.

Core Model Logic

Simplified vs. Granular Mode — the Rent Roll Toggle

The single most important switch in the model. D2G operates in two modes, selectable via the rent roll ON/OFF toggle in 3B CRM_CONSOLE:

Rent Roll OFF (Simplified)Rent Roll ON (Granular)
When usedEarly due diligence — no rent roll available yet. Quick screening of an asset.Pre-notary and asset management. Full unit data from RCS.
Rent basisAverage rent inferred from CRM (total income ÷ m²)Unit-by-unit from 2F Input Rent Roll
BGB increaseApplied to average rent — assumes all units are eligible at the same time. Less precise.Per-unit headroom (col AK), per-unit timing. Correctly captures which units can't increase yet.
VacancyTaken from CRM input fieldCalculated bottom-up from actual unit statuses. Overrides CRM value.
CAPEXSingle average €/m² from CRMSize-adjusted per unit (smaller apartments = higher €/m²)
Precision gapGRI displayed side-by-side for comparison — e.g., rent roll ON: €11.65/m², OFF: €9.68/m². A large gap signals a possible data error or setup issue.

⚠️ The 2F Input Rent Roll also has an automatic reconciliation alert if the bottom-up total deviates significantly from the CRM top-down figure. This catches data entry errors before they propagate through the model.

The "Big Bang" — Understanding the Cash Flow Profile

The D2G investment thesis follows a very specific cash flow shape, which explains why the sensitivity around exit timing and exit multiple is so dominant:

time CF 0 Equity drawdown Renovation Marginally +/− 💥 BIG BANG Exit sale Rents rising post-renovation
  • Month 0: Large equity drawdown (negative CF)
  • Months 1–30: Negative to marginally positive — renovation spend, vacancy, CAPEX; rents starting to rise post-renovation
  • Months 30–exit: Increasingly positive as rent roll matures, BGB increases applied, EE-Top-Up active
  • Exit: The "Big Bang" — 23× NRI exit multiple on the full rent roll dominates all prior cash flows. This single event drives IRR more than any other variable.

This is why the promote team sometimes obsesses over hitting exactly 20% IRR — it's not just about the number. Crossing the 20% threshold unlocks the next promote tier (75/25 split), making every incremental return disproportionately more valuable for RENEO.

Why 5 Years? Why Now 15 Years?

Original Design (5-year)v5.5 Design (up to 15 years)
Hold period~48–60 monthsUp to 180 months
BGB increases2 increases modeled4 increases (new in v5.5)
Logic2 BGB increases × 2-year minimum gap = ~4 years. Add renovation time → 5-year sweet spot where all value-add levers are exhausted.New investor profiles seeking lower IRR, longer hold, more stable dividends rather than exit-driven returns.
IRR implicationHigher IRR (shorter time, bigger bang)Lower IRR (longer hold dilutes the exit-driven return) but better cash yield profile
PromoteTuned for Peakside aggressive exitPromote structure adapts per investor (different AMA agreements)

Churn: Probabilistic (Resi) vs. Specific (Commercial)

These two asset types are modeled with fundamentally different churn approaches:

ResidentialCommercial
Model typeProbabilistic: A fixed % of total m² is assumed to churn every month, spread evenly across all unitsSpecific: Exact units (e.g., a kiosk, a doctor's practice) are pinpointed with known lease-end dates
WhyResidential contracts can be unbounded — no way to know which tenant will leave. The model uses a fraction per m² as a proxy.Commercial leases are time-bound by contract. Their end dates are predictable.
Example15% annual churn on a 100 m² flat = 15 m² churns per year = 1.25 m²/month"The ground floor retail unit churns in month 3" — exact event
Exit impactRunning churn always creates some vacancy at exit. This vacant space is capitalized — treated as if already re-let at the new target rent, with the refurb cost booked simultaneously. Critical for exit valuation.Modeled churn is complete before exit; re-let space is already in the rent roll.

Vacancy Capitalization at Exit

One of the most financially significant mechanics in the model. At the exit date there will always be some running churn — units that are vacant mid-renovation cycle. D2G handles this by:

  1. Identifying how many m² are vacant at the exit month (tracked in 2B GRI)
  2. Booking the estimated refurbishment cost for those units as a cost at exit
  3. Simultaneously assuming those units are already re-let at the new target rent — because the buyer also assumes this obligation
  4. This grossed-up rent figure feeds the exit multiple (e.g., 23× NRI)

Without capitalization, vacant space at exit would drag down the exit rent and significantly reduce the sale price. The capitalization allows the model to present a "fully rented equivalent" exit value — which is standard practice when selling with a renovation obligation to the buyer.

Two Tax Engines (v5.5)

Starting from D2G 5.5, the P&L + Tax sheet 2C contains two separate tax calculation engines:

EngineUsed forOutput
Peakside-specificDeals structured for Peakside Capital's specific legal/tax setupDetailed tax calculation including their particular structure
SimplifiedAny other investor — new fund structures, different tax treatiesA single effective tax rate applied to EBT

Both engines output to the same Promote & IRR calculation. The selector allows structuring teams to quickly compare how the same asset performs under different investor tax profiles.

Strategic Vacancy & Compensated Churn (v5.5 Features)

Strategic Vacancy — keeping units empty on purpose

New in v5.5. Some assets are in such poor condition that re-letting immediately at a low rent creates a legal problem: once you re-let, you can no longer achieve the target rent after renovation without a full refurbishment and justified rent increase. It can be financially better to keep the unit vacant for 1–2 years until renovation is complete, then re-let directly at the target rent.

The strategic vacancy scenario allows users to set a cut-off date. All churn occurring before that date accumulates into vacant space (rather than being re-let at a lower interim rent). After the cut-off, normal re-letting resumes. The cut-off defaults to one month after EE-CAPEX completion.

Compensated Churn — paying tenants to leave

An optional mechanism where the asset manager pays a compensation per m² to accelerate tenant turnover. The rationale: paying €200/m² to a tenant whose unit can then be re-let at €7,000/m² exit value vs. €3,000/m² occupied value is a highly favorable trade-off.

Modeled in 2E / 2A: compensation costs flow into the CF Engine as a one-time cost. The vacated space then enters the normal re-let pipeline with the full target rent uplift.

Note: The team is deliberate about not over-using this — it creates reputational risk and RENEO does not want to be perceived as an aggressive displacing investor.

Detailed Data-Flow Map

Hover over any connection arrow to see exactly what data moves between sheets. Click a sheet node to highlight all its connections.

Rent / lease data
Aggregated income
Cash flow / NOI
Subsidy / CAPEX
Returns / tax
Output / reference
INPUT CALC CALC OUTPUT 3A CRM INPUT 7 rent cohorts by m² lower / mid / upper 2F Input Rent Roll 215 units: area, NK-rent, BGB% lease type, start/end dates 2H Subsidies KfW · IfB · BAFA · DUS €7.16M grants + €19.2M loan 2E Output Rent Roll Monthly rent / unit × 180 months BGB · Staffel · Index · EE-Top-Up 2B GRI Rent aggregation 4 index scenarios 2G Sensitivity 3 × 2D matrices exit · rent · CAPEX 2A CF ENGINE 180-month cash flow waterfall NRI · OPEX · CAPEX · Debt service 2C P&L + Tax NOI → FFO → EBITDA → EBT AfA · KSt · GewSt · SHL 2D Promote & IRR 3-hurdle waterfall 11% · 15% · 20% IRR 1A INVEST. MEMO + 1B IC CHARTS IC-ready summary · acquisition metrics IRR · CoC · GRI yield · sensitivity tables rent tiers mkt benchmarks unit leases rent proj. monthly NRI churn events €7.16M grants + KfW loan NOI + P&L lines levered CF post-tax base CF IRR · MoC yields · CAPEX scenarios P&L summary

Reading the diagram

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.

Glossary

TermExplanation
GRIGross Rental Income — theoretical max rent at 100% occupancy
NRINet Rental Income — actual rent after vacancy and losses
NLANet Leasable Area — rentable m² excluding common areas
P&LProfit & Loss statement — income minus all expenses and taxes
PromoteGP's performance fee — escalating share of profits above IRR hurdles
IRRInternal Rate of Return — annualized return accounting for cash-flow timing
NOINet Operating Income — NRI minus operating expenses (before CAPEX and debt)
FFOFunds From Operations — cash earnings before depreciation and financing
EBITDAEarnings Before Interest, Tax, Depreciation & Amortization
CoCCash-on-Cash yield — annual cash distributions ÷ invested equity
LTVLoan-to-Value — senior debt ÷ asset value
EKEigenkapital (equity) — the investor's cash contribution
SHLShareholder Loan — equity structured as a loan for tax efficiency (9% interest)
BGB §558German Civil Code rent-increase rule: max 20% over 3 years (15% in tight markets)
§559 BGBModernization surcharge: max 8% of renovation cost p.a. passed to tenants
StaffelmieteStepped rent — fixed annual increases written into the lease
IndexmieteIndex-linked rent — tied to CPI (Verbraucherpreisindex)
VPIVerbraucherpreisindex — German Consumer Price Index
ModernisierungsumlageRenovation cost pass-through to tenants under §559 BGB
MietspiegelLocal rent index — official benchmark for comparable rents (required for BGB increases)
Nebenkosten (NK)Service charges / operating costs passed to tenants
AfAAbsetzung für Abnutzung — tax depreciation (typically 2% p.a. for buildings)
KStKörperschaftsteuer — German corporate income tax (~15%)
GewStGewerbesteuer — German trade tax (~15%, varies by municipality)
KfWKreditanstalt für Wiederaufbau — federal development bank providing subsidized loans
IfBInvestitionsbank Hamburg — Hamburg's state investment bank
VAT DamageNon-recoverable 19% VAT on CAPEX/OPEX for VAT-exempt (residential) units
ChurnTenant turnover — when a unit becomes vacant and must be re-let
TITenant Improvements — renovation costs for a unit at turnover
EE-CAPEXEnergy-Efficiency capital expenditure (insulation, heating, windows)
Cash TrapPeriod when cash is generated but cannot be distributed due to subsidy conditions