Signal Pilot
🟠 Expert • Les 64 van 85

De prijs van zoeken

Leestijd ~13 min • Module 8: Een systeem bouwen
Signal Pilot
Professionele handelseducatie
0 %
Je maakt vooruitgang!
Lees verder om deze les af te ronden

Een zoektocht over 15.000 configuraties, beoordeeld op 156 trades, fabriceert 0,317 R per trade voordat de markt ook maar iets heeft gedaan, en dat cijfer volgt uit de twee tellingen alleen, zonder één koers erin. Pas dezelfde rekensom toe op de zoektocht van les 63: de t-statistiek van de winnaar, 3,65, moet over 3,54 heen en niet over 1,65, en dat lukt. Zet daarna één getal vast dat die backtest nooit heeft afgedrukt — hoeveel trades een regel moest afronden om te mogen winnen — en het oordeel over diezelfde winnaar verschuift van één op 147 naar kop of munt, zonder dat er één koers verandert.

Vereisten: Les 63, voor de zoektocht over 253 cellen waarvan deze pagina de winnaar opnieuw beoordeelt, les 19, voor wat een t-statistiek over zeven trades wel en niet kan dragen, en les 62, voor de zin waarin een regel geschreven moet zijn voordat hier iets van geldt.

Wat de telling alleen je al vertelt

Stel dat elke regel die je gaat testen waardeloos is. Niet slecht ontworpen, niet ongelukkig: waardeloos, in de precieze zin dat het echte voordeel nul is. Elke regel levert toch een getal op, want een eindige reeks trades is een steekproef en steekproeven schommelen. Test er één en je krijgt een uitslag. Test er veel en je houdt de grootste uitslag die je vond, want de grootste houden is precies wat zoeken is. De grootste van veel ruizige nullen is niet nul, en de omvang ervan wordt bepaald door hoeveel je er trok, niet door waaruit je ze trok.

Die laatste bijzin is de hele les en het loont om er kort over te zijn. Hoeveel voordeel een zoektocht fabriceert, hangt niet af van het instrument, niet van het tijdframe, niet van het jaar en niet van de vraag of de markt een trend had. Het hangt af van twee tellingen: hoeveel configuraties je hebt geprobeerd en op hoeveel trades elke configuratie is beoordeeld. Allebei zijn ze bekend voordat je iets draait.

Schrijf de t-statistiek van een configuratie zoals gebruikelijk: de gemiddelde trade gedeeld door de standaardfout van dat gemiddelde. Onder de aanname van nul voordeel is de t van elke configuratie een trekking uit een standaardnormale verdeling, en een zoektocht over N configuraties houdt de grootste van N zulke trekkingen. De verwachtingswaarde van die grootste trekking heeft een gesloten vorm die nauwkeuriger is dan één procent, het resultaat dat López de Prado in 2014 samen met Bailey, Borwein en Zhu heeft neergezet:

E[max of N] ≈ (1 − γ) Φ−1(1 − 1/N) + γ Φ−1(1 − 1/(N e)), γ = 0.5772156649

Eén invulling, helemaal uitgerekend, zodat hier niets op gezag aangenomen hoeft te worden. Bij 15.000 configuraties is 1 gedeeld door N gelijk aan 0,0000667, en de standaardnormale waarde die zoveel in de bovenstaart laat, is 3,82022. Vervolgens is N maal e gelijk aan 40.774, 1 gedeeld daardoor is 0,0000245, en de normale waarde daarvan is 4,06011. Weeg beide met 0,4228 en 0,5772 en je krijgt 3,95869. Dat is een t-statistiek. Om er voordeel per trade van te maken, deel je door de wortel uit het aantal trades: de wortel uit 156 is 12,49, en 3,95869 gedeeld door 12,49 is 0,317. In die berekening kwam niets over welke markt dan ook voor.

Dezelfde formule beantwoordt de vraag die iemand in de praktijk werkelijk heeft, en dat is niet wat de beste waardeloze regel scoort maar welke score verrassend zou zijn geweest. Eisen dat een zoektocht over N waardeloze configuraties maar vijf keer op de honderd iets boven t oplevert, legt de lat op de normale waarde van 0,95 tot de macht 1/N. De toets is op deze hele pagina eenzijdig, want een regel die verliest is geen ontdekking, en daarom staat één configuratie op 1,645 en niet op de tweezijdige 1,96. Dat is de derde kolom hieronder.

