9 trin til en Monte Carlo-simulering

9 trin til en Monte Carlo-simulering

Forestil dig, at du kan ”spole frem” i tid og se tusindvis af mulige fremtider for din portefølje – før du overhovedet trykker på købsknappen. Det er præcis den superkraft, en Monte Carlo-simulering giver dig som investor. I stedet for at satse på ét enkelt fremtidsscenarie kan du med få klik teste, hvor robust din strategi er, når virkeligheden kaster både sorte svaner, grønne svan­er og alt derimellem efter markedet.

FCE Invest | Din online investeringsportal får du i denne guide en trin-for-trin-opskrift på, hvordan du bygger din egen Monte Carlo-model – uden at drukne i avanceret matematik eller dyre softwaresystemer. Vi koger processen ned til 9 praktiske trin, der spænder fra at definere dine mål til at validere og implementere resultaterne i din daglige investeringsbeslutning.

Om du vil stress-teste en aktieportefølje, beregne Value at Risk, eller finde ud af om dine pensionsmidler rækker til en tidlig tilbagetrækning, så får du her et solidt fundament. Undervejs lærer du:

  • Hvordan du omsætter usikkerhed til konkrete input-fordelinger
  • Hvorfor korrekt kalibrering er forskellen på meningsfuld indsigt og talmagi
  • Hvilke faldgruber du skal undgå, når du fortolker resultaterne
  • Og ikke mindst – hvordan du gør hele processen gentagelig og transparent, så både du og din investeringskomité kan sove roligt om natten

Smut forbi kaffemaskinen, spænd sikkerhedsbæltet, og gør dig klar til at simulere dig til bedre beslutninger. Lad os dykke ned i de 9 trin til en Monte Carlo-simulering!

Trin 1: Afklar problem og beslutningsmål

Før du skriver én linje kode, skal du være krystalklar på hvorfor du overhovedet laver en Monte Carlo-simulering. En skarp problemformulering fungerer som GPS for hele projektet – uden den risikerer du at få svar på et spørgsmål, ingen har stillet.

1. Hvad vil du vide?

  • Porteføljeafkast: Hvad er den forventede årlige eller kumulative performance?
  • Sandsynlighed for tab: Hvor stor er chancen for et negativt afkast over en given periode?
  • VaR / CVaR: Hvilket tab kan forventes (eller overskrides) med fx 95 % konfidens?
  • Net Present Value (NPV): Hvad er nutidsværdien af fremtidige cashflows under usikkerhed?
  • Kapitalbehov: Hvilken indskudskapacitet kræves for at holde sandsynligheden for insolvens under X %?

2. Afgræns tidshorisont

Alle risikomål er tidsafhængige. En 1-dags VaR fortæller intet om et 10-års pensionsmål. Gør derfor følgende:

  1. Fastlæg måldato (fx de næste 12 måneder, 5 år eller 30 år).
  2. Vælg tidsdiskretisering (dag, uge, måned, kvartal) – den styrer datakrav og beregningstid.
  3. Beslut om der skal antages kontinuerlig vs. diskret rebalancering.

3. Definér beslutnings- og succeskriterier

Dimension Eksempel
Beslutningskriterium Vælg portefølje A, hvis den har lavere 5 %-CVaR end portefølje B og en forventet Sharpe > 0,6.
Succesmetrik ≥ 90 % sandsynlighed for at slutte over inflationsrate + 3 % p.a.
Constraint Max 15 % sandsynlighed for drawdown > 20 % på 12 måneder.

4. Formuler målet som en smart-sætning

Specifikt, Målbart, Achievable, Relevant, Tidsbestemt.
Eksempel: “Opnå mindst 5 % realt årligt afkast med 95 % sikkerhed over de næste 10 år.”

5. Tjekliste før du går videre

  • Har du én klar hovedmetrik + 1-2 sekundære?
  • Er tidshorisonten entydigt defineret?
  • Er beslutningsreglen nedskrevet, så en kollega kan forstå og implementere den?
  • Ved du, hvilke interessenter der skal bruge resultaterne, og i hvilket format?

