# Revisionslista, modellversion m3.3.1


## 0. Tillägg m3.3.1
- Tillväxtscenariot har två valbara redaktionella stresstest: **Företagen växer utan fler jobb** (förval) och **Företagen växer med få nya jobb**.
- Beräkningsformlerna är oförändrade från m3.3.0. Varianten sparas i delningslänken med `gv`; äldre uttryckliga val och egna antaganden bevaras.
- Dokumentationen har förtydligats om utgångsläge, uteblivna jobb, produktionsbidrag före AI-inköp, D62PAY, kapitalbeskattning, momsavdrag och basårets utgifter.

## 1. Rättad avgränsning (verifierat fel)
- Produktionsunderlaget blandade privat arbetskraftskostnad med hela ekonomins överskott.
  Nu marknadssektorerna S.11 + S.12 + S.14 för både D1 och överskott (Eurostat nasa_10_nf_tr).
  Växel: `privateSurplusScope`.
- Merkostnad för stöd och offentlig effektivisering tog ut sig mellan tillväxtvägarna i m3.2.1.
  Försvinner med avvikelseberäkningen.

## 2. Omformulerat scenario (ingen ändring av förval)
- Tillväxtscenariot räknas som AI-avvikelse i basårets ekonomi (`relativeGrowth`).
- Nytt löneläge `counterfactual`: uteblivna jobb utan automatiskt stöd.

## 3. Förtydligade begrepp
- "Produktionsbidrag före AI-inköp" och "Ytterligare AI-inköp" i reglage, text och kod.

## Kräver ekonomisk bedömning
- Asymmetrisk fördelning av negativt respektive positivt överskott.
- Om uteblivna jobb bör ge merkostnader för stöd, och hur stora.

# Revisionslista, modellversion m3.2.0

Avgränsad revision från m3.1.0. Siffror, steg för steg, finns i `AVSTAMNING.md`
(genereras av `scripts/granskning.ts` mot oförändrad kopia i `audit/m3.1.0/`).
Delade länkar med `mv=m3.1.0` räknas om med m3.2.0 och märks som äldre version.
Tillväxtscenariots gamla reglage (`gwh`, `gwa`, `gph`, `gpa`) finns inte längre och
ersätts av förvalen.

## 1. Rättade beräkningsfel

- **Brytpunkt för skattehöjning.** `taxRateBreakeven` kontrollerade bara intervallets
  slut. Beteendeformeln (1 + p)(1 − e·p) har maximum vid p = (1 − e)/2e, så för
  e = 0,5 gav +100 % samma intäkt som ingen höjning. Nu söks intervallet stegvis från
  noll och avgränsas med bisektion; lösningen kontrolleras genom motorn. Flera grupper
  och redan gjorda ändringar hanteras. Kontrollfallet (−0,1 % lönesumma, bortfall
  1,0446 mdkr) gav null i m3.1.0; nu 3,3 % (gruppen omfattar sedan punkt 2 även
  kapitaldelen av D51A). Regressionstest finns.
- **Samordnade vinstbrytpunkter.** `profitBreakeven` (egen förenklad formel, 298 mdkr i
  tillväxtscenariot) är nu en genväg till `baseBreakeven` (fullständig modell). Båda
  ger samma svar med samma mål, jämförelsealternativ och skatteinställningar.
- **Offentlig personalminskning.** Besparingen i offentlig konsumtion är
  arbetskraftskostnad (D1 + löneskatt) men drogs från D1. Nu divideras den med
  1 + löneskattekvoten (19,06 % 2024) först. Effekt: +1,4 till +4,0 mdkr i
  skatteintäkter beroende på scenario.

## 2. Korrigerad dataklassificering och ändrade samband

