Wat is 'Price Impact' en de 'Square Root Law' van trading?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Geavanceerde Quant Concepten · 2026-02-15 · 7 min leestijd

Stel je voor: je bouwt een algoritmische bot in Python, je backtest op historische data van je broker, en je ziet een mooie entry. Je geeft een order van 500 aandelen en de prijs schiet direct omhoog.

Je wint op papier, maar in de praktijk is je fill prijs slechter dan verwacht. Dat gat tussen je verwachte prijs en de werkelijke fill heet price impact. Het is het verhaal achter de cijfers, en het is waar de meeste bots stuklopen als ze risicomanagement negeren.

Price impact is hoeveel de marktprijs beweegt door jouw handel. Het is een combinatie van zichtbare liquidity in de orderbook en verborgen liquidity die pas verschijnt als jij handelt.

Hoe groter je order, hoe meer je de markt moet verplaatsen. Dat is geen toeval, het volgt een patroon: de square-root law. En dat patroon is cruciaal voor slimme execution, voor risicomanagement en voor de winst van je strategie.

Square-Root Law van Price Impact

De square-root law zegt dat de impact van een order groeit met het wortel van het volume. In formule: I(Q) ∝ Q^1/2.

Of concreter: I(Q) = Y σ √(Q/V). Hier is Q je ordergrootte, V de marktvolume, σ de volatiliteit, en Y een constante. Je ziet meteen: verdubbel je order, en de impact stijgt maar met ongeveer 1,4x.

Dat is veel zachter dan lineair. De empirische observatie is helder.

In liquid aandelen op de Tokyo Stock Exchange (TSE) wordt een impact exponent δ ≈ 0.50 gemeten, met een error kleiner dan 0,01. Sato en Kanazawa (2024) laten zien dat deze relatie universeel is over 8 jaar, voor liquid stocks. Impact blijkt onafhankelijk van het aantal transacties (N) en de tijd (T) waarover je handelt. Het hangt vooral af van ordergrootte, volatiliteit en marktvolume.

Waarom is dit belangrijk voor je bot? Omdat impact je echte kosten bepaalt.

Je backtest moet impact meenemen, anders overschat je de winst. In Python kun je impact modelleren met de square-root formule, en je execution splitsen in kleinere tranches. Je risicomanagement verbetert omdat je geen extreme slippage meer accepteert.

Je broker API geeft je de data, maar de theorie geeft je de knoppen om aan te draaien.

Empirische observatie en definitie

Pak een voorbeeld. Je bot ziet een setup en wil 10.000 aandelen kopen. De markt heeft een gemiddeld dagvolume van 5 miljoen, σ = 2% en Y = 0,2.

De impact is dan I(10k) = 0,02 * 0,2 * √(10.000/5.000.000) ≈ 0,0004. Dat is 0,04% prijsstijging.

Op een aandeel van €50 is dat €0,02 per stuk, oftewel €200 extra kosten. Zonder impactmodel denk je dat je order gratis is, maar in de praktijk betaal je.

De square-root law is een empirische wetmatigheid, geen dogma. Hij werkt goed voor liquid stocks, maar niet overal. In FX zie je vaak lineaire impact bij zeer grote orders, zoals 1 miljoen eenheden.

Voor je bot betekent dit: kies je impactmodel per asset, en kalibreer op echte fills.

Gebruik je broker API om slippage te loggen en Y en σ per symbool te schatten.

Theorie en verklaringen

De klassieke Kyle-modellijn is lineair: impact groeit recht evenredig met ordergrootte. Kyle’s lambda vat dat samen.

In de praktijk zien we geen lineair maar een wortelgedrag. Hoe kan dat? Het antwoord ligt in hoe liquidity verschijnt en verdwijnt. Liquiditeit is niet statisch; het reageert op wat jij doet.

Latent Liquidity Theory (LLT), ook wel LLOB (Latent Limit Order Book), legt uit dat er verborgen liquidity bestaat.

Handelaren wachten met orders tot ze een signaal zien. Jouw trade trekt die verborgen liquidity naar boven. Daardoor is de impact kleiner dan lineair.

Je betaalt een beetje voor elk extra aandeel, maar steeds minder per eenheid. Een andere verklaring is Bayesian market making.

Market makers passen hun quotes aan op basis van informatie. Als jij groot handelt, vermoeden ze dat je informatie hebt, en ze verhogen hun spreads, soms zelfs door misleidende orders zoals quote stuffing in te zetten.

Toch is de totale impact beperkt omdat makers ook risico’s afdekken en hun quotes geleidelijk aanpassen. De square-root law vangt dit samenspel van informatie en risico. De TSE-data van Sato & Kanazawa (2024) ondersteunt deze ideeën. Metaorders zijn opgelost (ID-resolved), en de impact blijkt onafhankelijk van N en T.

Latent Liquidity Theory en LLOB