ConfiguratiesVerwachte beste tLat bij vijf procentR per trade, 156 trades
10,0001,6450,000
101,5752,5680,126
1002,5313,2830,203
2532,8413,5370,228
1.0003,2553,8840,261
15.0003,9594,4990,317
100.0004,3914,8870,352

Lees de eerste kolom tegen de derde en de vorm is het bruikbare deel. Van één configuratie naar 253 tilt de lat van 1,645 naar 3,537, en daar zit vrijwel alle schade. Van 253 naar 100.000 is 395 keer zoveel zoeken en tilt hem nog 1,350 verder. De straf groeit met de logaritme van de telling, dus een bescheiden zoektocht is duur en een enorme nauwelijks erger dan een grote. Dit snijdt beide kanten op, en de kant waar het tegen je in snijdt noemt niemand: je hebt geen raster van tienduizend nodig om er slecht voor te staan. Honderd zit al op 3,283.

Het blad dat deze module in les 62 begon, krijgt hier een derde kolom, naast de zin en naast het paar cijfers dat les 63 toevoegde. De lat die deze configuratie moest halen, en de telling waaruit die is berekend. Een regel waarvan de t de eigen lat niet overtreft heeft niets laten zien, en een regel zonder de telling kan helemaal geen lat hebben. Vrijwel niemand tegen wie je handelt noteert die telling. Ze kost één geheel getal, opgeschreven vóór de zoektocht in plaats van achteraf herinnerd, en de reden dat ze er zelden staat is dat ze een resultaat alleen maar slechter kan laten lijken.

Dezelfde winnaar, op vijf manieren beoordeeld

Les 63 doorzocht 253 configuraties van voortschrijdende gemiddelden over zestig slotkoersen en hield de configuratie met het hoogste nettototaal: een gemiddelde over 2 bars tegen een over 5, zeven trades, 9,84 per aandeel na kosten, t van 3,65. Tegen de tabel hierboven leggen 253 configuraties de lat op 3,537, dus de winnaar haalt hem. Dat lijkt een schone voldoende, en het loont om te zien waarom het er geen is.

Tel hoeveel trades elk van de 253 configuraties op die slotkoersen daadwerkelijk heeft afgerond. De kleinste is 1, de mediaan is 1, de waarde op driekwart is 2, en de grootste is 16. Meer dan de helft van het raster heeft nooit een tweede rondgang afgerond. De zoektocht was dus nominaal 253 breed, en het grootste deel van die breedte bestond uit configuraties die nauwelijks handelden, waarvan het gemiddelde een gemiddelde over één of twee getallen is en waarvan de t-statistiek dienovereenkomstig wild uitvalt. De formule veronderstelt 253 vergelijkbare toetsen. Ze kreeg 253 toetsen van volstrekt ongelijk gewicht.

De gebruikelijke reparatie is een ondergrens: een configuratie mag alleen winnen als ze minstens zoveel trades heeft afgerond. Daar heeft niemand bezwaar tegen. Wat niemand afdrukt, is het getal. Draai dus de nulverdeling van les 63 opnieuw — de 59 bar-tot-bar-bewegingen met teruglegging getrokken, 4.000 reeksen, kiemgetal 20260903, op elke reeks dezelfde zoektocht over 253 cellen — en noteer hoe vaak de beste toelaatbare configuratie de 3,65 van de winnaar haalt, bij vijf ondergrenzen.

Minimum aantal tradesToelaatbare cellenBeste t op de zestig slotkoersenStructuurloze zoektochten die 3,65 halen
21156,240,5048
3506,240,2210
5203,790,0385
7113,650,0068
1041,030,0031

Bij een ondergrens van zeven trades, precies wat de winnaar afrondde, haalt 0,68 procent van de structuurloze zoektochten de 3,65: ongeveer één op 147, en een resultaat dat iedereen zou publiceren. Bij een ondergrens van twee haalt 50,5 procent dat. De winnaar is ongewijzigd, de slotkoersen zijn ongewijzigd, de 253 configuraties zijn ongewijzigd, en dezelfde t-statistiek is een vondst van één op 147 of het opgooien van een munt, afhankelijk van een geheel getal dat nergens in een backtest-rapport voorkomt.

De correctie voor het zoeken heeft een eigen knop.