- **D51C är avkastningsskatt**, inte skatt på realiserade kapitalvinster (Eurostats
  detaljerade skattelista, fliken SE, rad 130–143; Skatteverkets beskrivning av
  avkastningsskatt). Utdelningar, räntor, realiserade kapitalvinster och
  ISK-schablonintäkt beskattas i inkomstslaget kapital och ingår i D51A.
  Skattelistan har ett annat uttagsdatum än modellens rådata; den används för
  klassificeringen och beloppen hämtas ur rådatan. Beloppsavvikelser mellan listan
  och rådatan har inte stämts av maskinellt i denna revision.
- Ändrade samband: skatt på ny utdelning och nya kapitalvinster bokförs i
  kapitaldelen av D51A. D51C följer BNP (försiktig förenkling; sparkapital saknas i
  underlaget). Reglaget "Skatt på kapitalinkomster och sparande" verkar på D51A:s
  kapitaldel och D51C. Historiska totaler är oförändrade (avvikelse 0).
- Lagstadgad sats 30 % (lagtext) skild från antagandet
  `directlyTaxedCapitalShare` = 1,0 (uttrycklig förenkling om full direktbeskattning;
  ISK, kapitalförsäkring, pension, utländska ägare och fåmansföretag modelleras inte).
- Omställningsstöd omfattar nu även offentligt anställda som förlorar jobbet genom
  offentlig effektivisering. Stödet avser ett årsbelopp i det antagna läget;
  andelen = ersättningsgrad × täckningsgrad × andel av året med stöd.
- D62PAY beskrivs som sociala kontantförmåner. "Halv elasticitet" ersatt med
  formeln för beteendeeffekten.

## 3. Ändrade scenarioantaganden

- `lostJobWagePct` 100 i alla scenarier (neutralt förval; tidigare 95 och 90).
  Känslighet 80/100/120 redovisas.
- Tillväxtscenariot: produktion = jobb × arbetstid × produktion per timme; lön per
  jobb härleds ur produktivitet och löneandel. Förval: jobb +3 % / +1 % (SCB:s
  befolkningsframskrivning: arbetsför befolkning växer långsamt), arbetstid
  konstant, produktion per timme +7,5 % / +13 %, löneandel 100 % / 50 %. Tidigare
  förval gav 10 % lägre produktion per jobb i jämförelsealternativet. Skillnaden
  mellan vägarna blir −21,0 mdkr (tidigare −89,0). Förvalen valdes inte för att nå
  ett visst resultat.
- Produktivitetsscenariots text beskriver nu att vinsterna kan minska; ett
  genererat utfall visar vinst- och prisförändring ur beräkningen.
  Produktionsantagandet är oförändrat.
- AI-inköp gäller privata företag; offentliga AI-kostnader ingår i införandekostnaden.

## Kvar för extern ekonomisk bedömning

- B2A3G som vinstproxy; fördelningen 74/4/22 av D51A; 0,9 × D29 som D29C.
- Fördelningen av hushållens aktieinnehav på sparformer (styr
  `directlyTaxedCapitalShare`); D51C:s koppling till sparkapital.
- Tillväxtvägarnas förval (sysselsättning, produktivitet, löneandel).
- Stödets ersättnings- och täckningsgrad; beteendeelasticiteterna.

---

# Revisionslista, modellversion m3.0.0

Numeriska underlag, mellanled och före/efter-tabeller finns i `REVISION.md`
(genereras av `scripts/revision.ts` mot `src/model/engine.ts`). Avstämningen
mellan modellversionerna m2.1.0 och m3.0.0, med effekten av rättade formler skild
från effekten av ändrade strukturparametrar och ändrade scenarioantaganden, finns
i `AVSTAMNING.md` (genereras av `scripts/granskning.ts`). Allt detta kan laddas
ner från sidan "Källor och kalkyler".

## Bekräftade fel som är rättade

