Correlatie-analyse tussen strategieën: Voorkom dat alles tegelijk verliest
Je hebt een gave strategie. Je hebt 'm getest in Python, de resultaten zien er goed uit en je bot draait live via een broker als Interactive Brokers of Alpaca.
Dus wat is het probleem? Je draait misschien wel vijf van die strategieën tegelijk.
Je denkt: "Meer botjes, meer geld." Maar als de markt klapt, zie je opeens alle bots in het rood staan. Tegelijk. Je totale portfolio verdwijnt als sneeuw voor de zon. Dat is geen pech. Dat is correlatie. En dat is een stil gevaar dat je kunt uitschakelen.
Wat is correlatie eigenlijk?
Stel je voor dat je twee botjes draait. Eén koopt de S&P 500 (via een ETF zoals SPY) als de RSI laag is.
De ander short de Nasdaq 100 (QQQ) als de MACD een bearish crossover geeft. Ze lijken totaal verschillend. Toegegeven, de een is long, de ander short.
Maar in een echte crisis? Beide markten bewegen vaak als een trein in dezelfde richting: omlaag.
De correlatie is dan 1, of heel dicht bij 1. Correlatie meet simpelweg hoe sterk twee dingen samen bewegen. De waarde loopt van -1 (ze bewegen exact tegengesteld) via 0 (geen verband) tot +1 (ze bewegen perfect synchroon).
Als je strategieën een correlatie van 0.8 hebben, betekent dat: als de ene winst maakt, maakt de ander bijna altijd ook winst. Klinkt goed? Tot de markt omslaat.
Dan verlies je bijna altijd ook allebei. Het gevaar zit 'm in de illusie van spreiding.
Je hebt misschien een momentum-strategie op aandelen, een mean-reversion strategie op crypto en een trend-following bot op grondstoffen. Je denkt gespreid te zijn. Maar als de rente omhoog schiet, kan het zomaar zijn dat aandelen, crypto en olie allemaal keihard onderuit gaan. Je bent niet gespreid. Je hebt gewoon hetzelfde risico in drie verschillende verpakkingen gekocht.
Waarom dit je portfolio kan vernietigen
Stel je voor dat je €10.000 verdeelt over vijf bots. Iedere bot krijgt €2.000.
Je backtests zien er mooi uit. Je verwacht dat als de ene bot €500 verliest, de ander wel €500 wint. De realiteit is harder.
Tijdens een flash crash of een grote marktgebeurtenis (zoals een FED-rentevergadering) bewegen bijna alle liquiditeitssystemen hetzelfde.
De kans op een 'perfect storm' waarbij al je strategieën falen, is veel groter dan je denkt. De impact op je totale equity curve is enorm. Een enkele verliezende dag is vervelend.
Vijf verliezende bots op één dag is een bloedbad. Je drawdown (de diepte van je verlies) wordt veel dieper en duurt veel langer om van te herstellen.
Als je totaal met 20% in de min zit, moet je met de resterende 80% maar liefst 25% winst maken om weer op break-even te komen.
En dat terwijl je misschien net in een neerwaartse spiraal zit. Risicomanagement gaat niet alleen over stop-losses. Het gaat over de totale blootstelling van je vermogen. Als je drie bots draait die allemaal afhankelijk zijn van dezelfde data-feed of dezelfde broker-liquiditeit (bijvoorbeeld bij minder bekende crypto-exchanges), creëer je een enkelvoudig punt van falen. Als die broker plat gaat, staan al je bots stil en mis je kansen of, erger, kun je niet uit een verliesgevende positie stappen. Overweeg daarom ook eens hedging strategieën met opties om je Python trading bot extra te beschermen.
Hoe je correlatie meet (met Python)
Gelukkig hoef je geen wiskundige te zijn om dit te meten. Als je al backtest met Python, heb je de tools al in handen.
Het enige wat je nodig hebt zijn de resultaten van je strategieën. Gebruik een Pandas DataFrame waarin je de dagelijkse (of uurlijkse) returns van elke strategie als een aparte kolom zet. Stel je hebt drie bots: Momentum, MeanReversion en TrendFol.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Verzamel de resultaten van je backtests (bijv. via Backtrader of Zipline)
# of je live data via de API van je broker.
# Zorg dat je een DataFrame hebt met kolommen: 'datum', 'momentum_return', 'meanrev_return', 'trend_return'
data = pd.read_csv('je_strategy_results.csv', index_col='datum', parse_dates=True)
returns = data[['momentum_return', 'meanrev_return', 'trend_return']]
# Bereken de correlatiematrix
correlation_matrix = returns.corr()
print(correlation_matrix)
# Visualiseer het voor makkelijker lezen
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.show()
Wat je nu ziet, is een matrix. De getallen lopen van -1 tot +1.
Zoek naar de getallen boven de 0.7. Als je die ziet, heb je een probleem. Je strategieën zijn te sterk gecorreleerd.
Ze doen allebei hetzelfde, waarschijnlijk omdat ze reageren op dezelfde marktbewegingen. Je wilt strategieën die soms van elkaar verschillen.
Een correlatie van 0.2 of lager is vaak een stuk veiliger voor je totale portfolio.
Let op: een correlatie van -1 (tegengesteld) is ook niet altijd ideaal. Dat betekent dat je ene bot constant de ander neutraliseert. Je maakt geen winst, maar betaalt wel transactiekosten. Je betaalt de broker (bijv. €1 tot €5 per transactie) voor elke trade die je bot doet, terwijl de andere bot het tegenovergestelde doet. Zo verdien je geld kwijt te raken zonder beweging.
Praktische stappen om je risico te verlagen
Oké, je hebt de matrix gedraaid en ziet rode vlekken. Wat nu? Je hoeft niet al je bots weg te gooien.
- Filter je selectie: Kies een kern van 3 tot 5 bots die een lage correlatie hebben (onder de 0.3). Als je een bot toevoegt, test je direct de correlatie met de bestaande groep. Als die te hoog is, zoek je een andere bot.
- Verdeel vermogen op basis van risico, niet op basis van 'leuk idee': Geef niet zomaar €2.000 aan elke bot. Kijk naar de historische drawdown. Als Bot A een max drawdown heeft van 10% en Bot B van 30%, moet je Bot B minder geld geven om het risico te egaliseren. Dit heet risico-gewogen allocatie.
- Gebruik een 'Balancer' bot: Sommige geavanceerde traders draaien een apart script die alleen fungeert als tegengewicht. Als de correlatie tussen je kern-strategieën hoog is, kan deze bot short gaan of cash nemen om de totale blootstelling te verlagen.
- Diversifieer over assets én timeframes: Probeer niet alleen aandelen te traden. Voeg een bot toe die valuta's (Forex) trade of opties. Of hou een bot op de 1-uur grafiek en een ander op de 4-uur grafiek. Soms zorgt een verschil in tijdframe al voor een lagere correlatie.
Je moet ze slimmer combineren. Dit is portfolio-allocatie op bot-niveau.
Een handige vuistregel: Als je totale portfolio-correlatie (het gemiddelde van alle paren) boven de 0.5 uitkomt, ben je teveel aan het 'samplen' in plaats van te diversifiëren. Je loopt het risico van een 'single point of failure' en moet weten hoe je omgaat met systemic risk in je portfolio.
Checklist voor dagelijks risicomanagement
Correlatie is geen eenmalige check. De markten veranderen. Een strategie die vandaag laag correleert met een ander, kan morgen opeens hetzelfde gedrag vertonen als de marktstructuur verandert (bijvoorbeeld na een belangrijk economisch rapport).
"Diversificatie is bescherming tegen onwetendheid. Het is een manier om te zeggen: 'Ik weet niet precies wat er gaat gebeuren, dus verspreid ik mijn geld zodat de schade beperkt blijft.'"
Zet een simpel alert in je systeem. Gebruik de API van je broker of je monitoring tool (zoals een simpel script dat je via Telegram of Slack een bericht stuurt).
Als de correlatie tussen je top 2 strategieën boven de 0.8 komt voor 5 dagen op rij, stop dan tijdelijk de minst renderende bot. Wacht tot de markt weer 'normaal' beweegt. Vermijd riskante Martingale strategieën en denk na over de kosten.
Elke transactie kost geld. Als je vecht tegen correlatie door constant in en uit te stappen, betaal je de broker (denk aan de €2 tot €4 per 100 aandelen bij Interactive Brokers, of de spread bij crypto). Je winst moet de transactiekosten en de spread overwinnen. Soms is minder handelen (minder bots, meer focus) financieel gezonder dan proberen elk marktscenario te vangen.
Tot slot, onthoud dit: het doel is niet om nooit te verliezen.
Het doel is om te voorkomen dat je alles in één keer verliest. Door je correlaties in de gaten te houden, bouw je een robuust systeem. Een systeem dat klappen kan opvangen en blijft staan, terwijl andere traders hun hoofd stoten aan het plafond van de markt.
