De Interactive Brokers API (ib_insync) installeren en testen

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Python Libraries voor Algoritmische Trading · 2026-02-15 · 6 min leestijd

Stel je voor: je hebt een handelsstrategie bedacht die je wilt testen en uitvoeren zonder elke seconde zelf achter je scherm te zitten. Dan is de Interactive Brokers API via ib_insync je beste vriend.

Deze tool koppelt je Python-code direct aan de broker, zodat je orders kunt plaatsen, data kunt ophalen en je risicomanagement kunt automatiseren.

Je bouwt een brug tussen je algoritmische bot en de markt. ib_insync is een Python-bibliotheek die de officiële Interactive Brokers TWS API op een relaxte manier ontsluit. Het is asynchroon, werkt met bekende libraries als pandas en asyncio, en voelt veel natuurlijker aan dan de standaard Java- of C#-implementaties. Je script communiceert rechtstreeks met Trader Workstation (TWS) of IB Gateway, zonder extra middleware.

Waarom ib_insync onmisbaar is voor algoritmische traders

Als je serieus bent over backtesting en live trading, wil je een API die betrouwbaar is en snel reageert.

Interactive Brokers biedt wereldwijde markttoegang en lage transactiekosten, maar de standaard API is soms stroef. ib_insync maakt het leven makkelijker: je schrijft code die logisch aanvoelt, je krijgt direct feedback en je kunt sneller itereren op je strategie. Denk aan risicomanagement: je kunt automatisch stoplosses, position sizing en limietorders bouwen zonder handmatig in te grijpen. Voor backtesting haal je historische data op en synchroniseer je je portfolio live. Dat betekent minder ruis, meer focus op je strategie en een betere controle over je kapitaal.

En ja, er zijn alternatieven. Een lichtgewicht broker zoals Alpaca is vaak gratis voor beginners, maar heeft minder markten.

Een platform als MetaTrader 5 is populair bij forex, maar je Python-integratie is beperkter.

Voor serieuze algoritmische handel met toegang tot aandelen, opties, futures en forex is IBKR met ib_insync een krachtige en betaalbare combinatie.

Stap-voor-stap installatie en eerste verbinding

Je begint met een stabiele Python-omgeving. Gebruik een virtuele omgeving (venv of conda) om dependencies netjes te houden.

Zorg dat je Python 3.9 of nieuwer draait en pip up-to-date is. Voor data en tijdbeheer installeer je ook pandas en numpy. De installatie van ib_insync is simpel: je roept pip install ib_insync in je terminal.

Daarnaast moet je Interactive Brokers TWS of IB Gateway hebben draaien. TWS is het volledige desktopplatform; IB Gateway is lichter en geschikt voor servers.

Voor live trading activeer je API-toegang in TWS via Config > API > Settings, met een poortnummer (standaard 7497 voor TWS paper, 7496 voor live) en IP-beperkingen.

Je test de verbinding met een minimaal script. Maak een bestand aan, bijvoorbeeld test_ib.py, en gebruik deze code:

from ib_insync import IB, Stock
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=1)
print('Verbonden:', ib.isConnected())
ib.disconnect()
Als je TWS of IB Gateway draait en de poort klopt, krijg je een bevestiging.

Gebruik voor backtesting en development altijd eerst de paper trading-omgeving. Zo test je veilig zonder echt kapitaal te riskeren.

Werking in de praktijk: data, orders en events

De kern van ib_insync draait om het opvragen van marktgegevens, het plaatsen van orders en het reageren op events.

Je bouwt een bot die periodiek data ophaalt, signaalberekeningen doet en orders stuurt, terwijl hij continu zijn positie en risico’s monitort. Zodra je tevreden bent met je strategie, is het verstandig om je trading algoritme te containerizen. Voor data haal je historische kandelaars op met reqHistoricalData. Je kunt kiezen voor 1-minuut, 5-minuut of dagdata, afhankelijk van je strategie. Voor live data gebruik je reqMktData op een contract. Voorbeeld:

from ib_insync import Stock, IB
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=1)
aapl = Stock('AAPL', 'SMART', 'USD')
ib.reqMktData(aapl, '', False, False)
ib.sleep(2)
print(aapl.marketPrice())
ib.disconnect()
Orders plaatsen via deze Python wrapper is even rechttoe rechtaan.