1. **Arbetskraftskostnaden saknade löneskatter.** Företagens kostnadsförändring
   räknades på D1 enbart. Nu används arbetskraftskostnad D1 + den löneberoende
   delen av D29, kalibrerad som `employerTaxRatio = 0,9 × D29 / D1` i
   `calibrate()` (19,06 procent 2024). Ingen mekanisk påläggning av 19 procent och
   inte hela D29 – men inte heller den verifierade D29C-serien, utan en
   **bearbetning med redaktionellt antagande** om hur D29 delas mellan lönesumma
   och BNP. Begreppet följer SCB NR0103, ENS2010 T23RK (arbetskraftskostnad
   D1 + D29C).
   Effekt i scenariot "AI ersätter mycket arbete", isolerat genom att enbart
   `cal.employerTaxRatio` sätts till 0: **−128,5 → −119,6 mdkr**. Av skillnaden
   kommer 8,6 från kostnadssidan och 0,3 från att samma faktor också ingår i
   underlaget för produktionsökningen. (En tidigare version av listan angav
   −67,4 → −119,6. Det före-värdet togs fram genom att sätta
   `payrollShareOfProductionTax` till 0, vilket samtidigt ändrar kopplingen mellan
   D29 och lönesumman i skattegrupperna och därför inte isolerar
   arbetskraftskostnaden.)
2. **Besparingen klipptes vid noll.** Högre löner utan högre produktion gav
   tidigare en besparing på noll i stället för en kostnadsökning. Nu är
   `grossPrivateSaving = −dLabourCost` med tecken, och ett negativt netto bärs
   i sin helhet av vinsterna.
3. **Tillkommande vinst beskattades med historisk nivåsats.** Nivån är fortsatt
   kalibrerad mot verifierad intäkt mot B2A3G, men förändringen beskattas med
   `statutoryCorporateRate(year) × profitTaxableShareOfMarginal` (0,85).
   Lagstadgad sats per år: 28 % (–2008), 26,3 % (2009–2012), 22 % (2013–2018),
   21,4 % (2019–2020), 20,6 % (2021–). Den lagstadgade satsen är lagtext;
   genomslaget 0,85 är ett redaktionellt antagande om effektiv beskattning.
   Effekt i capital-scenariot: +5,1 mdkr.
4. **Utdelning och kvarhållen vinst dubbelräknades.** Utdelning tas nu ur vinst
   efter bolagsskatt, och `dividends + retainedProfit = vinst efter skatt`.
   Kapitalvinstunderlaget följer den kvarhållna delen. Satsen 30 procent är
   lagstadgad, men att tillämpa den på hela utdelningen och på halva den
   kvarhållna vinsten är antaganden om effektiv beskattning: sparformer,
   utländska ägare och fåmansföretagsregler modelleras inte.
5. **Prissänkningar tillfördes svenska hushåll i sin helhet.** Nu når bara
   `priceShareToHouseholds` (55 %) hushållen; resten gäller export, insatsvaror
   och offentliga kunder. Talet är ett redaktionellt antagande.
6. **Produktivitetsvinster var implicita.** Ökad produktion är nu ett eget
   antagande (`productionGainPct`, procent av privat förädlingsvärde), skilt
   från kostnadsbesparing. Samma vinst fördelas en gång mellan vinster, priser
   och annan användning.
7. **Stödbehovet kunde försvinna av höjda löner.** Omställningsstöd beräknas nu
   på bortfallen löneinkomst för de personer som förlorar jobbet
   (`lostWageIncomeShare`), inte på nettot i ekonomin. Inget stödgolv.
8. **Sammansättningseffekten saknades.** `lostJobWagePct` gör relativlönen i de
   försvunna jobben till ett uttryckligt antagande, och `jobShares()` justerar
   övriga jobbs snittlön så att den ursprungliga lönesumman bevaras.

## Redan hanterat före denna revision

- Referensen återges exakt vid oförändrade antaganden (kontrollfall 0,000).
- Varje effekt redovisas exakt en gång i A → B → C-kedjan.
- Kapitalvinstskatt följer inte lönesumman.
- D29 delas mellan lönesumma och BNP; D51A delas mellan arbete, pension och
  kapital med redaktionella, märkta andelar.
- Offentlig effektivisering rör bara offentlig sektor, jobbantagandena bara
  privat sektor, så samma personalminskning räknas inte två gånger.

## Ändrade strukturparametrar, skilda från rättade formler