Når disse punkter er “green-lighted”, kan du trygt bevæge dig videre til Trin 2 og begynde at kortlægge de usikre drivere.

Trin 2: Kortlæg usikre drivere og antagelser

Med et klart beslutningsmål i hånden er næste opgave at afdække hvor usikkerheden kommer fra. En Monte Carlo-model er kun så god som de drivere, du tillader den at variere, så brug lidt ekstra tid på denne kortlægning.

1. Saml en bruttoliste over usikre variable

  • Finansielle markedsvariable: afkast på aktier, obligationer, råvarer, alternative aktiver.
  • Volatiliteter & korrelationer: tidsvarierende volatilitet (f.eks. GARCH) og samvariation mellem aktivklasser.
  • Makroøkonomi: renter, inflation, valutakurser, BNP-vækst, arbejdsløshed.
  • Porteføljeforhold: løbende ind- og udbetalinger, rebalanceringstriggere, cash-drag.
  • Omkostninger: forvaltningsgebyrer, transaktionsomkostninger, skat.
  • Projekt-/virksomhedsspecifikt: salgsvolumen, priselasticitet, CAPEX/OPEX, restværdi.

2. Klassificér som eksogene eller endogene

En praktisk måde at strukturere listen på er at afgøre, om en variabel påvirkes af modellens andre output eller ej:

Driver Beskrivelse Type
Aktieafkast Årligt (log)-afkast på MSCI World Eksogen – fastsat af markedet
Volatilitet 10-dages rullende standardafvigelse Eksogen
Portefølje­værdi Sum af aktivstier Endogen – beregnes i hvert tidssteg
Transaktionsomk. Afhænger af handelsvolumen pr. rebalancering Endogen
Inflation Årlig CPI-ændring (scenarier fra Nationalbanken) Eksogen

3. Tegn et influence-diagram

  1. Placer output-metric (f.eks. samlet formue efter 30 år) i højre side.
  2. Tegn pile fra hver usikker driver, der påvirker outputtet direkte.
  3. Indsæt mellemliggende beregnede størrelser (skat, gebyrer, cashflows) som cirkler – disse er typisk endogene.

Diagrammet fungerer som tjekliste: Hvis en eksogen variabel ikke har en pil ind i modellen, mangler du en formel; hvis en endogen variabel ikke fodrer videre til et resultat, er den måske irrelevant.

4. Vurder materialitet

Ikke alle usikre variable kræver fuld stokastisk behandling. Overvej:

  • Elasticitet: Hvor meget ændres output pr. 1 %-ændring i driveren?
  • Variations­bredde: Er der realistisk udsving nok til at påvirke beslutningen?
  • Kompleksitet: Koster det mere regnetid end den information, du får retur?

5. Dokumentér antagelser

For hver driver skal du nedfælde følgende:

  • Datakilde & tidsperiode (f.eks. Stoxx Global 1800, 2000-2023 daglige priser).
  • Stikord om statistik (middel, σ, haletykkelse).
  • Begrundelse for eksogen vs. endogen klassificering.
  • Eventuelle forretnings­regler (f.eks. Rebalancer når aktivallokation afviger >5 pp.).

Når denne kortlægning er fuldført, har du en solid base til at vælge fordelinger og afhængigheder i næste trin – og du kan allerede nu sortere irrelevante eller redundante variable fra, før de fordyrer simuleringen.

Trin 3: Vælg passende sandsynlighedsfordelinger og afhængigheder

Før du trykker “kør” på din Monte Carlo-model, skal hver usikker driver klædes på med en realistisk sandsynlighedsfordeling og en troværdig samvariation med de øvrige drivere. Forkerte antagelser her forplanter sig direkte til dine resultater, så brug tid på at få matchet fordeling og afhængighed rigtigt.

1. Match drivere med den rette fordeling

