Een strategieagent kan een testset besmetten zonder ook maar één testregel in een trainingstaak te gebruiken. Als de agent de testscore ziet, een parameter aanpast en opnieuw draait, heeft die score de strategie al beïnvloed. De code kan de periode dan wel “out of sample” noemen. Het onderzoeksproces heeft die periode onderdeel gemaakt van de zoektocht.
Ik heb dit zien gebeuren uit gemakzucht: een agent draait een reeks tests, leest een samenvattingstabel en stelt dan een kleine verbetering voor. Niemand heeft gevraagd om op de holdout te fitten. Toch heeft de feedbacklus dat gedaan.
Fout 1: de agent na elke run laten meekijken
De schade is meestal te zien aan een test-Sharpe die in keurige stapjes oploopt. De agent probeert 30 varianten, houdt de beste over en probeert vervolgens 30 varianten rond die versie. Elke afzonderlijke wijziging lijkt redelijk. Samen maken ze van de testperiode een optimalisatiedoel.
Een eenvoudig voorbeeld. Stel dat de strategie geen echt voordeel heeft en je 100 onafhankelijke varianten op een holdout test. Als je de hoogste Sharpe selecteert, is de kans groot dat je puur toevallig een gunstig resultaat vindt. Bij de meeste strategiezoektochten zijn de varianten niet echt onafhankelijk, maar dat maakt het proces niet onschadelijk: herhaalde feedback beloont nog steeds instellingen die toevallig aansluiten bij de eigenaardigheden van de holdout.
Scherm de holdout af van de resultaten. De agent kan strategieën ontwikkelen op basis van trainings- en validatieperioden, maar kan geen holdoutstatistieken of grafieken opvragen. Voer de eindevaluatie uit in een aparte taak, één keer nadat de onderzoekskeuzes zijn vastgelegd, en registreer bij het resultaat de strategieversie en de momentopname van de data.
Fout 2: elke latere periode “vers” noemen
Een datumbereik is niet vers alleen omdat het na de trainingsperiode valt. Als de agent een score uit dat bereik heeft gezien, of een mens de drawdown ervan heeft gebruikt om een andere feature te kiezen, is dat bereik onderdeel geworden van de feedbacklus.
| Periode | Toegestaan gebruik | Wat de status verandert |
|---|---|---|
| Training | Regels en parameters fitten | Niets; deze periode is bedoeld om te doorzoeken |
| Validatie | Kandidaten vergelijken en onderzoeksbeslissingen nemen | Herhaald gebruik vergroot het risico op overfitting |
| Finale holdout | Eén evaluatie van de vastgezette kandidaat | Het resultaat bekijken en de kandidaat aanpassen |
| Toekomstige paperperiode | Het implementatiegedrag prospectief observeren | Uitkomsten gebruiken om bij te sturen start een nieuwe onderzoekscyclus |
Een voortschrijdende walk-forward-evaluatie kan helpen inschatten hoe een vast onderzoeksproces zich door de tijd gedraagt. Dat geeft geen vrijbrief om onbeperkt in elke fold te kijken. Als een agent foldresultaten ziet en zijn zoekproces aanpast, vormen die folds ook feedback. Bewaar een definitieve, onaangeroerde periode voor de beslissing die je daadwerkelijk wilt nemen.
Fout 3: de code vastzetten maar de vraag veranderen
Soms blijft de strategiecode ongewijzigd, maar verandert de onderzoeker de evaluatie nadat die het resultaat heeft gezien: een andere benchmark kiezen, een slechte maand uitsluiten, een andere marktselectie rapporteren of de nadruk leggen op de metric die er het sterkst uitziet. De testset heeft het verhaal dan gestuurd, ook al is er geen parameter veranderd.
De schade blijkt uit een gelikt rapport met één overtuigende kop en geen verslag van de andere invalshoeken die zijn geprobeerd. Een aandelenstrategie kan zwak lijken tegenover een brede marktindex, maar sterk tegenover cash; een cryptostrategie kan uitblinken op één handelsplatform nadat meerdere platformen zijn bekeken. Die vergelijkingen kunnen nuttig zijn, maar er achteraf één kiezen op basis van de holdout is opnieuw een selectiestap.
Houd een onderzoekslogboek bij. Sla voor elke run de hypothese, codeversie, momentopname van de data, parameterzoektocht, evaluatievensters, opgevraagde metrics en vast of de agent of onderzoeker het resultaat heeft gezien. Een beknopt logboek is nuttiger dan een label als “out of sample” dat alleen overtuigend klinkt.
Leg vóór de evaluatie de definitieve vraag vast: welke kandidaat, welke marktselectie, welke benchmark, welke kosten en welke metrics? Verandert het antwoord nadat het resultaat binnen is, behandel de volgende run dan als onderzoek en reserveer nieuwe data voor de volgende finale controle.
Wat kan ik nog leren van een besmette holdout?
Die is niet nutteloos. Je kunt zien hoe een strategie zich in die periode gedroeg en helpen achterhalen waarom die faalde. Presenteer de score alleen niet meer als onafhankelijke bevestiging. Gebruik de holdout als bewijs tijdens de ontwikkeling, zet de volgende kandidaat vast en evalueer die kandidaat op een werkelijk toekomstige paperperiode, met dezelfde boekhoudkundige en uitvoeringsaannames.
In een workflow met agenten raak je het aantal experimenten makkelijk uit het oog: één prompt kan tientallen runs opleveren voordat iemand het merkt. De bescherming zit in de werkwijze. Beperk wat de agent kan inzien, leg elk experiment vast en houd één evaluatie achter de hand waarvan het resultaat de kandidaat die wordt beoordeeld niet kan sturen.
← Alle artikelen


