Wat is 'Smart Order Routing' en heb je het nodig voor je bot?
Je hebt een gave Python-bot gebouwd die signalen genereert, je backtests lopen soepel in Backtrader of Lean, en je broker-API is stabiel. Toch loopt je live order soms tegen een teleurstellende vulprijs aan. Dat gat tussen je backtest en de realiteit?
Vaak zit 'm daar precies: hoe je order de markt in wordt gestuurd.
Smart Order Routing (SOR) is het logistieke brein achter een betere uitvoering. Het beslist niet wat je koopt of verkoopt, maar waar, hoe en via welke route je order wordt uitgevoerd. In een wereld met meerdere exchanges, dark pools en market makers kan dat het verschil maken tussen een winstgevende strategie en een die net tegen de kosten aanhikt.
Wat is Smart Order Routing eigenlijk?
Stel je voor dat je een order van 500 aandelen moet plaatsen.
Je broker heeft toegang tot drie handelsplaatsen: Euronext, Xetra en een dark pool. SOR is een algoritme dat op basis van real-time data beslist hoe je die 500 stuks het beste opdeelt en naar welke locatie stuurt.
Het doel is simpel: zo min mogelijk slippage, lage transactiekosten en een zo hoog mogelijke fill-kwaliteit. De kern van SOR draait om drie variabelen: prijs, snelheid en kosten. De router kijkt naar de best beschikbare prijs op elk moment, maar ook naar de diepte van het orderbook en de kans op een betere fill elders. Bij een illiquide small-cap op Euronext kan een dark pool soms een betere match bieden, terwijl een populaire ETF juist het beste presteert op Xetra met lagere tarieven.
Een typische SOR-check gebeurt in milliseconden. Je broker of een externe dienst vergelijkt live quotes, liquidity en fee-structuren, en splitst je order in slices van bijvoorbeeld 50 of 100 stuks.
Die slices gaan naar verschillende venues, met een limietorder of een marktorder, afhankelijk van je parameters. Het resultaat: je gemiddelde vulprijs ligt dichter bij je referentieprijs, en je slipage daalt vaak met enkele basispunten tot tientallen basispunten.
Waarom SOR uitmaakt voor je bot
Backtests zijn mooi, maar ze zijn vaak te schoon. Ze gebruiken een enkele prijsbron en nemen geen rekening met venue-specifieke kosten of liquidityverschillen.
In de praktijk kan een order op Euronext meer slippen dan op Xetra, en een dark pool kan je order pas later matchen. SOR brengt die realiteit terug in je uitvoering.
Denk aan kosten. Als je broker €0,01 per 100 aandelen rekent op Euronext en €0,007 op Xetra, dan telt dat op bij een bot die 200 trades per dag doet. Bij 25 handelsdagen per maand scheelt dat al snel €10 à €15 per maand voor een enkele strategie. SOR stuurt de order naar de voordeligste venue, zonder dat je je strategie hoeft aan te passen.
Slippage is nog belangrijker. Bij een mid-cap met een spread van €0,05 kan een marktorder op een dunne venue zomaar €0,02 extra slippen.
SOR kiest voor limietorders op venues met diepe boeken, of splitst de order in kleinere slices om de markt minder te belasten. Bij een order van 1.000 aandelen scheelt dat al snel €20 à €40 per trade, afhankelijk van het instrument. En dan is er nog de fill-kwaliteit.
Sommige venues hebben snellere fills dan andere. Als je bot een strakke entry nodig heeft, bijvoorbeeld na een momentum-trigger, helpt SOR om de order te richten naar de venue met de hoogste waarschijnlijkheid op een snelle fill. Dat verkleint de kans op gemiste trades en reduceert het risico op verkeerde prijzen.
Hoe SOR werkt: kern en werking in de praktijk
Een SOR-algoritme begint met een orderprofiel: grootte, limiet, tijdhorizon en venue-voorkeuren. Vervolgens worden de beschikbare handelsplaatsen gescand op prijs, diepte en kosten.
Je bot of broker-API stuurt de order naar de beste venue of splitst de order over meerdere venues. De router monitort de fills en past de routing aan terwijl je order flow trading analyseert als de markt beweegt.
Stel: je bot krijgt een limietorder voor 750 aandelen van een small-cap op Euronext. De SOR checkt drie venues: Euronicht (diep orderbook, €0,012 per 100), Xetra (iets minder diep, €0,008 per 100) en een dark pool (lagere kans op snelle fill, €0,005 per 100). De router beslist: 400 stuks naar Euronext (beste diepte), 250 naar Xetra (lagere kosten) en 100 naar de dark pool (voor prijsverbetering). De slices worden als limietorders geplaatst, met een time-in-force van enkele seconden.
Vervolgens worden de fills gemonitord en bijgestuurd. De timing is cruciaal.
SOR werkt het beste bij liquiditeitrijke markten, maar kan ook helpen bij illiquide instrumenten door de order over tijd te spreiden. Bij een volatiele markt kan de router kiezen voor agressievere slices om te voorkomen dat de prijs weglipt. Bij rustige markten kan de router juist wachten op betere prijzen en de slices verkleinen.
Technisch gezien is SOR een extra laag boven je bestaande broker-API. Je kunt een eigen SOR bouwen in Python, bijvoorbeeld met asyncio voor snelle decision-cycles, of een kant-en-klare SOR van je broker gebruiken.
Belangrijk is dat je bot de orderstatus en fills goed ontvangt, zodat de SOR realtime kan bijsturen.
Een robuuste error-handling is essentieel: als een venue down is, moet de router direct overschakelen naar de volgende optie.
Varianten en modellen: van eenvoudig tot geavanceerd
Er bestaan verschillende SOR-modellen, variërend van eenvoudig tot complex. Een basis-SOR kijkt alleen naar de best beschikbare prijs en kosten.
- Cost-based routing: kiest de venue met de laagste totale kosten (fee + slippage). Handig voor strategieen met veel trades en lage marges.
- Liquidity-seeking routing: splitst de order op basis van de diepte van het orderbook. Ideaal voor grotere orders in mid-caps.
- Time-based routing: verspreidt de order over de handelsdag of binnen een strakke tijdwindow, om marktimpact te beperken.
- Dark-pool routing: stuurt een deel van de order naar dark pools voor prijsverbetering, met een fallback naar lit-markten.
Een geavanceerdere SOR voegt liquidity-voorspellingen en slippagemodellen toe. Enkele veelgebruikte varianten: Prijsindicaties: voor een retail-bot met een dagelijks volume van €10k à €50k, schat je de impact van SOR op €5 à €30 per trade, afhankelijk van het instrument en de venue-keuze. Bij grotere volumes (€100k+) kan het verschil oplopen tot €50 à €200 per trade, vooral door lagere slippage en betere fills. Modellen kunnen ook worden getuned op basis van backtests.
Gebruik een backtesting-omgeving zoals Backtrader of Lean met meerdere prijsbronnen en venue-specifieke kosten. Automatiseer je carry trade strategie door slices van 50, 100 en 200 aandelen te simuleren en de gemiddelde vulprijs versus de referentieprijs te meten.
Zo ontdek je welk model het beste past bij je strategie en handelsfrequentie.
Een praktische tip: combineer SOR met risicomanagement. Stel een maximum slippage in per slice, bijvoorbeeld 0,1% van de referentieprijs, en beperk het aantal slices per minuut om over-trading te voorkomen. Gebruik een kill-switch als de markt te volatiel wordt, en log elke beslissing voor latere analyse.
Heb jij SOR nodig voor je bot?
Als je bot handelt in liquiditeitrijke ETFs of large-caps en je broker biedt al een goede standaarduitvoering, dan is een eigen SOR misschien niet nodig. De winst kan klein zijn, en de complexiteit neemt toe.
Maar als je bot actief is in small-caps, illiquide aandelen of meerdere handelsplaatsen gebruikt, dan is SOR een gamechanger.
Denk aan je handelsfrequentie. Bij enkele trades per dag is de impact beperkt. Bij tientallen of honderden trades per dag loopt het snel op.
Een SOR kan je helpen om de totale kosten met 0,05% à 0,2% te verlagen, wat bij een portfolio van €50k al snel €25 à €100 per maand scheelt. Ook de broker-API is bepalend.
Sommige brokers bieden ingebouwde SOR via hun API, andere vereisen een eigen implementatie. Check de documentatie van je broker en vraag naar de beschikbare venues en tarieven. Test de SOR eerst in een paper trading-omgeving, voordat je live gaat. Praktische tips om te starten:
- Start klein: implementeer een cost-based SOR voor één instrument en vergelijk de resultaten met je huidige uitvoering.
- Meet wat telt: vulprijs versus referentie, slippage in basispunten en totale kosten per trade.
- Gebruik realistische backtests: neem venue-specifieke fees en slippage mee, en test onder verschillende marktomstandigheden.
- Houd het simpel: begin met een beperkt aantal venues en slices, en breid pas uit als je resultaten stabiel zijn.
- Monitor live: log elke order en fill, en stel alerts in voor afwijkende prestaties.
Als je bot serieus rendement nastreeft, is SOR geen luxe maar een logische volgende stap.
Het maakt je uitvoering betrouwbaarder, verlaagt je kosten en verbetert je algehele prestatie. En het mooie: je hoeft je strategie niet te veranderen. Je stuurt je orders gewoon slimmer de markt in.