Type af driver Typiske fordelinger Hvornår giver det mening?
Aktieafkast (log-retur) Lognormal, Student-t Lognormal til “normale” perioder; t-fordeling hvis du vil fange fat tails og hyppigere ekstreme udsving.
Valuta- og råvareafkast Normal, t, jump-diffusion Normal til korte horisonter med små udsving; t eller jump-diffusion hvis pludselige prisstød er vigtige.
Renteniveau Normal, lognormal (shiftet) Normal omkring nul; lognormal hvis renten ikke må blive negativ, eller ved lange horisonter.
Inflation Triangulær, normal Triangulær når du kun har bedste bud på min-, base- og maks-scenarie; normal ved rige historikdata.
Default-sandsynlighed / recovery Beta Beta ligger naturligt mellem 0 og 1 og kan formes til både symmetriske og skæve forløb.
Projekt-NPV / omkostningsoverskridelser Triangulær, PERT God når viden er ekspertbaseret, og “most likely” scenariet er kendt.

Tre tommelfingerregler

  1. Respektér naturlige grænser. Afkast kan i princippet gå fra −100 % til ∞, mens volatilitet eller sandsynligheder aldrig må blive negative.
  2. Tjek halerne. Undervurderer du halerisiko, undervurderer du VaR/CVaR – især kritisk ved porteføljestyring.
  3. Test med data. Brug histogrammer, QQ-plots og goodness-of-fit tests (Kolmogorov-Smirnov, Anderson-Darling) før du låser en fordeling.

2. Indbyg afhængigheder mellem drivere

Selv den bedst valgte marginalfordeling er utilstrækkelig, hvis aktie-, rente- og råvarestier trækkes uafhængigt. Virkeligheden er fuld af korrelationer – og de er sjældent konstante.

  1. Korrela­tionsmatrix
    Hvornår? Når alle marginals er (tilnærmelsesvis) normalfordelte.
    Hvordan? Estimér historisk korrelationsmatrix Σ, sørg for at den er positiv definit (evt. via nearest PD-algoritme), og anvend Cholesky-dekomponering:
    z ~ N(0,I)L = cholesky(Σ)x = μ + L · z // giver korrelerede normaler
  2. Gaussian eller t-copula
    Hvornår? Når marginals er forskellige (fx lognormal aktieafkast, beta defaultrate) men du stadig vil styre lineær korrelation.
    Hvordan? Generér korrelerede standard-normaler som ovenfor, transformér hver komponent gennem sin inverse CDF:
    u = Φ(x) // uniform på [0,1]y = F-1(u) // brug specifik marginal CDF

    En t-copula giver tykkere multivariate haler ved at erstatte N(0,I) med multivariat t-støj.

  3. Archimedean copula (Clayton, Gumbel)
    Hvornår? Hvis du især bekymrer dig om tail-dependence: fx simultane tab ved markedsstress.
    Hvordan? Kalibrér copula-parameter til at matche observeret tail-sammenhæng eller stress-scenarier, og brug samme CDF-inversion som ovenfor.

Praktisk tjekliste før du går videre til Trin 4:

  • Alle drivere har nu en valideret marginalfordeling, inkl. parameterværdier.
  • Du har dokumenteret kilder (historik, ekspertvurdering) og eventuelle transformationer (log, differens).
  • Korrela­tions- eller copula-strukturen er kalibreret og testet med back-of-the-envelope-scenarier: giver den rimelige porteføljeudsving i stress og boom?
  • Monte Carlo-koden kan generere ét sæt korrelerede tilfældige træk, der rammer både marginal- og afhængighedsantagelserne. Log fejl, så du opdager negative variancer eller korrelationsbrud tidligt.

Med en veldefineret fordeling for hver driver – og en realistisk fælles afhængighed – er du klar til at samle data og finjustere parametrene i næste trin.

Trin 4: Indsaml data og kalibrér parametre

Når de usikre drivere og deres fordelinger er valgt, gælder det om at få de numeriske parametre på plads. Det gør du ved at kombinere historiske datasæt med kvalitative skøn, så modellen både hviler på evidens og forretningsforståelse.

1. Vælg datakilder

  • Markedsdata: prisserier fra Bloomberg, Refinitiv, Stoxx m.fl.
  • Makrodata: inflation, BNP-vækst, rentekurver fra Danmarks Statistik, OECD, FRED.
  • Regnskabsdata: cash-flows, marginer, CAPEX fra årsrapporter eller databaser som FactSet.
  • Ekspertinput: strategers 10-års forventninger, scenarier fra IMF, eller intern risk-komités “house view”.

