Een hoog historisch winstpercentage bewijst geen handelsvoordeel. Een backtest beoordeelt expliciete regels op een afgebakende dataset onder een uitvoeringsmodel. Zelfs een zorgvuldig onderzoek garandeert geen toekomstig rendement. Je moet kunnen uitleggen welke informatie beschikbaar was, welke handeling volgde en welke kosten al in de prijzen zitten.

Wat een historische test wel kan aantonen

Een positieve historische expectancy beschrijft de geteste steekproef. Toeval, selectie en overaanpassing kunnen bijdragen. Bekijk aparte evaluatiedata, kosten en gevoeligheid voordat je de conclusie uitbreidt. Een negatieve test kan een tegenstrijdigheid in regels aantonen; een positieve test bewijst niet dat alle relevante tegenvoorbeelden ontbreken.

Regels moeten reproduceerbaar en tijdig uitvoerbaar zijn

Noteer symbool, timeframe, invoer, ordertijd, uitstap en volumeberekening. Een fictieve dagregel kan de voltooide slotkoers met de hoogste koers van de vorige bar vergelijken en pas daarna een order toestaan. Die definitieve slotkoers gebruiken om tegen de eerdere opening van dezelfde bar in te stappen gebruikt toekomstinformatie.

Leg ook bestaande posities, ontbrekende data en onvoldoende marge vast. Eén indicatorparameter beantwoordt die vragen niet en garandeert geen uitvoering. Een handelsvoordeel toetsen: kosten, onzekerheid en groepsweging behandelt de verdere evaluatie; Algoritmisch handelen: begin met één controleerbare handeling begint met kleine controlecases.

Data moeten bij product en hypothese passen

Valutafutures en OTC-spot of CFD zijn verschillende contracten. Centrale futuresdata zijn niet automatisch een goede vervanging voor een retail-spotstrategie. Er is geen universele statistische grens van honderd trades. Spreiding, afhankelijkheid, effectgrootte, selectie en onderzochte marktomstandigheden beïnvloeden benodigde onderbouwing. Rapporteer onzekerheid en effectieve steekproefomvang.

Bewaar provider, product, prijszijde, tijdzone en gaten. OHLC alleen vertelt niet of stop of doel binnen dezelfde bar eerst geraakt is. MT5 kan voor een minuutbar zonder tickhistorie ticks genereren, ook bij een real-ticktest. Controleer data en journal in plaats van alleen de modusnaam. Bewaar bij een instrumentmandje de toen beschikbare selectie en bij macrodata de toen gepubliceerde versie, geen latere herziening.

Nieuw afzonderlijk EUR-tegenvoorbeeld: een fictief lineair contract betaalt EUR 10 per prijseenheid bij één positie-eenheid. Instap 100, stop 99 en doel 102. De bar heeft open 100, high 103, low 98 en close 101. Pad open→high→low→close raakt eerst doel: bij volledige exacte modeluitvoering EUR +20. Pad open→low→high→close raakt eerst stop: EUR −10. Dezelfde OHLC ondersteunt beide paden. Zonder volgordegegevens of een expliciete conservatieve modelregel mag je niet achteraf het winstpad kiezen. Dit is geen marktprijs of stopgarantie; overige kosten ontbreken.

Reconcileer prijzen voordat je spread aftrekt

Twee methodes, hetzelfde prijsresultaatFictieve long van één hoeveelheidseenheid: instapquote 100/102 met midden 101; uitstap 103/105 met midden 104. Exacte modeluitvoering, geen overige kosten.REKENVOORBEELDAsk → Bid103 −102 =+1Midden → midden104 −101 =+3Halve spreads+3 −1 −1 =+1Onjuiste volle aftrek+3 −2 −2 =−1
Twee methodes, hetzelfde prijsresultaat. Fictieve long van één hoeveelheidseenheid: instapquote 100/102 met midden 101; uitstap 103/105 met midden 104. Exacte modeluitvoering, geen overige kosten.

Het Ask/Bid-resultaat bevat de prijscomponent al. Extra kosten vragen een afzonderlijke post, geen herhaalde spreadaftrek.

Ask → Bid
103 −102 =+1 – Werkelijk opgegeven modelprijzen.
Midden → midden
104 −101 =+3 – Nog aanpassen voor prijszijden.
Halve spreads
+3 −1 −1 =+1 – Sluit aan op dezelfde uitvoering.
Onjuiste volle aftrek
+3 −2 −2 =−1 – Dit is een meetfout, geen andere fill.

Het fictieve bronmodel koopt en verkoopt één willekeurige hoeveelheidseenheid. Bij instap zijn Bid 100, Ask 102 en midden 101; bij uitstap Bid 103, Ask 105 en midden 104. Volledige exacte koop op Ask 102 en verkoop op Bid 103 geven +1 prijseenheid. Geen commissie, financiering of slippage.

De middenkoers stijgt drie. De instap ligt één boven midden, de uitstap één eronder: 3 −1 −1 = +1. Beide methodes sluiten aan. Twee volledige spreads van twee aftrekken geeft 3 −2 −2 = −1, een meetfout. Nogmaals twee van de echte Ask→Bid-uitkomst aftrekken telt eveneens dubbel. De bronvisual gebruikt een gedeeld nulpunt en lineaire schaal voor +3, +1 en de foutieve −1.

Kosten volledig opnemen zonder dubbeltelling

