Op maandag vond onze AI-onderzoeksagent een crypto-futuresstrategie met een Sharpe-ratio van 4.1. Op donderdag was het resultaat 0.8, nadat we de experimenten hadden geteld en de agent niet langer lieten afstemmen op hetzelfde validatievenster. De strategie was niet veranderd. Onze inschatting van wat de zoekactie had opgeleverd wel.
We hielden dit bij als een kort onderzoeksdagboek, omdat “zorgvuldig optimaliseren” makkelijk advies is om te geven, maar lastig in de praktijk te brengen wanneer een agent code kan schrijven, backtests kan starten, de score kan bekijken en binnen enkele minuten opnieuw kan proberen. Dit ging er mis, op volgorde.
Maandag: geef de agent een afgebakende vraag
We vroegen de agent een eenvoudig trendidee op uurbasis te testen op een liquide markt voor perpetual futures: instappen wanneer een kort voortschrijdend gemiddelde een langer gemiddelde kruist, de positieomvang afstemmen op een vast volatiliteitsdoel en sluiten bij het omgekeerde signaal. We specificeerden het instrument, de datums, het vergoedingenschema, de fundinghistorie, de uitvoeringsaanname en de parameterbereiken die de agent mocht verkennen.
De historische steekproef liep van 2021 tot en met 2025. We gebruikten 2021–2023 voor ontwikkeling, 2024 voor validatie en hielden 2025 afgesloten als definitieve holdout. Die splitsing stond vast in de taakconfiguratie: de agent kon ontwikkelingsresultaten en validatiescores bekijken, maar kon de holdout-rendementen niet ophalen.
Onze eerste fout was dat we in één taak 300 parametercombinaties toestonden, zonder het zoekbudget als onderzoeksresultaat vast te leggen. De agent gaf de best presterende configuratie terug: een snel gemiddelde van 9 uur, een traag gemiddelde van 73 uur en een volatiliteitsdoel van 0.8%. De Sharpe op validatie was 4.1. We wisten dat de agent veel instellingen had geprobeerd. We hadden dat alleen nog niet zo vastgelegd dat we het onmogelijk konden vergeten.
Dinsdag: de winnaar veranderde toen we de test opnieuw uitvoerden
We voerden dezelfde taak opnieuw uit in een schone omgeving. De beste instelling veranderde en de Sharpe daalde naar 2.7. Tijdens de eerste run had een marktdatacache een bijgewerkte fundingreeks geleverd, terwijl de nieuwe run een vastgelegde snapshot gebruikte. Beide taken beweerden hetzelfde datumbereik te gebruiken; slechts één had een reproduceerbare dataversie.
We stopten met scores vergelijken en begonnen het volledige experiment vast te leggen: codeversie, datasnapshot, vergoedingen, funding, uitvoeringsinstellingen, parameterwaarden en elke poging die de agent startte. Daaruit bleek dat de 4.1 geen mysterieuze marktedge was. De score hoorde bij één instelling uit een zoekactie van 300 pogingen op hetzelfde validatiejaar.
Woensdag: leg de zoekactie vast voordat je de holdout opent
We voerden het experiment opnieuw uit met een vaste datasnapshot en een kleinere, vooraf vastgelegde reeks: 24 combinaties. De agent mocht ze rangschikken op basis van de ontwikkelingsperiode 2021–2023. We lieten hem 2024 één keer zien, voor de selectie, en legden daarna de gekozen instellingen en de code vast.
De geselecteerde strategie behaalde een Sharpe van 0.8 op validatie. Op de afgesloten holdout van 2025 behaalde die 0.3, na takervergoedingen, funding en dezelfde vertraging van één bar die in het hele onderzoek werd toegepast. Dat was een nuttig antwoord. Het was geen bewijs dat de strategie geld zou opleveren op een live-account.
Een terzijde over deze week: we besteedden meer tijd aan overeenstemming over wat “één poging” betekende dan aan het schrijven van de code voor het voortschrijdend gemiddelde. We telden een gewijzigde parameterset als een poging, en ook runs waarin het signaal of de positiegrootteregel veranderde. Een nieuwe datasnapshot of uitvoeringsaanname kreeg een afzonderlijke runregistratie, omdat die de rangschikking net zo goed kon veranderen.
Donderdag: wat we de volgende keer overslaan
De open eerste taak zouden we overslaan. Een onderzoeksagent heeft een zoekbudget nodig en een registratie van wat hij heeft geprobeerd, vooral wanneer hij elk resultaat kan gebruiken om te bepalen wat hij daarna probeert. Ook moet de holdout beschermd blijven tegen informeel meekijken: zodra iemand het resultaat leest en de strategie aanpast, is die periode een nieuwe validatieset geworden.
Voor een kleine zoekactie kan een praktisch experimentenregister eenvoudig en expliciet zijn:
| Vastleggen | Waarom dit van belang is |
|---|---|
| Code- en dataversies | Zodat een nieuwe run dezelfde invoer en logica gebruikt |
| Elke geprobeerd variant | Zodat de winnaar kan worden beoordeeld in het licht van de zoekactie |
| Rollen van ontwikkeling, validatie en holdout | Zodat een eindscore niet ongemerkt opnieuw wordt gebruikt om af te stemmen |
| Aannames over vergoedingen, funding en uitvoering | Zodat het gerapporteerde resultaat een toetsbare simulatie beschrijft |
Keer na het openen van de holdout terug naar ontwikkeling met een nieuwe onderzoeksvraag en bewaar het oude resultaat als historische onderbouwing. Blijf dezelfde strategie niet verder bijschaven op basis van een periode die hij al heeft gezien.
De agent deed zijn werk: hij zocht snel en vond een configuratie die nader onderzoek waard was. Het was onze taak om de zoekactie inzichtelijk te maken, een onaangeroerde test te bewaren en de score te behandelen als een meting met een geschiedenis. Het interessante resultaat was niet 4.1 of 0.3. Het was precies zien hoe het eerste getal tot stand kwam.
← Alle artikelen


