USD Finans

Magasinet der gør dig klogere på penge

Sådan bygger du en obligationsstige i Excel

Sådan bygger du en obligationsstige i Excel

Drømmer du om en stabil passiv indkomst, der tikker ind som et præcist urværk – uafhængigt af volatile aktiemarkeder? Så er obligationsstigen et af de mest effektive værktøjer, du kan bygge til din portefølje. Og nej, du behøver hverken dyre forvaltere eller komplekse trading-platforme: du kan bygge hele stigen i Excel på én eftermiddag.

I denne guide tager vi dig trin for trin gennem processen – fra de første strategiske overvejelser til den færdige, visuelt indbydende model, der automatisk opdaterer dine pengestrømme og afkast. Undervejs lærer du:

  • Hvordan du vælger den rette trinstørrelse og løbetid, så dine forfald passer perfekt til dine likviditetsbehov.
  • De vigtigste Excel-funktioner (ACCRINT, PRICE, XIRR m.fl.), som forvandler tørre kupondata til et levende cash-flow dashboard.
  • Praktiske hacks til datavalidering, betinget formatering og automatiske kursopdateringer, så din stige altid står snorlige.

Slutresultatet? Et skræddersyet værktøj, der giver dig ro i maven – og måske endda et forspring i forhold til de professionelle. Klar til at sætte første trin? Lad os dykke ned og bygge din egen obligationsstige i Excel.

Planlæg designet af din obligationsstige

Før du åbner Excel, skal du klart definere, hvorfor du bygger stigen:

  • Likviditet: Skal obligationerne finansiere et kendt cash-flow (fx studieafgift) eller blot stå klar som nødbuffer?
  • Stabil indkomst: Ønsker du jævne kuponudbetalinger, eller må kontantstrømmen variere?
  • Løbetidshorisont: Hvornår skal den sidste tranche udløbe? Typiske private porteføljer ligger 5-10 år ude.
  • Risikotolerance: Angiv maksimal kursvolatilitet, kreditrating (fx BBB- eller bedre) og ønsket udstederdiversifikation.

2. Vælg trinstørrelse og samlet varighed

En klassisk stige deler investeringen op i lige store “trin”, der udløber med faste intervaller.

  1. Interval: Årligt, halvårligt eller kvartalsvist. Jo kortere interval desto flere ISIN’er og højere transaktionsomkostninger.
  2. Antal trin: Bestemmes af din tidshorisont. Eksempel: 10 trin á ét år (1 til 10 år).
  3. allokering pr. trin: Vægt porteføljen ligeligt (fx 10 % pr. år) eller overvægt kort ende for øget likviditet.

3. Afklar kuponstruktur, kreditprofil, skat og omkostninger

Parameter Spørgsmål Eksempler
Kupon Fast eller variabel? Ønskes minimums-YTM? Fast 3-5 % for forudsigelighed
Kreditrating Min. rating pr. ISIN og porteføljesnit? ≥ A- for kommunekredit, BBB+ for virksomhedsobligationer
Skat Kapitalindkomst eller lagerbeskatning? Stats-/realkredit under par er lagerbeskattet
Gebyrer Kurtage & spreads pr. handel? 0,1-0,3 % afhængig af ISIN

4. Identificér pålidelige datakilder

  • Markedskurser: Nasdaq Copenhagen, Bloomberg, Refinitiv eller gratis API’er som Nationalbanken.dk.
  • Masterdata: ISIN, udsteder, kupon, første/ næste kupon-dato, forfald, betalingsfrekvens.
  • Kreditinformation: Moody’s/S&P rating, CDS-spreads.
  • Tilgængelighed i Excel: CSV-eksport, Power Query, web-scraping eller manuelt indtastede skabeloner.

5. Skitser excel-strukturen

En simpel mappestruktur gør modellen overskuelig og auditerbar:

Fane Indhold Nøglepunkter
Input Rå data pr. ISIN Importér kun; ingen formler
Stige Allokerede trin, vægte, summer Betinget formatering til at fremhæve huller
Cash Flow Alle kupon- og hovedstolsbetalinger Basis for YTM, XIRR, likviditetsgrafer
Parametre Skattesatser, geninvesteringskrav, limit-checks Kan ændres uden at røre formlerne