2. Estimér moments og haler

  1. Middelværdi (μ): Gennemsnitligt årligt afkast, vægtet for driftstid hvis der er fusioner/spin-offs.
  2. Volatilitet (σ): Årlig standardafvigelse eller EWMA/GARCH hvis volatiliteten er tidsvarierende.
  3. Skævhed & kurtosis: Brug stats.skew() og stats.kurtosis() til at måle hale-tykkelse. Er kurtosis > 3, bør du overveje en t-fordeling eller EVT-tilpasning.
  4. Regimeparametre: Identificér bull/bear-regimer med Markov-skift eller Bai-Perron break-tests og estimer separate μ/σ for hvert regime.

3. Test nøgleantagelser

Antagelse Test Mulig justering
Stationaritet ADF, KPSS Differencér serie eller arbejd med excess returns
Ingen autokorrelation Ljung-Box, Durbin-Watson Modelér AR(1)/ARMA eller øg tidsinterval (dag → uge)
Tynde haler (normalitet) Jarque-Bera, Q-Q plot Skift til t, skewed t eller brug cornish-fisher korrektion

4. Kalibrér til fremtiden – Ikke blot fortiden

  • Blend historik og forecast: Lav en vægtet middel: 70 % historik / 30 % strategisk outlook.
  • Shrinkage-teknikker: Ledoit-Wolf til at stabilisere kovarians-matricen, især ved få observationer.
  • Stressscenarier: Skru bevidst op for haletykkelsen ift. finansielle kriser og pandemier.

5. Dokumentér og versionér

Gem alle inputfiler, kode-notebooks og valgte statistik-tests som en del af model-dokumentationen. Brug versionskontrol (Git) og noter dato, datakilde og ansvarlig analytiker, så du kan genskabe kalibreringen, når modellen senere skal revideres.

Trin 5: Opbyg den deterministiske model

Før du smider et eneste tilfældigt tal ind i modellen, skal du have en deterministisk “rygrad”, der beskriver præcis, hvordan en krone bevæger sig gennem systemet:

  1. Indskud / kapitalgrundlag – startportefølje og fremtidige indbetalinger.
  2. Kontantstrømme fra aktiver – dividender, kuponer, udbytter.
  3. Interne modregninger – gebyrer, transaktionsomkostninger, performance fees.
  4. Eksterne fradrag – skat på afkast og realiserede gevinster.
  5. Output – slutkapital, løbende udbetalinger, risk-metrics (VaR, drawdown mv.).

Modelstrukturen skal være så klar, at du kan køre en nul-støj-scenarie (alle afkast = 0), og stadig få et meningsfuldt forløb af kontanter ind / ud af porteføljen.

2. Rebalancering og porteføljeregler

Bestem hvordan porteføljen justeres over tid. De mest udbredte varianter er:

Metode Beskrivelse Data der kræves
Fast frekvens Rebalancér fx månedligt til en strategivægt. Dato-kalender, vægte, max. afvigelser
Trigger-baseret Kun hvis vægtafvigelse > tærskel (±5 ppt). Aktuelle vægte, tærskel, cut-off-dato
Cashflow-drevet Nye indskud bruges til at bringe vægte tilbage på mål. Kontantstrømme, target weights

Indarbejd transaktionsomkostninger som lineære (procent af handelsværdi) eller ikke-lineære (fast + variabel). Husk at gebyrerne forstørres i simuleringen, når handelsfrekvensen stiger.

3. Skatte- og omkostningsblokke

  • Løbende beskatning – fx lagerbeskatning af danske investeringsforeninger.
  • Realisation – trigger ved salg i rebalancering; behold drift mellem salg for at udskyde skat.
  • Gebyrer – administrative %, performance fees med high-water-mark, fast depotgebyr.

Implementér disse som cashflow(t)-funktioner, så de indgår i samme tidslinje som afkastet.

4. Vælg tidsdiskretisering

