5 mei 2026 · 5 min lezen
Post #1Waarom +2891% niet betekent dat je moet kopen
Een aandeel dat dertig keer over de kop is gegaan in een jaar staat bovenaan mijn momentum lijst. Twee simpele statistische trucs voorkomen dat het mijn hele systeem domineert.
Mijn handelssysteem berekent op dit moment momentum scores voor 552 aandelen. Bovenaan staat: SNDK, oftewel SanDisk. Met een rendement over de afgelopen twaalf maanden van +2.891 procent. Dertig keer over de kop in een jaar.
Mijn eerste reactie was begrijpelijk: dit moet bovenaan onze koop lijst komen. Mijn tweede reactie, na erover nagedacht, was anders: dit is precies waarom ik twee statistische trucs nodig heb om mijn systeem niet kapot te laten gaan.
Laat me uitleggen.
Het probleem: één outlier kan een heel systeem domineren
Mijn handelssysteem combineert vier dingen om een aandeel te beoordelen:
- Value: hoe goedkoop is het bedrijf vergeleken met collega's?
- Quality: hoe gezond zijn de cijfers?
- Momentum: hoe loopt de prijstrend?
- Catalyst: zijn er recente positieve gebeurtenissen?
Elk aandeel krijgt een score op alle vier, en die worden gecombineerd tot één eindscore. Het idee: alleen aandelen die op meerdere dingen tegelijk goed scoren komen bovenaan. Niet aandelen die op één ding extreem zijn.
Maar SanDisk met +2891% is letterlijk 18 standaarddeviaties boven het gemiddelde van alle 552 aandelen. Voor wie niet vertrouwd is met statistiek: dat is alsof iemand 12 meter hoog is. Onmogelijk in een normale wereld, maar SanDisk's koers had het gedaan.
Het gevolg: zelfs als SanDisk's Quality, Value en Catalyst allemaal middelmatig zijn, zou momentum alleen al hem op nummer één zetten. Mijn hele filosofie van "koop balans, niet extreem" zou kapot zijn door één getal.
Dat is een bug, geen feature.
Truc 1: z-scores
Een z-score vertelt je hoeveel standaarddeviaties een waarneming afwijkt van het gemiddelde. De formule is simpel:
z = (waarde - gemiddelde) / standaarddeviatie
Voor mijn 552 momentum waarnemingen:
- Gemiddelde rendement: 36 procent over twaalf maanden
- Standaarddeviatie: 156 procent
SanDisk's z-score: (2891 - 36) / 156 = 18,3
Een z-score van 18,3. Dat is buiten alle proporties.
Voor referentie: 95% van alle aandelen heeft een z-score tussen -2 en +2. 99,7% zit tussen -3 en +3. SanDisk's 18 is een statistische gebeurtenis die je gemiddeld eens in de honderdduizend jaar zou verwachten in een normale verdeling.
Maar SanDisk had het gedaan. Niet omdat de wereld onverdeeld is, maar omdat aandelen rendementen niet de normale verdeling volgen. Sommige aandelen verdrievoudigen, sommige halveren, en zelden een paar gaan tien tot dertig keer over de kop. Dit is een bekend statistisch fenomeen: fat tails, dikke staarten in de verdeling.
Mijn factor model is niet ontworpen voor zulke staarten. Z-scores normaliseren waarden zodat het gemiddelde 0 is en de standaarddeviatie 1. Maar als één waarneming buiten alle proporties is, kan zelfs een z-score nog steeds dominant zijn.
Dat is waar truc 2 binnenkomt.
Truc 2: winsorization
Winsorization klinkt deftig maar is simpel: kap alle waarden af die buiten een bepaald bereik vallen.
In mijn systeem is dat bereik [-3, +3]. Elke score boven +3 wordt 3. Elke score onder -3 wordt -3. Klaar.
Voor SanDisk betekent dat: zijn z-score van 18,3 wordt gewoon 3,0. Hij is nog steeds een momentum extreem, maar niet meer dominant. Andere factoren krijgen weer een kans.
Dat lijkt arbitrair, en dat is het ook. Waarom +3 en niet +5? Waarom een vaste cap en niet een logaritmische schaal? Dat zijn ontwerpkeuzes met afwegingen.
Maar het idee achter winsorization heeft een serieuze theoretische basis. Als je een statistische maatstaf maakt die afhankelijk is van het gemiddelde of de standaarddeviatie, en je laat extreme outliers gewoon bestaan, dan gooien die outliers het hele systeem in de soep. Eén SanDisk verschuift het gemiddelde, vergroot de standaarddeviatie, en alle andere aandelen worden ten onrechte als "minder extreem" gezien.
Door eerst te winsorizen en daarna te z-scoren, beperk je de invloed van outliers terwijl je de informatie van het signaal behoudt. SanDisk staat nog steeds bovenaan op momentum, maar nu met een score die ergens in de buurt zit van wat realistisch verteerbaar is voor de rest van het systeem.
Wat ik er werkelijk aan heb
Mijn systeem zag dit voor SanDisk:
- SanDisk: Momentum z-score 3,0 (gecapped), Value -1.2, Quality 0.4, Catalyst -0.8
- Composite score: 0.43
Bovenaan de momentum lijst, ja. Maar absoluut niet bovenaan de algehele BUY lijst. Met een Value van -1.2 (overpriced) en een Catalyst van -0.8 (geen positieve recente gebeurtenissen) is het systeem skeptisch. Aankoop volgt pas als meerdere factoren samen positief zijn.
Een aandeel dat dertig keer over de kop is gegaan, kan op weg zijn naar een bubble. Of het kan een fundamentele transformatie ondergaan. Mijn systeem weet het verschil niet. Wat het wel doet: niet blindelings volgen wat momentum alleen zegt.
Voor andere bouwers
Als je ooit een ranking systeem maakt dat factoren combineert, denk dan na over outliers. Het lijkt erop dat extremen "natuurlijk" naar boven komen drijven, en dat is precies wat je wilt. Maar één extreem in één variabele kan je hele filosofie ondermijnen.
Twee simpele trucs lossen dat op. Eerst de waarden normaliseren naar z-scores, zodat ze allemaal op dezelfde schaal staan. Dan winsorisen, zodat outliers gekapt worden op een redelijke grens. Twee regels code per factor, maar het verschil tussen een werkend systeem en een ramp.
Mijn factor model heeft deze maatregelen vanaf dag één gehad. Niet omdat ik briljant ben, maar omdat ik genoeg kwantitatieve literatuur heb gelezen om te weten dat dit standaard is. Wat ik niet wist: hoe sterk het verschil is. Pas toen ik SanDisk in de data zag, drong het door.
+2891% klinkt als een buy signaal. Voor een mens. Voor mijn systeem is het alleen maar een aandeel dat op één factor extreem is, en dat is nog niet genoeg.