# Amendement pre-registratie A/B — stijlreplicaat

**30 juli 2026, avond — vóór de meetstart van maandag 3 augustus 2026.**
Hoort bij `docs/preregistratie-ab-stijlreplicaat.md` (commit `0bcb7e5`). Een wijziging die
vóór de start wordt vastgelegd en extern gestempeld is geen schending van de
pre-registratie — dat is precies wat pre-registratie toestaat. Ná 3 augustus wijzigt er
niets meer aan dit protocol.

Aanleiding: een adversariële methodologische review van 30-07-2026 identificeerde vier
gebreken die de proef oninterpreteerbaar maakten. Dit amendement repareert ze en legt
tegelijk alle systeemwijzigingen vast die vóór het venster zijn doorgevoerd.

---

## 1. Primaire grootheid: factor-genormaliseerde alpha

Het ruwe cumulatieve verschil A−B is besmet met twee factoren die niets over de
onderzoeksvraag zeggen: het **beta-gat** (A ≈ 0,5, B ≈ 1,0 → ±583bp ruis bij 1 s.d.
marktbeweging over zes maanden) en de **size-tilt** (B kiest uit 503 namen inclusief
small/mid; A is mega/large-cap).

**Primair wordt daarom de intercept (alpha) van de dagelijkse verschilreeks:**

    d_t = r_A,t − r_B,t = α + β₁·r_SPY,t + β₂·(r_RSP,t − r_SPY,t) + ε_t