Je maakt een Order-object en stuurt het naar je contract. Een limietorder voor 100 aandelen AAPL op 180,00 USD ziet er zo uit:

from ib_insync import LimitOrder
order = LimitOrder('BUY', 100, 180.00)
trade = ib.placeOrder(aapl, order)
print('Order status:', trade.orderStatus.status)
Events zorgen voor reactief handelen. Je kunt callbacks registreren voor orderupdates, fill-notificaties of nieuwe tickdata. Zo bouw je een bot die automatisch risicogrenzen bewaakt en posities beheert zonder dat je handmatig ingrijpt.

Backtesting en risicomanagement met ib_insync

Backtesting draait om betrouwbare data en reproduceerbare logica. Met ib_insync haal je historische data op en verwerk je die in pandas voor analyse.

Je strategie test je op een paper account voordat je naar live gaat. Zo voorkom je onverwachte fouten door splitsingen, dividenduitkeringen of illiquiditeit. Een typische backtest-flow ziet er zo uit: je haalt 2 jaar 5-minuutdata op, berekent indicators, simuleer orders en vergelijk je equity curve.

Gebruik realistische transactiekosten: bij IBKR zijn aandelen vaak rond €0,005 per aandeel (minimaal €1-2 per order), afhankelijk van de beurs.

Voor opties en futures zijn de tarieven marktafhankelijk, maar je kunt een vaste fee per contract meenemen in je model. Risicomanagement bouw je in op meerdere lagen. Position sizing volgens Kelly of een vast percentage per trade, stoplosses en take-profits via limit- en stoporders, en Monte Carlo simulaties uitvoeren voor risico-inschatting bij daglimieten voor drawdown.

Je kunt een eenvoudige safeguard bouwen die een trade blokkeert als je dagverlies boven een drempel komt, bijvoorbeeld 2% van je totale kapitaal. Voor meer geavanceerde backtesting sluit je ib_insync aan op libraries als backtrader of vectorbt.

Die bieden uitgebreide performance-analyse en portefeuillesimulatie. Je haalt data via ib_insync, voedt die aan je backtest-engine en gebruikt de resultaten om je live parameters te finetunen.

Prijzen, varianten en brokeroverwegingen

Interactive Brokers heeft verschillende plannen. Voor particulieren is er IBKR Pro met pay-per-share tarieven en IBKR Lite met vaste commissies op aandelen (in de VS vaak €0,005 per aandeel, minimaal €1).

In Europa hangen kosten af van de beurs; bij Euronext betaal je vaak een klein bedrag per transactie, plus eventuele beurs- en clearingkosten.

Voor opties en futures zijn de tarieven contractspecifiek. Een optiecontract kost bij IBKR vaak tussen €0,50 en €1,50 per contract, afhankelijk van volume en beurs. Futures-commissies variëren van €0,50 tot €3 per contract, plus exchange fees.

Paper trading is gratis en ideaal voor development en testen. Alternatieve brokers bieden andere voordelen.

Alpaca is populair voor eenvoudige aandelenstrategieën en heeft vaak geen maandelijkse kosten, maar mist wereldwijde marktdekking. MetaTrader 5 is sterk voor forex, maar je Python-integratie loopt via wrappers en is minder native. Voor brede toegang, lage tarieven en robuuste API is IBKR met ib_insync een sterke keuze.

Praktische tips voor een soepele start

  • Gebruik altijd eerst paper trading. Je bespaart geld en leert de API kennen zonder druk.
  • Houd de TWS API-versie bij. ib_insync werkt het beste met recente versies; update indien nodig.
  • Beperk je IP in TWS tot localhost en eventueel je vaste IP voor veiligheid.
  • Log al je acties en fouten. Een simpel logbestand helpt bij het debuggen van je bot.
  • Test met één instrument en een simpele strategie voordat je uitbreidt naar meerdere assets.

Begin klein en bouw stap voor stap op. Kies een liquid aandeel zoals ASML of Apple, zet een eenvoudig moving-average-crossover-signaal neer en voeg risicobewaking toe.

Zodra je bot stabiel loopt op paper, schaal je op naar live met kleine sizes. Zo blijft het leuk en leerzaam, zonder onnodige risico’s.

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 Python Libraries voor Algoritmische Trading
Ga naar overzicht →