Uit die tabel vallen nog twee dingen, en allebei zijn ze erger dan de kop. De ondergrens filtert niet alleen de winnaar, ze verandert welke configuratie wint: bij ondergrenzen van twee en drie is de beste t in het raster 6,24, gehaald door een paar van 3 en 11 op vier trades, en de winnaar van 2 en 5 is helemaal niet de beste cel. En bij een ondergrens van tien trades is de beste t waar dan ook in de 253 gelijk aan 1,03. Elke kruimel van het schijnbare voordeel op deze reeks woont in configuraties die minder dan tien keer handelen, precies het gebied waar een t-statistiek het minste recht heeft om geloofd te worden.

De gesloten vorm is dus een schatting voor onderweg en geen oordeel. Hij gaf 3,537 voor dit raster; de simulatie geeft een vijfprocentpunt van 3,397 bij een ondergrens van vijf, wat dichtbij is, en van 9,57 bij een ondergrens van drie, wat helemaal niet dichtbij is. Gebruik de formule om vooraf ruwweg te weten waar je tegenaan kijkt, en simuleer bij de ondergrens die je werkelijk hebt gebruikt voordat je iets gelooft.

Doe dit vanavond: schrijf je aantal configuraties en je minimum aantal trades op voordat je naar een resultaat kijkt, en bereken de lat uit het eerste van de twee.

Wat dit niet oplost

Dat de configuraties onafhankelijk zijn. Dat zijn ze nadrukkelijk niet: een kruising van 2 en 5 en een kruising van 2 en 6 handelen bijna dezelfde bars, dus de 253 trekkingen overlappen zwaar en de echte lat voor onafhankelijke toetsen zou lager liggen dan 3,537. De formule overcorrigeert dus op een gecorreleerd raster, en dat is de richting die de voorzichtigheid dient en niet de lezer. Het blijft een grens die je moet kennen, maar een pagina die hem als antwoord aanhaalt, haalt een bovengrens aan in plaats van een meting.

Dat zestig slotkoersen dit kunnen dragen. Negenenvijftig bewegingen, een winnaar met zeven trades en ondergrenzen die het raster bij tien leegmaken: elk cijfer in de tweede tabel is berekend op een reeks die kort genoeg is om de ondergrenzen en de lengte van de steekproef in elkaar te laten haken. Op tweeduizend bars zou een ondergrens van tien het grootste deel van het raster laten staan, en de omslag tussen één op 147 en kop of munt zou, als hij plaatsvond, bij andere ondergrenzen plaatsvinden. Het mechanisme hangt niet van de lengte af. De precieze cijfers hangen er volledig van af.

Dat de t-statistiek de juiste grootheid is. Ze veronderstelt dat de trades van één configuratie onafhankelijke trekkingen van gelijke variantie zijn, en opeenvolgende trades van één regel op één reeks zijn geen van beide: ze overlappen in regime, ze delen de beweeglijkheid van dezelfde weken, en een regel die langer vasthoudt neemt er grotere en minder. Precies daarom loopt het aantal trades over het raster zo uiteen, zodat het gebrek dat de ondergrens oplapt en de aanname waarop de grootheid rust hetzelfde gebrek zijn, twee keer gezien.

Dat de herbemonsterde nulverdeling de juiste is. De bewegingen met teruglegging trekken vernietigt de clustering van beweeglijkheid samen met al het andere, en juist die clustering bepaalt hoeveel trades een kruisingsconfiguratie afrondt. De nulverdeling levert dan aantallen trades op die een echte reeks niet zou geven, en de aantallen toelaatbare cellen in de tweede tabel zitten daardoor wat naast de waarheid. Een blokbootstrap zou de clustering behouden en is de eerlijke volgende stap; deze pagina draait er geen, om dezelfde reden als les 63.

Dat het kiezen van de ondergrens onschuldig is. Dat is het niet, en deze pagina heeft zojuist de techniek uitgevoerd waarvoor ze waarschuwt: vijf ondergrenzen zijn gedraaid en alle vijf staan afgedrukt, wat eerlijk is, maar wie er vijf draait en die ene meldt waarbij de eigen regel de lat haalt, heeft het zoeken een niveau opgeschoven en zoekt nu over ondergrenzen. De telling die op het blad komt moet elke dimensie bevatten die je hebt gevarieerd, en de ondergrens is er daar één van zodra je er meer dan één probeert.

