MAKROskop

Uafhængig kontrol · MAKRO 2026-June

Kan man stole på tallene?

MAKROskops frie beregningsmotor løser MAKROs ligninger uden kommerciel software. Vi har efterprøvet den på to måder: ved at løse præcis de samme stød-scenarier med den officielle GAMS-platform (solveren IPOPT) og med vores egen frie Newton-løser — og ved at lade den frie løser genfinde modellens egen løsning for alle 2.197.277 ligninger over hele horisonten. Begge prøver bestås til maskinpræcision.

Typisk uenighed mellem de to løsere
1,1 × 10⁻¹⁵
median, relativt — maskinpræcision
Ligninger løst i fuld skala
2.197.277
hele horisonten 2022–2129 på én lejet server
Variable der reagerede på rentestødet
142.289
alle sammenlignet én for én
Enighed om selve stød-effekterne
12 cifre
median-afvigelse 2,0 × 10⁻¹² af effektens størrelse

Sådan testede vi

  1. Samme ligninger. MAKRO-repositoriet indeholder hele modellen i udfoldet form (2.197.277 ligninger). Vores motor genlæser dem tegn for tegn; ved modellens egen løsning er den største ligningsfejl 1,4 × 10-9 — ren afrundingsstøj.
  2. Samme stød, to løsere. Et veldefineret stød (fx renten +1 pct.-point i 2124) lægges ind i begge systemer. GAMS/IPOPT kører under en gyldig licens; den frie løser bruger kun open source-komponenter. Alle 202.666 ubekendte i et 10-års udsnit sammenlignes variabel for variabel — både niveauer og selve stød-effekterne.
  3. Fuld skala. På en lejet server med 64 GB hukommelse forstyrres alle 2.197.277 variable i hele modellen tilfældigt, og den frie løser skal finde tilbage til modellens egen løsning. Derefter løses det første rigtige scenarie over hele horisonten.

Hele modellen, hele horisonten

2.197.277 ligninger · 108 år (2022–2129) · Hetzner CCX43 (16 AMD-kerner, 64 GB RAM), Ubuntu 24.04

Genfinder modellens egen løsning efter tilfældig forstyrrelse
Forstyrrelse af alle variable±0,01 pct. relativt
Slutresidual, ‖fejl‖1,7 × 10-10
Median-afvigelse fra CONOPTs original1,0 × 10-15
Størst afvigelse (enkelte NPV-variable)1,6 × 10-3
Én faktorisering, UMFPACK618 s
Newton-iterationer5

Lineære systemer løses af UMFPACK (via kvxopt) som arbejdshest; Pardiso probes og afvises ved fejlfaktorisering; SuperLU som sidste udvej. Hver faktorisering efterprøves mod en kendt højreside, før den bruges; i denne kørsel blev Pardiso afvist ved iteration 4 og UMFPACK tog over — kæden er designet, så en tvivlsom faktorisering aldrig kommer igennem. Desuden: rækkeekvilibrering + iterativ forbedring til relativ rest 1e-11.

Newton på 2.197.277 ligninger

Fejlen falder fra 1,3 × 102 til 1,7 × 10-10 på 5 iterationer — samme kvadratiske signatur som i det lille udsnit.

Iteration‖fejl‖
start1,3 × 102
15,7 × 10-3
25,1 × 10-5
31,3 × 10-6
44,8 × 10-9
51,7 × 10-10

Det første rigtige scenarie: Rente (ECB) +100 basispoint, permanent fra 2030, ufinansieret

rRenteECB(2030–2129): +0,01 (100 bp) — kontinuation i trin fra 1 pct. til 100 pct. af stødet

En permanent forhøjelse af ECB-renten med ét procentpoint fra 2030 lægger BNP -1,0 pct. under grundforløbet det første år og -1,5 pct. på det dybeste (2050); i 2100 er afvigelsen -1,1 pct.. Beskæftigelsen ligger -0,3 pct. i 2030 og er tilbage ved udgangspunktet i 2033 — det klassiske V, fordi lønnen tilpasser sig (-2,7 pct. på det laveste). Boligpriserne tager det største slag: -6,1 pct. i 2030, stadig -1,9 pct. i 2050. Den offentlige saldo svækkes med -0,9 pct.-point af BNP i 2030, men vender til +0,6 pct.-point i 2050 — stødet er ufinansieret, så ingen skattesats reagerer, og rentevirkningen på de offentlige finanser akkumulerer over tid.

Størrelsesordenerne svarer til DREAMs egne publicerede rentestød. Alle kurver kan udforskes under Scenarier.