Når disse fundamentale valg er taget og modellen er skitseret, er du klar til det praktiske “Trin-for-trin i Excel”, hvor formler, datavalidering og automatiske kontroller implementeres.

Trin-for-trin i Excel: data, formler og opbygning

Følg nedenstående workflow for at gå fra tom projektmappe til fuldt funktionel obligationsstige i Excel. Eksemplerne tager udgangspunkt i en årlig stige på 10 trin, men kan let tilpasses andre intervaller.

1 – opret den centrale datatabel

  1. Indsæt en Excel-tabel (Ctrl + T) på fanen Input. Giv den navnet tbl_Bonds.
  2. Kolonne­overskrifter (eksempelvis):
    ISIN Udsteder Rating Pålydende Kupon % Frekvens Købskurs (clean) Afregningsdato Forfaldsdato

    Tilføj evt. CashYieldTarget, CallDate eller andre felter, der er relevante for dine krav.

  3. Datavalidering: Brug lister til Frekvens (1, 2 eller 4) og Rating (AAA – CCC). Det reducerer tastefejl og sikrer konsistens.

2 – udregn nøgletal og kuponkalender

  1. Akkumuleret rente
    I en hjælpekolonne Accrued:
    =ACCRINT([@IssueDate],[@Afregningsdato],[@Forfaldsdato],[@[Kupon %]]/100,[@Frekvens],0)
    Vælg 0 for Basis = faktisk/360 eller 4 for faktisk/faktisk.
  2. Dirty price og effektivt afkast
    • DirtyPrice: =[@[Købskurs (clean)]] + [@Accrued]
    • YieldToMaturity:
      =YIELD([@Afregningsdato],[@Forfaldsdato],[@[Kupon %]]/100,[@DirtyPrice],100,[@Frekvens],0)
  3. Kuponkalender
    • Næste kupondato: =COUPNCD([@Afregningsdato],[@Forfaldsdato],[@Frekvens],0)
    • Antal resterende kuponer: =COUPNUM([@Afregningsdato],[@Forfaldsdato],[@Frekvens],0)
    • Brug SEQUENCE sammen med EDATE til at liste alle fremtidige kupondatoer i en dynamisk matrix, som viser cash flow-tidslinjen.

3 –&nbsp>beregn pengestrømme og tidsværdier

  1. Cash flow matrix
    Indsæt en separat tabel tbl_Cashflow med én kolonne pr. år fra 1 til 10 (eller pr. kvartal). Brug SUMIFS til at samle alle kuponer og hovedstol for hvert år.
  2. Intern rente og nutidsværdi
    • XIRR: =XIRR(tbl_Cashflow[Beløb], tbl_Cashflow[Dato])
    • NPV: =NPV(DiscountRate, tbl_Cashflow[Beløb])

    Anvend en diskonteringsrente hentet fra fanen Parametre for konsistens på tværs af scenarier.

4 – sikring af trinformen

  1. Betinget formatering
    I fanen Stige vises obligationsbeholdningen som et heatmap (rækker = år, kolonner = antal ISIN’er). Marker:
    • Grøn = opfyldt trinhøjde (f.eks. ≥ 10 % af porteføljen)
    • Rød = hul (< 5 %)
    • Orange = overvægt (> 15 %)
  2. Navngivne ranges og struktur
    Brug Ctrl + F3 til at oprette navnet TargetPerRung. Det gør formler som
    =IF(SUMIF(tbl_Bonds[År],A2,tbl_Bonds[DirtyPrice])<TargetPerRung,"Mangler","OK")
    mere læsevenlige.
  3. Error-checks og kontroller
    • Minimumskøb: =IF([@[Pålydende]]<Param!MinLot,"FEJL","")
    • Likviditetsbuffer: Sammenlign Cash mod Param!MinCash%
    • Maks. udsteder: Brug COUNTIFS til at sikre < X % pr. issuer.

5 – praktiske excel-tips

  • Power Query til at trække kurser og ratings direkte fra leverandører (CSV, API eller web).
  • Slicer (tabelskærer) kan filtrere stigen på rating eller sektor med ét klik.
  • Versionering: Gem centrale faner som separate filer og indlæs dem via Get & Transform, så du kan rulle tilbage uden datatab.
  • Scenarieanalyse: Brug Data → Hvad-hvis → Datatabel til at teste parallelle renteskift på ±50 bp.