En de toegift die het meeste kost. Les 63 eindigde zonder de configuraties te kunnen tellen die nooit zijn opgeschreven, en deze pagina lost dat niet op; ze maakt het scherper en ongemakkelijker. De lat is een functie van de telling, de telling is alleen bekend voor het geprogrammeerde raster, en de grafiek waar je naar keek, de parameter die je verschoof en terugzette, het instrument dat je liet vallen omdat het lelijk was zijn allemaal configuraties die de lat optillen en geen spoor achterlaten. De formule maakt van een ontelbaar probleem alleen een telbaar voor dat deel van de zoektocht dat eerlijk genoeg was om te worden ingetypt. In les 65 wordt de telling met geweld tot één teruggebracht en wordt de prijs in tijd betaald: bij één enkele configuratie zakt de lat van 4,499 naar 1,645, en een backtest van 15.000 cellen heeft daarom 7,48 keer zoveel trades nodig als een live geboekt verloop om dezelfde bewering te dragen.

Opgaven

  1. Tel je raster. Neem de laatste strategie die je hebt geoptimaliseerd en tel de configuraties die je hebt geprogrammeerd: elke parameterwaarde, uitvermenigvuldigd, inclusief die je hebt gedraaid en weggegooid. Stop die telling in de formule voor de lat, of lees hem af uit de eerste tabel. Tien minuten, en je houdt één getal over, de t die je winnaar moest verslaan, en dat is vrijwel zeker niet 1,65.
  2. Vind waar je oordeel omslaat. Neem dezelfde zoektocht en draai hem opnieuw bij ondergrenzen van 2, 5 en 10 trades, en noteer telkens de winnende configuratie en haar t. Een half uur, en je houdt één getal over, de ondergrens waarbij je winnaar ophoudt te winnen, en dat vertelt je hoeveel van je resultaat werd gedragen door configuraties die nauwelijks handelden.
  3. Simuleer de lat waar je echt voor staat. Herbemonster met teruglegging de bar-tot-bar-veranderingen van je instrument, draai je hele zoektocht opnieuw over elke synthetische reeks bij de ondergrens waarvoor je koos, en doe dat duizend keer vanaf een kiemgetal dat je opschrijft. Tel hoe vaak de beste toelaatbare configuratie de t van je echte winnaar haalt. Een avond, en je houdt één getal over, die fractie, en dat is de enige versie van de lat die weet wat je configuraties met elkaar gemeen hebben.

Bronnen. David H. Bailey, Jonathan M. Borwein, Marcos López de Prado en Qiji Jim Zhu, „Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance” (Notices of the American Mathematical Society, 2014), voor de formule van het verwachte maximum waarin deze pagina invult en voor de minimale lengte van een backtest die eruit volgt. David H. Bailey en Marcos López de Prado, „The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality” (The Journal of Portfolio Management, 2014), voor dezelfde correctie uitgedrukt als korting op een gepubliceerd cijfer in plaats van als lat om te halen. Campbell R. Harvey en Yan Liu, „Backtesting” (The Journal of Portfolio Management, 2015), voor het argument dat het aantal pogingen het eerste is waar de lezer van een backtest om zou moeten vragen, en dat is de kolom op het blad die deze les toevoegt. Halbert White, „A Reality Check for Data Snooping” (Econometrica, 2000), voor de herbemonsteringsprocedure waarop de tweede tabel is gebouwd, overgenomen uit les 63.

Gerelateerde lessen
Les 63

Backtesting als bewijs

De zoektocht over 253 cellen waarvan deze les de winnaar opnieuw beoordeelt tegen zijn eigen lat.

Les lezen →
Les 19

Hoe lang tot je het weet

Wat een t-statistiek over zeven trades wel en niet kan dragen.

Les lezen →
Les 62

Wat er zou moeten gebeuren

De zin waarin een regel geschreven moet zijn voordat welke correctie dan ook geldt.

Les lezen →
Uitsluitend educatief. Handelen brengt een aanzienlijk risico op verlies met zich mee. Dit is geen financieel advies. Resultaten uit het verleden bieden geen garantie voor de toekomst.

💬 Discussie (0 reacties)

0/1000

Reacties laden…

← Vorige les Volgende les →

Klaar om met Signal Pilot te handelen?

Breng je opleiding in de praktijk met professionele indicatoren en hulpmiddelen voor marktanalyse in realtime.

Terug naar Signal Pilot →