Geen rekening houden met 'Bad ticks' in je dataset

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Financiële Data & Kwaliteit · 2026-02-15 · 5 min leestijd

Je zit achter je scherm, je backtest draait soepel en je equity curve ziet er prachtig uit. Je bot op Binance of Interactive Brokers lijkt een goudmijn.

Maar dan ineens, in de live trading, verliest je bot €500 op een trade die in de backtest winstgevend was. Waarom?

Omdat er een ‘bad tick’ in je dataset zat. Een verkeerde prijs die je model een verkeerde beslissing liet nemen. Dit is een van de meest frustrerende, maar makkelijk te verhelpen, problemen in algoritmische trading.

Wat zijn die vervelende ‘bad ticks’ eigenlijk?

Een bad tick is simpelweg een datapunt met een foute prijs. Het is een fout in de historische data die je van je broker of data-provider krijgt.

Stel je voor: de Bitcoin-prijs beweegt normaal tussen €42.000 en €42.100, en plots staat er een tick van €10.000 of €100.000 in je dataset.

Dat is niet de markt die ineens instort, het is een ruis. Deze fouten ontstaan vaak door technische glitches. Een broker API die even hapert, een verkeerde sync tussen servers, of een moment van illiquiditeit waar een enkele market order de prijs extreem ver uitslaat.

In Python, als je met libraries zoals Pandas of Backtrader werkt, neem je deze data vaak klakkeloos over. Je model ziet die €10.000 en denkt: "Geweldig, short-sell nu!" en executeert een trade die nooit had moeten bestaan.

Waarom dit je rendement opvreet

Stel je voor dat je een mean-reversion bot draait op een aandeel zoals ASML, dat normaal rond €750 beweegt.

Je model koopt als de prijs €5 onder het voortschrijdend gemiddelde zakt. Door een bad tick van €700 (een foutieve dip) koopt je bot massaal in, terwijl de echte prijs nooit zo laag is geweest. Resultaat? Je koopt op een piek en verkoopt met verlies zodra de 'echte' prijs herstelt.

Bij high-frequency trading bots is dit nog gevaarlijker. Een enkele verkeerde prijs kan je stop-loss triggeren voordat de markt überhaupt in de buurt komt.

Je risicomanagement systeem, dat zo zorgvuldig is ingesteld op 1% risico per trade, wordt compleet omzeild.

Je verliest niet alleen geld op die ene trade, maar je vertrouwen in je eigen algoritme brokkelt af. Het voelt alsof je strategie niet werkt, terwijl het gewoon een kwestie is van vieze data.

Hoe je bad ticks opspoort en verwijdert

Gelukkig hoef je niet handmatig door duizenden candles te scrollen. In Python kun je eenvoudig statistische methoden toepassen om outliers te vinden.

De meest effectieve manier is het berekenen van het percentageuele verschil tussen een tick en de vorige tick. Als de prijs meer dan 5% (of een andere drempel die bij je asset past) beweegt in één candle, is het waarschijnlijk een bad tick. Een andere slimme techniek is het vergelijken met de 'typical price'.

Dit is het gemiddelde van de high, low en close van een candle.


# Bereken het verschil tussen opeenvolgende sluitingsprijzen
df['pct_change'] = df['close'].pct_change().abs()

# Filter de outliers eruit (bijv. meer dan 10% verschil)
bad_ticks = df[df['pct_change'] > 0.10]

Als de low van een candle extreem laag is, maar de typical price normaal, weet je dat het waarschijnlijk een flitsfout is. Je kunt deze data-points eenvoudig verwijderen of missende data interpoleren met Pandas. Voorbeeldcode in Python ziet er vaak zo uit:

Zodra je deze rijen hebt geïdentificeerd, kun je ze droppen of interpoleren. Het doel is een schone dataset, waarbij je ook verschillende tijdzones synchroniseert in je trading dataset, die de werkelijke marktbeweging reflecteert zonder de ruis die je broker soms levert.

Modellen voor prijsindicaties en validatie

Een goede manier om bad ticks te valideren is door meerdere data-sources te gebruiken en altijd te letten op het belang van point-in-time data.

Als je een bot draait op de NASDAQ via Interactive Brokers, kun je de prijs cross-checken met een andere provider, zoals Alpaca of een betaalde dienst als Polygon.io. Als je eigen API een prijs van €50 geeft terwijl Polygon €55 laat zien, weet je genoeg. Er bestaan ook specifieke algoritmen voor 'outlier detection' die je kunt toepassen op je tick data. Denk aan de Z-score methode.

Je berekent de gemiddelde prijs en de standaardafwijking over een venster van bijvoorbeeld 20 candles. Als een prijs meer dan 3 standaardafwijkingen afwijkt, markeer je hem als een bad tick.

Dit is super effectief voor assets met een normale verdeling, zoals forex paren (EUR/USD).

Een ander model is de 'Rolling Median'. In plaats van het gemiddelde (wat gevoelig is voor extreme uitschieters), neem je de mediaan over een venster. Als de huidige prijs ver afwijkt van de mediaan, is het een outlier. Dit werkt perfect voor crypto, waar prijzen vaak scherp bewegen maar zelden extreem spuiten zonder reden.

Praktische tips voor je trading setup

Begin altijd met een 'sanity check' voordat je een backtest draait. Haal je data eerst door een filter heen voordat je je complexe Python script loslaat op de dataset.

Gebruik libraries zoals Pandas_ta of Backtrader om automatisch data te schonen. Dit voorkomt dat je een maand lang een bot optimaliseert op foute data. Implementeer real-time checks in je live bot.

Als je broker API een prijs stuurt die meer dan 2% afwijkt van de vorige tick en de orderbook depth, ignoreer die tick dan.

Je bot moet slim genoeg zijn om te weten wanneer de markt 'niet klopt'. Dit voorkomt fatale trades tijdens flash crashes of API-fouten. Test je risicomanagement op extreme scenario's. Zorg dat je stop-loss en take-profit levels niet te strak staan, zodat een enkele bad tick niet je hele positie liquideert.

Soms is het beter om een 'time-weighted average price' (TWAP) te gebruiken in plaats van direct market orders, zodat je niet in één keer op een foute prijs inkoopt. Onthoud: data is de brandstof voor je algoritme.

Als de brandstof vervuild is, rijdt je bot verkeerd. Neem de tijd om je datasets te inspecteren en te zuiveren. Je winstgevendheid hangt er direct van af.

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Over Alex de Vries

Alex is een ervaren quantitatief analist en Python-ontwikkelaar die complexe trading concepten vertaalt naar begrijpelijke, praktische handleidingen voor zowel beginners als gevorderden.

Volgende stap
Bekijk alle artikelen over Financiële Data & Kwaliteit
Ga naar overzicht →