Tre strukturparametrar ändrades samtidigt som formlerna rättades. De redovisas
separat i `AVSTAMNING.md` och `REVISION.md`, i ordningen nedan:

1. D51A-fördelningen 78/0/22 → 74/4/22 (`labourShareOfIncomeTax` 0,78 → 0,74 och
   ny `capitalShareOfIncomeTax` 0,04). Effekt i capital-scenariot med gamla
   scenarioantaganden: +3,0 mdkr.
2. Prissänkning till svenska hushåll, implicit 1,00 → 0,55: +0,3 mdkr.
3. Nya scenarioantaganden (`lostJobWagePct` 100 → 90, `productionGainPct`
   0 → 0,5): +11,9 mdkr.

Övriga strukturparametrar är oförändrade sedan m2.1.0. Ordningen påverkar
fördelningen mellan raderna, eftersom effekterna inte är exakt additiva.

## Kvarvarande förenklingar som behöver extern bedömning

- B2A3G är en proxy för skattemässigt överskott. Räntor, avskrivningar,
  underskottsavdrag, koncernbidrag och internationell vinstförflyttning ingår
  inte.
- Andelarna 74/4/22 i D51A (arbete/kapital/transfereringar) är redaktionella.
- Arbetskraftskostnaden bygger på 0,9 × D29 som uppskattning av D29C. En
  inläsning av SCB:s verifierade D29C-serie skulle ersätta det antagandet.
- Antagandena om effektiv beskattning (0,85 genomslag i skattemässigt överskott,
  0,50 kapitalvinstgenomslag, 30 % på hela utdelningen) är redaktionella och
  skiljer sig från de lagstadgade satserna.
- Produktivitetsvinster som större volym fångas bara via det uttryckliga
  produktionsantagandet, inte via en produktionsfunktion.
- Beteendeeffekterna är enkla halva elasticiteter på ett års horisont, utan
  dynamik mellan år.
- Ersättningsgrad och täckningsgrad i omställningsstödet slås samman till en
  parameter; befintliga ersättningssystem skiljs inte formellt från nya
  politiska åtgärder.
- Ingen justering för befolkning, demografi eller behov.
- Överlappning mellan offentlig effektivisering och privat utförd välfärd
  modelleras inte.

## Kontrollfall som körs automatiskt

`src/model/engine.test.ts` och `src/lib/state.test.ts`: oförändrat läge återger referensen;
högre löner utan högre produktion sänker vinsten; ren kostnadsbesparing med
marginell bolagsskatt och utdelning ur vinst efter skatt; offentlig
effektivisering; sammansättningseffekt med bevarad lönesumma; stödbehov som
inte elimineras av höjda löner; delade länkar; A → B → C-summering.

## m3.3.1 → m3.4.0

| Nr | Typ | Ändring | Påverkar |
|---|---|---|---|
| 1 | Rättat fel | Omställningsstödet räknas på lönen i de jobb som försvinner (brutto), inte netto efter nya jobbs löner. Nya jobb antas inte gå till dem som förlorat sina. `transferSupportPct` är fortsatt ett sammansatt antagande (ersättningsgrad × andel som får stöd × andel av året). Växel `grossSupportBase`. | Jobb försvinner (−56,9 → −39,9 mdkr skatt; −66,1 → −90,0 offentlig ekonomi), AI tar över (−118,6 → −98,6; −204,6 → −232,8). Övriga oförändrade. |
| 2 | Nytt samband | Produktion per nytt jobb (`newJobOutputPct`), förval 0 i befintliga scenarier. | Endast nytt scenario 5. |
| 3 | Nytt läge | Arbetstidsläget `hours`: anställda, arbetstid, årslön, timlön, produktion per timme hålls isär. | Endast nytt scenario 6. |
| 4 | Nytt scenario | AI skapar fler jobb än den tar (6 försvinner, 7,2 nya per 100). | +52,9 mdkr skatt, +29,2 offentlig ekonomi (2024). |
| 5 | Nytt scenario | AI ger oss en fyradagarsvecka (−20 % tid, +25 % per timme, årslön oförändrad, AI-inköp 40 mdkr). | −12,0 mdkr (2024). |
| 6 | Ny variant | Lika många jobb – lägre löner inom Jobb försvinner (ersättningsandel 100 %). | −1,5 mdkr skatt, −51,5 offentlig ekonomi (2024). |
| 7 | Länkar | m3.3.x-länkar räknas om och märks som omräknade. Nya parametrar jo, he, hp, ha, hq; `gv` gäller även varianter i Jobb försvinner. | – |