Ofte gælder: jo kortere tidsskridt, jo mere præcist – men også jo dyrere numerisk.

  • Dag – nødvendigt til intradag-risiko, optionsporteføljer, jump-processer.
  • Uge – kompromis ved porteføljer med illikvide aktiver, hvor der ikke handles dagligt.
  • Måned – til pensionsporteføljer eller strategiske allokeringer.

Dokumentér dine antagelser: lader du fx “daglige” gebyrer opkræves pro rata? Skal skatten først betales årligt?

5. Definér dynamikken for afkastet

Proces Formel (kontinuerlig notation) Hvornår egnet?
Geometrisk Brownsk Bevægelse (GBM) dS/S = μ dt + σ dW Aktier, brede indeks – simpelt, log-normal fordeling.
AR(1) r_t = α + φ r_{t-1} + ε_t Renter, inflationsserier, mean-reversion.
Jump-diffusion (Merton) dS/S = (μ-λκ)dt + σ dW + J dq Olieselskaber, krypto, hvor større spring forekommer.
Regime skift (Markov) μ, σ skifter efter skjult Markov-kæde Makro-styrede strategier, krise/anvende konjunkturafhængighed.

Alle processer skal omskrives til den valgte tidsdiskretisering. For GBM med Δt i år gælder fx:

r_t = (μ - 0.5 σ²) Δt + σ √Δt · Z_t

6. Constraints og realitetscheck

Indfør begrænsninger tidligt, så de ikke “hacker” din stokastiske del senere:

  • Vægte: 0 % ≤ w_i ≤ 20 % i enkeltaktier, maks. 60 % aktier totalt.
  • Likviditet: minimum 3 % af porteføljen i kontanter.
  • Caps på gearing, belåning eller derivat-eksponering.

Når afkastene senere simuleres, kontrollerer modellen automatisk om constraints brydes og foretager tvangssalg eller nedskalering.

7. Eksempel på “deterministisk skelet” i pseudo-kode

# initialiseringvalue[0] = startkapitalweights[0] = target_weightsfor t in tidssteg: # 1. modtag kontantstrømme (dividend, kupon) cash_in = cashflow_in(t, value[t-1])  # 2. træk gebyrer og skatter cash_out = fee(t, value[t-1]) + tax(t)  # 3. anvend rebalancering value_post_fee = value[t-1] + cash_in - cash_out weights[t] = rebalance(value_post_fee, weights[t-1], constraints)  # 4. afkast beregnes først i Trin 7 (stoch. simulering) # placeholder så du kan teste flowet value[t] = value_post_fee # uden afkast

Når denne kode kører uden fejl, før du tilføjer tilfældige afkast, har du en solid deterministisk model, der kan danne basis for den efterfølgende Monte Carlo-simulering.

Trin 6: Opsæt tilfældighedsmotor og sampling-teknikker

Før du kan trykke “Run” på selve Monte Carlo-modellen, skal fundamentet for den tilfældige talstrøm være solidt og gennemtænkt. En dårlig generator eller forkert sampling kan forplante sig som systematiske fejl i alle efterfølgende trin. Nedenfor finder du en praktisk tjekliste, eksempler på kode og et overblik over de mest udbredte teknikker.

1. Vælg en robust rng & fastsæt seed

  1. Generator-typer:
    • Mersenne Twister (MT19937) – høj periode (219937-1), standard i NumPy/R/Matlab.
    • PCG – moderne, hurtig og med bedre statistiske egenskaber end MT til kortere sekvenser.
    • Xoshiro/Xoroshiro – ekstremt hurtige til GPU-beregninger, men kræver TestU01 validering.
  2. Seed-strategi:
    • Fastsæt altid et seed i analysefasen (fx rng = np.random.default_rng(seed=42)) så resultaterne kan genskabes.
    • Generér uafhængige strømme (sub-streams) til forskellige porteføljer: Seed₀ + i · Δ.
    • Log seed i output-filen sammen med versionsnummer for koden.

2. Sampling: Fra u(0,1) til ønsket fordeling