Med denne opsætning har du et robust, gennemsigtigt og skalerbart fundament, der kan udvides med nye ISIN’er, automatiske prisopdateringer og mere avanceret risikoanalyse uden at bryde eksisterende struktur.

Visualisering, rulning og vedligehold

En obligationsstige er kun nyttig, hvis du kan se den. Opret en dedikeret fane – fx Dashboard – hvor du samler de vigtigste nøgletal og grafer:

  • Forfaldsprofil (kolonne- eller lagkagediagram)
    Viser, hvor meget nominelt beløb der udløber i hvert år. Brug en Pivottabel på kildedataene og et Kolonnediagram koblet til pivoten. Tilføj datamærker, så du klart ser eventuelle “huller”.
  • Pengestrømsgraf (linje eller område)
    Akkumuler de planlagte kuponbetalinger og hovedstolsindfrielser pr. kalenderår eller -kvartal. Diagrammet illustrerer, hvordan stigen dækker dine fremtidige likviditetsbehov.
  • Ladder-heatmap
    Et betinget formateret gitter (år på x-aksen, ISIN på y-aksen) der farver celler efter størrelse af position eller rating. Det giver et “one-glance” overblik over spredning og koncentration.

Rulning og geninvestering: Sådan bevarer du stigen

  1. Identificér udløbende trin
    Brug en dynamisk FILTER()-formel til at liste alle obligationer, der udløber inden for de næste 6-12 måneder.
  2. Fastlæg rulnings­reglen
    Det klassiske princip er at geninvestere provenuet fra det korteste trin i den længste ende (fx fra 1-års til 10-års), så stigen bevarer sin oprindelige varighed.
  3. Opdater inputfanen
    Indtast nye ISIN og handelsdata i tabellen. Brug datavalidering til at sikre, at kuponer, forfaldsdatoer og ratings bliver indtastet korrekt.
  4. Kontrollér balancer
    Tilføj et “Løbende tjek”-område, der summerer beløb pr. trin og advarer med betinget formatering, hvis et trin afviger mere end fx ±5 % fra målvægten.

Automatisk kursopdatering

Kurser kan hentes på flere måder:

  • Manuel CSV-import: Download daglige prislister fra din broker eller Nasdaq og opdater tabellen via Data > Fra tekst/CSV.
  • Power Query: Byg en forespørgsel, der henter data fra et web-API eller FTP-kilde. Sæt tidsstyring, så regnearket opdateres hver morgen.

Anvend PRICE() eller dine egne yield-til-kurs formler til at beregne opdaterede markedsværdier efter import.

Scenarier og følsomhed

Lav en Data Tabel (ét input pr. række, ét pr. kolonne) til at variere:

Variabel Lav Baseline Høj
Renteændring (bps) -100 0 +100
Kreditspænd (bps) -25 0 +50

For hver kombination beregner du Total Markedsværdi, Portefølje-Yield og Årlig Cash flow-dækning. Brug en Heatmap til hurtigt at se worst-case-felter.

Dokumentation og versionsstyring

  • Antagelser: Opsummer betaantagelser, skattesatser, prisdatakilder og yieldberegning i en læs-mig-fane.
  • Versionslog: En tabel med dato, version, ændring og ansvarlig.
  • Tjekliste før handel: Automatisér med FORM CONTROLS (checkbokse) for at bekræfte:
    • Likviditetsbuffer ≥ X kr.
    • Maks. eksponering pr. udsteder ≤ Y %.
    • Ingen obligationer under min. rating BBB-.

Kend de vigtigste faldgruber

Bare fordi stigen “ser pæn ud”, er den ikke risikofri. Vær særlig opmærksom på:

  • Kreditrisiko – nedgradering eller default kan skabe huller i stigen.
  • Renterisiko – lange trin taber mest ved stigende renter; scenarietest jævnligt.
  • Likviditetsrisiko – niche-obligationer kan være svære at sælge eller rulle.
  • Call-risk – præmature indfrielser flader stigen og kræver hurtig genopbygning.
  • Skattebehandling – beskatning af kursgevinst, lager vs. realisationsprincippet, og kuponrenter påvirker det reelle afkast.

Ved at kombinere et stærkt visuelt overblik, klare rulningsregler og disciplineret vedligehold forvandler du Excel-arket fra et statisk regneark til et levende styringsværktøj for din obligationsstige.

Indhold