Release-note: hvorfor vi splittede rente fra bidragssats

VB
Victor Byrholt
2. april 20266 min læsetid
Release-note: hvorfor vi splittede rente fra bidragssats

Den første version af BoligInvest havde ét felt pr. gældspost: "rente". Det var enkelt, men det var også forkert — eller i hvert fald ikke præcist nok til det, modellen skal bruges til. I marts 2026 splittede vi rente fra bidragssats overalt i systemet. Det er en lille ændring med overraskende store konsekvenser.

Hvorfor vi ændrede det

Rente og bidragssats er ikke samme slags omkostning.

  • Renten bestemmes af obligationsmarkedet. Den bevæger sig med ECB, Nationalbanken og efterspørgslen på danske realkreditobligationer. Du kan ikke forhandle den.
  • Bidragssatsen er instituttets egen margin. Den bevæger sig med instituttets kapitalkrav, LTV-bånd og konkurrence. Du kan forhandle den (lidt), og den kan ændres ensidigt med tre måneders varsel.

Når man pakker begge ind i ét felt, forsvinder den forskel — og dermed evnen til at stress-teste dem uafhængigt. Det gør en prognose, hvor man "sætter renten op med 1 procentpoint", til en uklar øvelse. Hvilken rente? Kun kuponen? Eller også bidraget? Hvad hvis bidraget er konstant og kun kuponen flytter sig?

Sådan regner engine nu

I engine-laget er hver gældspost nu et objekt med to tal:

type Debt = { label: "realkredit" | "bank" | "saelger"; amount: number; rate: number };

Adapteren fromFrontend slår de to procentsatser sammen for realkreditgæld (rente + bidragssats) og lader bank- og sælgerfinansiering stå med kun renten. Det er den eneste komposition. Herfra er alt downstream — renteudgifter, skat, cashflow — én og samme formel:

annualInterest = Σ debt.amount * debt.rate

Det betyder, at du kan flytte bidragssatsen alene, og alt andet opdaterer sig — cashflow, skat, ROIC, verdict. Eller omvendt: du kan flytte renten alene og se præcis, hvor meget af dit cashflow der afhænger af obligationsmarkedet vs. dit institut.

Migration 0002 i databasen

I Supabase tilføjede migrationen to nye kolonner på deals: interest_rate og contribution_rate. Den samme opsplitning findes på deal_debts.rate, så en realkredit-gældspost lagres som sum af kupon + bidrag (engine-kanon), mens deal-toppen beholder de to felter hver for sig til UI-visning.

Deals fra før marts 2026 er bagudkompatible: hvis kun rate findes, antages bidragssatsen at være 0, og hele tallet lægges på renten. Det giver et lidt optimistisk rentebillede på gamle deals, indtil du redigerer dem.

Hvad du ser som bruger

  • To felter i wizardens "Finansiering"-step i stedet for ét. Knappen "Hent aktuelle satser" udfylder begge korrekt med de nyeste tal fra Danmarks Statistik.
  • Live-preview i wizarden tager højde for begge satser, så du ikke skal bladre frem og tilbage for at se konsekvensen af en ændring.
  • På dealens detaljeside vises rente og bidragssats hver for sig i nøgletalspanelet, sammen med den samlede kapitalomkostning.

Næste trin på roadmappen er at bruge denne opsplitning i en egentlig stresstest — fx "hvad sker der hvis bidraget stiger 25 bp?" direkte på portfolio-siden. Tallene er der. Det er bare at sætte UI på.


VB
Skrevet af
Victor Byrholt
Skriver om data, deals og det praktiske ved at eje udlejningsejendom i Danmark.

Flere indlæg

Få besked om nye indlæg

Et kort nyhedsbrev — kun når der er noget at sige.