Metode Ide Fordele Ulemper
Inverse transform u → F-1(u) Simpel, virker for alle fordelinger m. lukket invers Kan være numerisk tung (fx t-fordeling med mange frihedsgrader)
Box-Muller (polar) To u → N(0,1) via trig-transformation Elegant, ingen tabeller, høj præcision Dobbelt brug af log() & sqrt() ⇒ dyrt på store simuleringer
Ziggurat Piecewise-konstant approksimation 3-4× hurtigere end Box-Muller Mere kompleks kode, svært at debugge
# Eksempel: normalfordelte afkast med Box-Mullerimport numpy as npseed = 42rng = np.random.default_rng(seed)u1 = rng.random(size=n_paths * n_steps)u2 = rng.random(size=n_paths * n_steps)z = np.sqrt(-2 * np.log(u1)) * np.cos(2 * np.pi * u2) # N(0,1)

3. Variansreduktion – Få mere præcision for samme regnetid

  1. Antithetiske variabler
    Generér både u og 1-u; middelværdiens varians falder typisk 30-50 %.
  2. Latin Hypercube Sampling (LHS)
    Del [0,1] ind i n lige store intervaller og træk ét punkt pr. interval. Garanterer bedre dækning af input-rummet – især ved få scenarier (n < 1 000).
  3. Stratificering
    Brug prædefinerede strata (fx kvartiler af volatilitet) og vægt resultaterne efter strata-sandsynligheder. Reducerer højre-hale-støj ved VaR/CVaR-beregninger.
  4. Control variates & importance sampling (avanceret)
    Indbyg referencevariable med kendt forventning eller overvægt ekstreme stier. Kræver matematisk kalibrering men kan skære varians med en størrelsesorden.

4. Praktiske tommelfingerregler

  • Kør mindst 10 000 stier uden variansreduktion eller 2 000-5 000 stier med LHS/antithetics for at opnå SE < 1 % på 95-percentiler.
  • Dokumentér RNG-type, seed, antal stier og variansreduktion i modelrapporten (audit trail).
  • Benchmark mean-variance mod analytiske løsninger (fx Black-Scholes) før du går live.

Når du konsekvent anvender ovenstående principper, er du sikker på, at enhver variation i dine resultater reelt skyldes økonomisk usikkerhed – ikke ustyrlige tilfældige tal.

Trin 7: Kør simuleringen

Når den deterministiske model er på plads, skal du bringe den til live via Monte Carlo-kørslen. Her gælder det om at finde den rette balance mellem præcision, performance og sporbarhed.

1. Fastlæg antal iterationer (n)

  • Usikkerheden på et estimat falder proportionalt med 1/√N. Dobbelt præcision kræver derfor cirka fire gange så mange simuleringer.
  • Start med et konservativt mål og udvid i batches. Eksempel: 10.000, 50.000, 100.000 … indtil konvergenskriteriet (se punkt 4) er opfyldt.
Output-metrik Typisk præcisionskrav Guideline for N
Gennemsnitligt afkast ±0,10 %-point 5.000 – 10.000
95 % VaR ±0,05 %-point 30.000 – 100.000
CVaR / tail-risiko ±0,02 %-point 100.000+

2. Vælg tidsdiskretisering (δt)

  • Daglig: Nødvendig ved options-prissætning, intradag-gebyrer eller højfrekvent rebalancering.
  • Månedlig: Ofte tilstrækkelig til pensions- og porteføljesimuleringer, hvor omkostninger og cashflows posteres månedligt.
  • Årlig: Kun hvis dynamikken er simplificeret, fx NPV-analyse af et enkelt projekt.

3. Parallelisér for hastighed

  • Monte Carlo er ideelt til embarrassingly parallel behandling: hver tilfældig sti kan køres uafhængigt.
  • Udnyt:
    • Multi-core CPU (Python multiprocessing, R parallel, MATLAB parfor).
    • GPU (CUDA, PyTorch, TensorFlow) til massive matricemultiplikationer.
    • Cloud-clusters via Spark eller Dask, hvis iterationsantallet går i millioner.
  • Husk at synkronisere tilfældighedskilderne (seed) på tværs af worker-processer for reproducerbarhed.