Dat betekent: impact zit niet in hoe snel je handelt, maar in hoe groot je handelt. Voor je bot is dat een heldere les: sneller handelen verlaagt impact niet per se. Grotere tranches wel.

Stel je een orderbook voor met zichtbare bids en asks. Daarachter zit verborgen liquidity: orders die pas verschijnen als de prijs een drempel raakt. LLOB-modellen schatten hoeveel dat is.

Je bot kan daarvan profiteren door de impact te schatten en je tranches daarop af te stemmen. Bijvoorbeeld: 500 aandelen per tick, met een pauze om de latentie te laten herstellen.

De praktijk op TSE laat zien dat impact ongeveer 0,05% tot 0,1% is voor typische liquiditeitsniveaus. Voor een aandeel van €100 betekent dat €0,05 tot €0,10 per aandeel. Bij een order van 20.000 aandelen kan dat oplopen tot €1.000 tot €2.000.

Dat is een directe kostenpost die je bot moet incalculeren. In Python kun je een impactfunctie bouwen die per order de verwachte slippage berekent en die meeneemt in je backtest.

Je risicomanagement wordt beter als je impact kent. Je kunt je positiebeheer afstemmen: smaller in illiquide momenten, breder in diepe liquiditeit. Je broker API geeft je de diepte per symbool, en je kunt die combineren met de square-root formule. Zo voorkom je dat je bot te groot wordt voor de markt en je slippage explodeert.

Beperkingen en alternatieven

De square-root law is geen universale waarheid. In FX zien we vaak lineaire impact bij grote orders, zoals 1 miljoen eenheden.

Daar groeit de impact recht evenredig met Q. Je bot moet dus per asset kiezen welk model past. Gebruik je backtests om te kalibreren: meet de impact van je eigen fills en vergelijk die met de theorie.

Er zijn ook andere modellen. Kyle’s lambda is lineair en werkt goed voor illiquide of minder efficiënte markten.

LLOB-modellen zijn non-lineair en vangen de latentie. Voor je Python-bot kun je een hybride aanpak bouwen: standaard square-root voor liquid stocks, lineair voor FX, en een schakelaar per symbool. Dat voorkomt fouten en verbetert je risicomanagement. Een praktische fout die veel bots maken: impact niet meenemen in de backtest.

Je ziet dan prachtige winsten, maar in de live markt verdwijnen die door slippage. Test daarom altijd met een impactmodel, check de marktefficiëntie en kalibreer op echte data van je broker.

Lineaire impact in FX-markten

Gebruik API-calls om de orderbook-diepte te loggen en je impactparameters per symbool te tunen. In FX is de liquiditeit anders. Grote banken en ECNs bieden diepe liquidity, maar de impact is vaak lineair voor orders boven 1 miljoen eenheden.

Voor een bot die handelt in EUR/USD betekent dat: een order van 2 miljoen eenheden leidt tot ongeveer 2x de impact van 1 miljoen.

Je kunt dat meenemen in je execution-strategie door grotere orders op te splitsen en de lineaire impact te betalen per deel. Stel: EUR/USD op 1,0800, volatiliteit 0,06% per uur. Een lineaire impact van 0,001% per miljoen eenheden betekent 0,001% op 1 miljoen = 0,1 pip, wat essentieel is voor wie statistical arbitrage op milliseconde niveau toepast.

Op 2 miljoen is het 0,2 pip. Dat is klein, maar bij hoge frequentie en grote volumes loopt het op.

In Python kun je een FX-impactfunctie bouwen die lineair schaalt en die combineert met je orderbook-splitsing. Gebruik de tips uit de data: voor liquid stocks pas je de square-root law toe, voor FX pas je lineaire impact toe bij grote orders.

Zo voorkom je de fout om overal lineaire impact aan te nemen. Je bot wordt slimmer, je backtests realistischer, en je risicomanagement scherper.

Praktische tips voor je trading bot

  • Bouw in Python een impactfunctie: I(Q) = Y σ √(Q/V) voor aandelen, lineair voor FX boven 1M.
  • Meet Y en σ per symbool via je broker API en historical data, en kalibreer elke week opnieuw.
  • Voeg impact toe aan je backtest: bereken de verwachte slippage en pas je entry/exit prijzen aan.
  • Splits grote orders in tranches: bijvoorbeeld 500 aandelen per tick, pauze van 1 seconde voor herstel.
  • Monitor risico’s: houd de impact per positie bij en stel limieten in op max slippage per trade.

De square-root law is een krachtig hulpmiddel voor optimalisatie van trade execution. Het helpt je om kosten te verlagen en je bot schaalbaar te houden.

Gebruik de data, pas het toe per markt, en blijf meten. Zo bouw je een robuuste, winstgevende strategie die niet verrast wordt door verborgen impact.

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 Geavanceerde Quant Concepten
Ga naar overzicht →