Ask-instap en Bid-uitstap bevatten het prijsverschil al. Voeg alleen apart berekende commissie, financiering en expliciete uitvoeringsafwijkingen toe voor zover nog niet verwerkt. Een fictieve spread van 0,8 pip is 0,4% van een doel van tweehonderd pips en 16% van vijf pips. Dat zijn aandelen van doelafstand, geen gemeten aandelen van strategievoordeel.

Een afzonderlijk bronvoorbeeld heeft vijftig gesloten trades vóór kosten: dertig winsten van PLN 40 en twintig verliezen van PLN 50. Totale winsten PLN 1.200, verliezen PLN 1.000, verschil PLN 200 en gemiddeld PLN 4. Profit factor is 1,20. Reken dezelfde complete kosten ook bij verliezers.

  • PLN 0 per trade: netto PLN 200, gemiddeld PLN 4, profit factor 1,20.
  • PLN 2 per trade: netto PLN 100, gemiddeld PLN 2. Winsten worden PLN 38 en verliezen PLN 52, dus profit factor 1.140/1.040, circa 1,10.
  • PLN 4 per trade: netto nul, gemiddeld nul en profit factor 1,00.

Dit model verandert alleen de aangenomen kosten en beschrijft geen waargenomen strategie. Test passende kosten- en uitvoeringsscenario’s. Tweemaal gemiddelde kosten als buffer of maximaal 20% van brutowinst aan kosten zijn mogelijke eigen filters, geen universele veiligheids- of afwijsgrenzen.

Overaanpassing en uitkomsttijd voorkomen

De beste keuze uit veel parameters, instrumenten en datasplits kan toevallige kenmerken van het verleden volgen. Bewaar alle pogingen, ook buiten de optimizer. Een sterk geselecteerd resultaat bewijst niet vanzelf overfitting, maar vraagt afzonderlijke evaluatie. Maximaal twee parameters veranderen verwijdert selectie elders niet.

Leg de datasplit vóór afstemming vast; 70/30 is één mogelijk ontwerp. Een zwakker testresultaat kan ook regimeverschil of steekproefruis bevatten. Verander je de regel na het bekijken ervan, dan is die periode voortaan ontwikkeldata. Een onaangeroerde test garandeert evenmin op zichzelf alle gewenste statistische eigenschappen.

Chronologie vraagt ook wanneer een label bekend wordt. Het bronmodel labelt beslissing t op t+3. De eerste test start op t 10 en fitting moet daarvoor klaar zijn. Van t 1–t 9 mogen alleen t 1–t 6 meedoen: t 6 is bekend op t 9, t 7–t 9 pas op t 10–t 12. Eerdere prijzen kunnen nog nodig zijn voor een testindicator; dat is niet hetzelfde als een nog onbekende trainingsuitkomst gebruiken. Deze uitsluiting lost alleen de beschreven labeloverlap op, niet ieder mogelijk datalek.

Getallen lezen zonder er een prestatie bij te verzinnen

Neem fictief winstkans 0,54, gemiddelde winnaar 2,3R en verliezer 1R. Bruto expectancy is 0,54 ×2,3 −0,46 = 0,782R. Profit factor is 1,242/0,46 = 2,70. Dit bepaalt geen drawdown of totaalrendement. Een afzonderlijk toegewezen rendement van 87% over precies vijf jaar heeft een samengesteld jaarequivalent van ongeveer 13,34%; dat volgt niet uit de tradegetallen.

Beoordeel openpositie-equity, geldstromen, nettoresultaten en alle selectiepogingen. Er is geen universeel realistisch bereik voor winstpercentage, profit factor of drawdown dat iedere strategie valideert.

Een testdossier dat je kunt tegenspreken

  1. Schrijf één mechanische specificatie met informatietijd, handeling, volume en behandeling van onduidelijke of ontbrekende gegevens.
  2. Reproduceer afzonderlijke trades, inclusief verlies, geen signaal en een onduidelijke intrabarcasus. Onderzoek afwijkingen vóór de totaalcurve.
  3. Bepaal onderzoeksperiode en chronologische evaluatie vóór afstemming. Twee of vijf jaar is geen universele vereiste.
  4. Verwerk prijzen, commissie, financiering en genoemde slippage en test gevoeligheid zonder spread dubbel af te trekken.
  5. Noteer aantal trades, afhankelijkheid, spreiding en onzekerheid. Meer instrumenten kan de hypothese veranderen; honderd trades bewijst geen significantie.
  6. Vergelijk demo met het bevroren model. Ook drie maanden demo levert geen automatisch recht op winstgevende live inzet.

Werkelijke brondata met een afgebakende vraag

Het bestaande projectonderzoek over ECB EUR/USD in 2016–2025 bevat 2.560 publicaties en 49 werkdagen zonder publicatie, passend bij de vastgelegde TARGET-kalender binnen die bronkopie. Bekijk ontbrekende ECB-publicaties en de kalender voor data, grafiek, code en beperkingen. Dit is het oorspronkelijke onderzoek met bronkopie van 7 oktober 2026, geen hier nieuw uitgevoerde beschikbaarheidsmeting.

Een geplande sluitingsdag is niet automatisch een onverwacht datagat. De dagelijkse referentie geeft geen intraday-OHLC, tickvolgorde, spread of uitvoerbare brokerprijs. Haar kalendercontrole valideert dus niet de uitvoering van jouw strategie. Walk-forward: toets de procedure, labelhorizon en vermogensreeks verbindt vervolgens de test met vastgelegde versies en evaluatiemomenten.