4. Log mellemresultater for diagnosticering

  • Gem hele stier eller aggregerede nøglepunkter (slutværdi, drawdown, tid-under-vand).
  • Log periodisk (fx hver 5.000 iteration) så du kan:
    • Overvåge konvergens af middel, VaR, elasticiteter m.m.
    • Fange numeriske fejl, overflow eller urealistiske værdier tidligt.
  • Inkludér metadata: timestamp, model-version, seed, hardware-profil.

5. Anvend stopkriterier, når estimaterne konvergerer

  1. Definér et toleranceniveau (ε) for hver vigtig metrik, fx:
    • Gennemsnitligt afkast: ε = ±0,05 %-point
    • 95 % VaR: ε = ±0,03 %-point
  2. Kør i batches på fx 10.000 stier ad gangen.
  3. Efter hvert batch opdateres det kumulative estimat og dets 95 % konfidensinterval.
  4. Stop når både:
    • CI-bredden < 2·ε, og
    • den ikke har ændret sig væsentligt de seneste tre batches.

Når disse kriterier er opfyldt, er simuleringen både statistisk robust og effektiv i ressourcer – klar til næste trin, hvor resultaterne skal analyseres og omsættes til investeringsbeslutninger.

Trin 8: Analysér og fortolk resultaterne

Nu ligger der et stort datasæt med N simulerede udfald – typisk flere tusinde stier. Det næste skridt er at koge den enorme informationsmængde ned til få, handlingsorienterede indsigter.

1. Beregn centrale nøgletal

  1. Deskriptiv statistik
    Udregn middelværdi, median, standardafvigelse, skævhed og kurtosis på det samlede slut-afkast eller NPV. Disse tal giver et hurtigt overblik over fordelingens form.
  2. Percentiler & konfidensintervaller
    Percentilerne (fx 1 %, 5 %, 25 %, 50 %, 75 %, 95 %, 99 %) viser hvor i fordelingen de enkelte stier ender. For et 95 %-konfidensinterval finder du blot 2,5 %- og 97,5 %-percentilerne.
  3. VaR og CVaR
    • Value at Risk (VaRα): det maksimale forventede tab ved et givet konfidensniveau α (fx 5 %).
    • Conditional VaR (CVaR eller Expected Shortfall): gennemsnitstabet i den “hale”, der ligger ud over VaRα. CVaR fanger halerisikoen bedre end VaR.
  4. Sandsynlighed for målopnåelse
    Regn andelen af stier hvor f.eks. porteføljen overstiger et givet målafkast, dækningsgrad eller NPV > 0. Det er ofte mere intuitivt for beslutningstagere end abstrakte risikomål.
  5. Worst-case (min/max)
    Identificér de værste og bedste stier – eller de 1 % dårligste – for at illustrere ekstreme scenarier, stress-test og robusthed.

2. Visualiser fordelingen

Grafer hjælper hjernen med at forstå usikkerhed hurtigere end talkolonner.

  • Histogram: viser frekvensen af slut-afkast; supplér evt. med Kernel Density Estimate for en glattere kurve.
  • Fan-chart: læg alle stier oven på hinanden over tid og farv mellem percentiler (10/30/50/70/90 %). Det viser hvordan usikkerheden breder sig gennem tid.
  • Box-plot pr. periode: hurtigt overblik over median og haler i et tidsforløb.
  • Scenarietabel: kombiner flere KPI’er (f.eks. årligt afkast, drawdown, varighed) i en kompakt matrix.

Uddrag af resultatsammenfatning (slut-værdi efter 10 år)
Median 5 %-percentil 95 %-percentil VaR5 % CVaR5 % P(mål ≥ 6 % p.a.)
Portefølje 8,2 % -4,7 % 18,5 % -5,0 % -7,9 % 71 %

3. Fortolkning og kommunikation

  1. Sæt tallene i kontekst: Hvad betyder en 5 %-VaR på -5 %? Er virksomheden eller kunden komfortabel med den risiko?
  2. Brug det “sandsynlige” som udgangspunkt: Medianen eller 50 %-fanen beskriver det mest probable forløb.
  3. Fremhæv asymmetrier: Højre- eller venstrehale? Det påvirker valget af downside-beskyttelse.
  4. Tal i beslutningssprog: “Der er 71 % chance for at nå målet” er mere handlingsorienteret end “forventet afkast er 8,2 %”.
  5. Undgå falsk præcision: Afrund til hele eller halve procent-point og anfør usikkerhed (±).