met r_SPY de marktfactor en (r_RSP − r_SPY) de breedte/size-spread. Toetsstatistiek:
Newey-West op α met Bartlett-kernel, AR(1)-prewhitening, automatische bandbreedte
(Newey-West 1994) met een **ondergrens van 10 lags** (B's maandagcyclus), en kritieke
waarden uit een **stationaire bootstrap** (Politis-Romano, gemiddelde bloklengte 10
handelsdagen, 10.000 replicaties) in plaats van ±1,96.

Het ruwe cumulatieve verschil wordt daarnaast als beschrijvende statistiek gerapporteerd.

## 2. Uitputtende beslisregel (vervangt de drie-takkige regel)

Eén grootheid (α uit §1), vier gebieden die samen de hele uitkomstruimte dekken:

| uitkomst | voorwaarde |
|---|---|
| **bevestigd** | α > 0 én \|t\| > bootstrap-kritieke waarde |
| **verworpen** | α < 0 én \|t\| > bootstrap-kritieke waarde |
| **niet-onderscheidbaar** | \|t\| ≤ kritieke waarde — volwaardige uitkomst, gepubliceerd met het volledige 95%-BI |
| — | "300bp" uit het oorspronkelijke protocol is **cumulatief over de periode** en wordt uitsluitend nog beschrijvend gerapporteerd |

**Falsificatie-framing, expliciet.** Bij TE(A−B) ≈ 13%/jr en ~128 handelsdagen is de
power voor een effect van 300bp per halfjaar ≈ 5%; voor t>1,96 op het ruwe verschil zou
~18pp nodig zijn. Dit venster van zes maanden kan de hypothese "de LLM voegt iets toe"
dus **verwerpen maar niet bevestigen**. De factor-normalisatie uit §1 verlaagt de
variantie naar schatting 40–60%; ook dan blijft "niet-onderscheidbaar" de meest
waarschijnlijke eerlijke uitkomst. Die wordt als zodanig gepubliceerd — zonder verlenging
en zonder herformulering achteraf, conform het oorspronkelijke protocol.

## 3. Reeksdefinities (vastgelegd, één keuze per vraag)

- **Sleeve A, primaire reeks: netto** — de bruto equity-reeks minus de kostenaanname van
  3bp per verhandeld notional, identiek aan de definitie waarmee B wordt belast.
- **Valuta: USD** voor beide sleeves en de benchmark.
- **Dividendbehandeling: prijsrendement voor beide.** De Alpaca-paper-rekening crediteert
  geen dividend (gemeten: nul DIV-activiteiten sinds de start), dus B's vergelijkings­reeks
  wordt berekend op **split-only aangepaste prijzen** — anders krijgt B ~65bp/halfjaar
  gratis dividend dat A niet kan ontvangen. De selectiesignalen van B (momentum/ROE) mogen
  volledig aangepaste reeksen blijven gebruiken; alleen de rendementsreeks is split-only.
- **A-equity: officiële dagelijkse slotstand** (Alpaca portfolio_history, timeframe=1D,
  geen extended hours).
- **Turnover- en kostendefinitie: één maatstaf voor beide** — eenzijdig verhandeld
  notional per jaar gedeeld door gemiddelde equity, kosten à 3bp daarvan.

## 4. Sleeve B: breedte-match

`N_HOLD` gaat van 28 naar **21**, gelijk aan A's typische breedte. Idiosyncratisch risico
schaalt met 1/√n; het verschil 28 vs 21 was een parameterkeuze die het A−B-verschil
vervuilde. De overige B-parameters (50% momentum 252−21 / 50% ROE, percentielrang binnen
de GICS-sector, wekelijks op maandag, 3bp, bevroren universum `docs/universe-ab-frozen.csv`)
wijzigen niet. De resterende universum-asymmetrie (B kan small/mid kiezen; A houdt o.a.
RY/TSM buiten de S&P 500) wordt **niet** in B gerepareerd maar statistisch geabsorbeerd
door de size-regressor uit §1, en staat hier als bekende beperking.

## 5. Sleeve C: het eigen-namen-replicaat (nieuw, ex-post reconstrueerbaar)

Sleeve C = **gelijkgewogen mandje van sleeve A's eigen doellijst**, wekelijks op maandag
herwogen naar de doellijst van dat moment, 3bp kosten, split-only prijzen. C scheidt
*selectie* (welke namen) van *weging en timing* (wat A er verder mee doet).

C vergt geen nieuwe infrastructuur en geen vertrouwen: de dagelijkse doellijsten zijn
append-only vastgelegd (DecisionRecords + pre-open hashes met Telegram-tijdstempel), dus
C is op elk moment **zonder look-ahead ex-post te berekenen** uit gearchiveerde data.
Rapportage: naast A en B in de eindanalyse.

## 6. Systeemwijzigingen vóór het venster (alle 30-07-2026, gelogd met back-ups)

Deze wijzigingen zijn onderdeel van de behandeling "sleeve A zoals hij is" en zijn
allemaal vóór de meetstart doorgevoerd; het hele venster draait onder één regime:

1. **No-trade band**: 20% van het doelgewicht per positie, minimumticket $200 (was: $40
   absoluut). 2. **Vol-lookback** inverse-vol-gewichten: 60 → 126 handelsdagen.
3. **Executieblok** in de dagprompt: het model ziet zijn eigen orders/dag, omzet en
   kosten. 4. **Toelaatbaarheidstoets** op elke ticker (actief, verhandelbaar, us_equity,
   grote beurs) in beslis- én geldpad. 5. **Circuit breaker**: dagverlies ≥5% → run
   overslaan, volgende dag automatisch hervatten. 6. **Rotatierem**: >6 naamwijzigingen
   per run geblokkeerd. 7. **Cadans**: uitvoering van 7×/dag naar **1×/dag** (20:37
   lokaal ≈ 14:37 ET; in de DST-gap-week 26–30 okt 15:37 ET — beide vóór de close).
8. **Pre-open-keten één uur vervroegd** zodat ook in de gap-week beslissing en hash vóór
   de opening vallen. 9. **Reconciliatie**: dagelijkse machinale check bewering-vs-
   grootboek plus een onafhankelijke grootboeklezer (22:20).

## 7. Geen contaminatie — geverifieerd

`decide.py` leest uitsluitend `kind=universe`, `kind=reflection` en `kind=research` in de
dagprompt. Sleeve B publiceert als `ab_sleeve_b`, de pre-commit als
`precommit_a`/`reveal_a`. **Sleeve A ziet sleeve B, de criteria en de tussenstand van de
proef dus niet.** Dit blijft zo gedurende het venster.

## 8. Externe tijdstempels

- **Dagelijks:** de pre-open SHA-256 van A's beslislijst gaat behalve naar de eigen API
  ook via Telegram (bericht-tijdstempel van een derde partij).
- **Dit amendement:** de commit-hash wordt bij publicatie extern gestempeld
  (OpenTimestamps; bij falen daarvan minimaal de Telegram-route, met vermelding).

## 9. Wat er op 3 februari 2027 wordt gepubliceerd

De uitkomst van de 2×2-tabel uit §2 met α, t, het 95%-BI en de power; het ruwe
cumulatieve verschil; de C-vergelijking; de gerealiseerde turnover en kosten van beide
sleeves onder de definitie uit §3; en elke afwijking van dit protocol (verwachting: geen).
De kop van het eindartikel wordt bepaald door de zwakste van A−B en A−S&P.