Sådan blev det løst
Ligninger i løsningsvinduet2.052.825 (2029–2129)
Kontinuationstrin7 konvergerede · 1 afvist og halveret
Faktoriseringer (UMFPACK)19 · 10,3 timer
Slutresidual, ‖fejl‖9,8 × 10-10

Sidste kontinuationstrin (82,2 pct. → 100 pct. af stødet)

Iteration‖fejl‖
start1,8 × 10-3
12,3 × 105
27,7 × 103
33,1 × 10-1
41,1 × 10-4
54,3 × 10-8
69,8 × 10-10

Iteration 1–2 lader fejlen eksplodere: det er langsigtede nutidsværdi-variable, der lægger sig til rette efter et fuldt Newton-skridt. Løseren accepterer det bevidst (ikke-monoton linjesøgning) og lander derefter på maskinpræcision.

To løsere, samme svar: Rentestød: ECB-renten +100 basispoint (2124)

rRenteECB(2124): 3,50 pct. → 4,50 pct. · 10-års udsnit 2120–2129

Uenighed mellem løserne, 202.666 variable
Median (relativt)1,1 × 10-15
99,9-percentil9,3 × 10-11
Størst (IPOPTs egen tolerance)8,4 × 10-6
Stød-effekter, median-afvigelse2,0 × 10-12 af effekten
GAMS/IPOPT65s · Normal Completion / Locally Optimal
Fri løser, slutresidual3,5 × 10-10

Sidste kontinuationstrin (69,3 pct. → 100 pct. af stødet)

Newtons metode må midlertidigt lade fejlen vokse (skridt 1) — derefter falder den kvadratisk mod nul. Det er signaturen på en korrekt løsning, ikke en tilnærmelse.

Iteration‖fejl‖
start3,1 × 10-3
12,8 × 100
22,7 × 10-6
33,5 × 10-10

Oliepris: Brent +10 pct. (2124)

pOlieBrent(2124): 686,6 → 755,3

Median-uenighed9,4 × 10-16
99,9-percentil2,0 × 10-10
Fri løser1 Newton-iteration

I kalibrerings-konfigurationen er de udenlandske pris-kanaler faste input, så stødet forplanter sig kun til få variable. Overensstemmelsen gælder hele systemet.

Indkomststød: BNI-residual +30 mia. (2124)

jvBNI(2124): 0 → 30

Median-uenighed1,3 × 10-15
99,9-percentil2,4 × 10-10
Fri løser2 Newton-iterationer

jvBNI er et bogførings-residual; stødet tester regnemaskineriet snarere end økonomien.

Genfinder løsningen i udsnittet

Alle 202.666 variable forstyrres tilfældigt på en bærbar; Newton skal finde tilbage.

Iteration‖fejl‖
start2,4 × 102
11,7 × 10-1
21,5 × 10-7
32,6 × 10-9
41,7 × 10-10

Løsningen genfindes med median-afvigelse 1,5 × 10-15 fra CONOPTs original.

Forbehold — læs dem

  • Krydstjekket mod GAMS/IPOPT er kørt på et 10-års udsnit (2120–2129) på en almindelig bærbar. I fuld skala har vi kun den frie løsers egen kontrol (genfinding af modellens løsning til 1,0 × 10-15); en GAMS-løsning af samme fuld-horisont-scenarie kræver licens og mange timer og er ikke gjort.
  • Rentescenariet er et rigtigt scenarie, men afvigelserne måles mod modellens kalibreringsforløb — ikke DREAMs officielle grundforløb, som ikke kan genskabes uden licenseret software. Til marginale eksperimenter gør det ingen forskel; tallene bør ikke citeres som "Finansministeriets".
  • Kolonnen "størst" i to-løser-testen afspejler IPOPTs stop-tolerance, ikke den frie løsers præcision; den frie løsers egne residualer er 100-1000 gange strammere. I fuld skala er de største afvigelser nutidsværdi-variable langt ude i horisonten, som er dårligt bestemte i selve modellen.
  • Maskiner: Apple M1, 16 GB RAM (10-års udsnit) · Hetzner CCX43, 16 AMD-kerner, 64 GB RAM (fuld horisont). Alt kan efterprøves: koden er open source, og MAKRO-modellen er MIT-licenseret. Reproduktion: etl/freesolver.py — parse, check, newton, oracle, solve-export (se README og cloud/).

Bygget på MAKRO – den makroøkonomiske model udviklet af DREAM-gruppen til Finansministeriet m.fl. Grundforløbet er stiliseret og egner sig kun til marginale eksperimenter, ikke som prognose. MAKROskop er en uafhængig prototype og ikke et produkt fra DREAM eller Finansministeriet.

MAKRO 2026-June · 01f2a43 · sidste dataår 2025 · MAKROskop · bygget 2026-08-25