Med en skarp analyse og klar visualisering bliver Monte Carlo-output ikke blot et hav af tal, men et solidt beslutningsgrundlag for alt fra aktivallokering til likviditetsstyring.

Trin 9: Sensitivitet, validering og implementering

Når du har kørt dine Monte Carlo-simulationer, stopper arbejdet ikke her. Resultaterne skal trykprøves, forklares og kobles til konkrete beslutninger, før de skaber reel værdi. Her er en struktureret fremgangsmåde:

1. Følsomhedsanalyse – Hvor robust er konklusionen?

  • Tornado-diagrammer: Variér én inputvariabel ad gangen (±1 σ, worst/best case eller pct.-ændring) og plot indvirkningen på et centralt output (f.eks. porteføljens 5 %-VaR). De længste bjælker afslører de drivere, der virkelig batter.
  • Elasticiteter: Beregn ∂Output/∂Input · (Input/Output). En elasticitet på 0,4 betyder, at en 10 % stigning i input øger output med 4 % – et hurtigt mål for “bang-for-the-buck”.
  • Multivariat scenarie-stress: Kombinér flere negative antagelser (fx faldende aktier, stigende renter, høj inflation) for at teste porteføljens survival-rate under simultane chok.

2. Validering – Rammer modellen virkeligheden?

  1. Backtest: Rul simulationen én måned (eller kvartal) ad gangen gennem historiske perioder og sammenlign forudsagte mod realiserede return- og risikotal. Brug MAPE, hit-rate på VaR-overskridelser og Kupiec-test.
  2. Sanity checks:
    • Er middel og volatilitet for simuleret afkast på linje med inputparametrene?
    • Ligger simulerede korrelationer i samme boldgade som den anvendte korrelationsmatrix?
    • Forekommer negative saldi eller arbitrage-situationer, som ikke burde kunne eksistere? Hvis ja, lås constraints eller justér koden.
  3. Benchmark mod lukkede formler: Når en lukket-formel findes (Black-Scholes, Gordon Growth, analytisk VaR), sammenlignes simulationens estimat med teorien for at spotte numeriske fejl eller modelskævhed.

3. Dokumentation og governance

Element Hvad skal dokumenteres? Hvor gemmes det?
Antagelser Fordelinger, parametre, korrelationer, rebalancerings-logik Model-wiki, version-kontrol
Beslutningsregler Hvornår handles? Hvilket konfidensniveau bruges? Stop-loss? Investeringspolitik (IPS)
Validerings-log Dato, testtype, resultat, anbefaling Audit-mappe

Gennemsigtighed gør, at både interne og eksterne interessenter (risikokomité, revisor, Finanstilsyn) kan gentage og forstå processen.

4. Implementering i investeringsprocessen

  • Beslutnings-dashboard: Integrér nøgletal (medianafkast, 95 %-VaR, sandsynlighed for at nå målet) i et live-dashboard, så porteføljeforvaltere ser dem sammen med markedsdata.
  • Opdaterings-kadence: Fastlæg, hvornår modellen re-kalibreres (månedligt, ved regimeskift, ved nye aktivklasser).
  • Automatiseret alarm: Sæt triggers, der udsender notifikation, hvis simuleret risikoniveau bryder foruddefinerede tærskler.
  • Løbende læring: Brug forskellen mellem simuleret og faktisk performance til at forbedre parameterestimering og modelvalg (Bayesiansk opdatering eller machine-learning re-fit).

Når følsomheden er forstået, valideringen bestået, og governance er på plads, kan Monte Carlo-resultaterne med ro i maven anvendes som beslutningsgrundlag – og løbende justeres, så de forbliver relevante i en verden, der ændrer sig hurtigere end Excel nogensinde kan regne.

Indhold

Type above and press Enter to search. Press Esc to cancel.