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.
Sådan testede vi
- 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.
- 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.
- 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
| Forstyrrelse af alle variable | ±0,01 pct. relativt |
|---|---|
| Slutresidual, ‖fejl‖∞ | 1,7 × 10-10 |
| Median-afvigelse fra CONOPTs original | 1,0 × 10-15 |
| Størst afvigelse (enkelte NPV-variable) | 1,6 × 10-3 |
| Én faktorisering, UMFPACK | 618 s |
| Newton-iterationer | 5 |
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‖∞ |
|---|---|
| start | 1,3 × 102 |
| 1 | 5,7 × 10-3 |
| 2 | 5,1 × 10-5 |
| 3 | 1,3 × 10-6 |
| 4 | 4,8 × 10-9 |
| 5 | 1,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.
| Ligninger i løsningsvinduet | 2.052.825 (2029–2129) |
|---|---|
| Kontinuationstrin | 7 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‖∞ |
|---|---|
| start | 1,8 × 10-3 |
| 1 | 2,3 × 105 |
| 2 | 7,7 × 103 |
| 3 | 3,1 × 10-1 |
| 4 | 1,1 × 10-4 |
| 5 | 4,3 × 10-8 |
| 6 | 9,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
| Median (relativt) | 1,1 × 10-15 |
|---|---|
| 99,9-percentil | 9,3 × 10-11 |
| Størst (IPOPTs egen tolerance) | 8,4 × 10-6 |
| Stød-effekter, median-afvigelse | 2,0 × 10-12 af effekten |
| GAMS/IPOPT | 65s · Normal Completion / Locally Optimal |
| Fri løser, slutresidual | 3,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‖∞ |
|---|---|
| start | 3,1 × 10-3 |
| 1 | 2,8 × 100 |
| 2 | 2,7 × 10-6 |
| 3 | 3,5 × 10-10 |
Oliepris: Brent +10 pct. (2124)
pOlieBrent(2124): 686,6 → 755,3
| Median-uenighed | 9,4 × 10-16 |
|---|---|
| 99,9-percentil | 2,0 × 10-10 |
| Fri løser | 1 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-uenighed | 1,3 × 10-15 |
|---|---|
| 99,9-percentil | 2,4 × 10-10 |
| Fri løser | 2 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‖∞ |
|---|---|
| start | 2,4 × 102 |
| 1 | 1,7 × 10-1 |
| 2 | 1,5 × 10-7 |
| 3 | 2,6 × 10-9 |
| 4 | 1,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/).