## m3.4.1 – presentationsändring i kompensationsdelen (ingen modelländring)

Endast gränssnitt och text (`src/components/compensation.tsx` och resultatdelen i
`src/routes/index.tsx`). Inga formler, förval,
scenarier eller resultat ändrade; modellversionen är fortsatt m3.4.1.

| Nr | Typ | Ändring | Påverkar |
|---|---|---|---|
| P1 | Presentation | "Väg A/väg B" ersatt av beskrivande rubriker: "Hur mycket behöver växa med nuvarande beskattning?" (fråga anpassad efter valt område) och "Hur mycket behöver beskattningen höjas i stället?". De två beräkningarna är alternativ som var för sig fyller gapet och summeras inte. | Endast text |
| P2 | Presentation | Små positiva gap under modellens tröskel 0,05 mdkr visas med två decimaler (eller "under 0,01 mdkr") och beskrivs inte som uppnått mål. | Endast text |
| P3 | Presentation | Synliga skattebidrag märks "avrundade var för sig"; texten om det andra målet skiljer "också" från "däremot". | Endast text |
| P4 | Kontrollfall | `scripts/kompensation-kontroll.ts` och `KOMPENSATION-KONTROLL.md`: sju områdeskombinationer, båda målen, egen bolagsskatt +5 %, uppnått mål, tomt val, ingen lösning, litet gap. | – |
| P5 | Presentation | Besked utan funnen brytpunkt avgränsas till valda skatter eller underlag, valt mål, modellens antaganden och undersökt intervall. Intervallets slut skiljs från ett uppmätt högsta tillskott. | Endast text |
| P6 | Kontrollfall | Isolerat fall med status `range` verifierar att både större underlag och högre skatt kan nå sökintervallets slut medan tillskottet fortfarande ökar. | – |
| P7 | Presentation | Förtydligandet om att beloppen är miljarder kronor per år om antagandena gäller, jämfört med basåret och inte en prognos för ett kommande kalenderår, flyttas från startsidans inledning till notisen under huvudresultaten, där det visas tillsammans med beloppen. | Endast text |
| P8 | Presentation | Notisen under huvudresultaten skriver om till "Årlig förändring jämfört med [basår], om scenariots antaganden gäller. Beloppen visas i miljarder kronor, i [basår] års penningvärde." med båda årtalen hämtade från valt basår. Den tidigare formuleringen om att beloppen inte är en prognos för ett kommande kalenderår tas bort härifrån och ersätts av en informationsknapp "Hur ska resultatet läsas?" under huvudresultaten, med förklaringen av vad ett års beräkning innebär, att modellen inte anger något framtida år och att nettoeffekten inte är det totala över- eller underskottet. Knappen bygger på `details`/`summary`, fälls ut i sidans flöde under huvudresultaten och fungerar med klick, tangentbord och på mobil; informationen visas först när resultatet visas. | Endast text |
| P9 | Presentation | Metadataraden under huvudresultaten kortas till "Period [period] · Basår [basår]" (exempelvis "Period 2022–2026 · Basår 2024") med värdena hämtade dynamiskt som tidigare. "Års penningvärde" tas bort härifrån eftersom det redan står i förklaringen under huvudresultaten, och uppgiften om datastatus tas bort härifrån eftersom den redan visas i utgångsläget som "Underlag: [status]". Tillväxtscenariots extra märkning på raden är oförändrad. | Endast text |
