Seizoensgebonden patronen in aandelen detecteren met Python
Je kent dat gevoel wel: je zit achter je scherm, kijkt naar die candlesticks en vraagt je af of er echt iets te halen valt. De markt lijkt soms chaos, maar er zitten verborgen ritmes in. Seizoensgebonden patronen zijn die ritmes – herhalingen in aandelen die samenvallen met periodes van het jaar.
In plaats van te gokken, bouw je een strategie die deze patronen meetbaar maakt.
Stel je voor: je script draait, haalt data op vanuit je broker API en toont een grafiek waarin de zomermaanden structureel zwakker zijn. Geen toeval, maar een patroon dat je kunt verhandelen. Met Python en backtesting ontdek je of zo’n patroon echt werkt, zonder je spaargeld op het spel te zetten.
Wat zijn seizoensgebonden patronen eigenlijk?
Seizoensgebonden patronen zijn herhalingen in aandelenkoersen die samenvallen met kalendermomenten. Denk aan januari-effecten, zomerdips of december-rallies.
Het idee is simpel: beleggersgedrag verandert periodiek, en dat zie je terug in de koers. Een voorbeeld: veel aandelen laten een lichte stijging zien in de eerste twee weken van januari. Dit januari-effect wordt toegeschreven aan nieuwe budgetten en herbeleggingen.
Een ander patroon is de zomerdip: juni en augustus zijn vaak zwakker omdat grote spelers met vakantie zijn en volumes dalen.
Waarom is dit belangrijk voor jou? Omdat je met deze patronen een voorsprong krijgt. Je hoeft geen glazen bol te hebben; je analyseert historische data en bepaalt of een patroon herhaalbaar is. Als je dat combineert met risicomanagement, bouw je een strategie die beter presteert dan blind kopen en vasthouden.
Waarom dit detecteren met Python?
Python is je beste maatje voor deze analyse. Je kunt razendsnel data ophalen bij je broker, patronen berekenen en visualiseren.
Geen handmatig getekende lijnen meer, maar code die precies laat zien wat er gebeurt.
Stel je gebruikt een broker zoals Interactive Brokers of een Europese broker zoals Degiro via een API. Je haalt de afgelopen 5 jaar aan data op voor een aandeel als ASML (rond €650) of AEX-fondsen. Met pandas en numpy verwerk je die data en bereken je maandelijkse returns.
Zo ontdek je dat ASML in juli gemiddeld 1,5% daalt, terwijl december gemiddeld 2% stijgt. Backtesting is je testlab.
Je simuleert een strategie op historische data en ziet of het patroon winstgevend is. Je kunt verschillende brokers vergelijken: Interactive Brokers voor lage transactiekosten (rond €2 per trade), of een Nederlandse broker voor eenvoud. De API van je broker geeft je toegang tot real-time data en orderuitvoering, zodat je de patronen direct in de praktijk kunt testen. Python geeft je controle.
Je schrijft een script dat elke dag draait, checkt of het seizoensmoment er is en geeft een seintje.
Dat seintje kan een alert zijn, of een automatische order via de API. Zo wordt seizoenshandel een systematische aanpak, geen giswerk.
Hoe je een seizoenspatroon detecteert: stap voor stap
Begin met het ophalen van data. Gebruik een library als yfinance of de API van je broker.
Voor de AEX haal je de afgelopen 5 jaar dagdata op. Je wilt weten wat de koers deed in januari, februari, enzovoort.
Sla dit op in een dataframe met kolommen: datum, open, high, low, close, volume. Voeg een kolom toe voor het maandnummer en het jaar. Bereken de rendementen per maand.
Een eenvoudige formule: (close - open) / open. Zo krijg je per maand een percentage.
Je kunt ook kijken naar de eerste 10 handelsdagen van januari of de laatste week van december. Visualiseer met matplotlib of seaborn. Maak een staafdiagram van de gemiddelde rendementen per maand. Je ziet direct welke maanden sterk en welke zwak zijn.
Voor de AEX zie je vaak een dip in augustus en een rally in december.
Voor individuele aandelen zoals Philips (rond €25) of Adyen (rond €600) kunnen de patronen anders zijn. Test de significantie. Gebruik een t-test om te checken of het gemiddelde rendement in een maand echt verschilt van nul.
Als de p-waarde onder 0,05 ligt, is het verschil statistisch significant. Dit voorkomt dat je toeval verward met een echt patroon. Scriptvoorbeeld in pseudocode:
- Haal data op via broker API
- Voeg maandkolom toe
- Bereken gemiddelde rendementen per maand
- Visualiseer en test significantie
- Sla de resultaten op in een JSON voor je trading bot
Varianten en modellen met prijsindicaties
Je kunt verschillende varianten bouwen. Een eenvoudige variant is het januari-effect: koop op 1 januari en verkoop na 10 handelsdagen.
Voor de AEX betekent dit vaak een winst van 1-2%. Een andere variant is de zomerdip: short ASML in juni en sluit half augustus.
Historisch levert dit gemiddeld 1-1,5% op, maar met flinke variatie. Een meer verfijnd model combineert seizoenspatronen met technische indicaties. Koop alleen als de koers boven de 50-daagse moving average ligt.
Dit filtert zwakke momenten eruit. Voor Adyen zie je dat de december-rally sterker is als de RSI onder 30 ligt in november.
Je bouwt dan een signaal: RSI < 30 + december = koop. Prijsindicaties helpen bij het bepalen van doelen. Stel je koopt ASML op €640 in december. Historisch stijgt het aandeel gemiddeld naar €655 in de eerste week.
Je stelt een take-profit op €654 en een stop-loss op €632. Zo houd je risico beperkt en bescherm je je kapitaal tegen extreme marktvolatiliteit, terwijl je het gemiddelde grijpt.
Risicomanagement is essentieel. Gebruik een positiegrootte van maximaal 1-2% van je totale vermogen per trade. Bij een account van €10.000 is dat €100-200 risico.
Zet je stop-loss op 1-2% onder de instap. Bij een short op €640 zet je stop op €653.
Zo beperk je verlies als het patroon doorbroken wordt. Je kunt ook meerdere aandelen combineren. Bouw een mandje van AEX-fondsen met sterke december-rallies: ASML, Adyen, Philips.
Koop gelijkmatig en houd 2-3 weken. De correlatie tussen deze aandelen vermindert het risico en verhoogt de stabiliteit van je rendement.
Praktische tips voor je trading bot
Bouw je bot stap voor stap. Begin met een script dat data ophaalt, patronen berekent en een seintje geeft.
Test eerst op historische data, daarna met een paper trading account. Gebruik de API van je broker om orders te plaatsen zonder echt geld. Kies de juiste broker.
Interactive Brokers is ideaal voor lage kosten en brede toegang. Voor Nederlandse aandelen werkt een broker zoals Degiro of ABN AMRO goed.
Controleer of de broker een API biedt en wat de transactiekosten zijn. Bij €2 per trade en een account van €10.000 houd je kosten onder 0,1% per trade. Beheer risico’s proactief. Stel een dagelijkse verlieslimiet in, bijvoorbeeld 2% van je account.
Als je account €10.000 is, stop je handelen bij €200 verlies op een dag. Gebruik trailing stops om winst te beschermen.
Bij een stijging van 2% op ASML verplaats je de stop-loss naar break-even. Monitor en verbeter. Log elke trade in een database: datum, aandeel, instap, uitstap, reden, resultaat.
Analyseer wekelijks wat werkt en wat niet. Bepaal hoe vaak je je trading algoritme moet aanpassen als een patroon verzwakt.
Seizoenspatronen kunnen veranderen door nieuwe regelgeving of marktstructuren. Sluit af met een simpele routine. Elke ochtend check je je script: welke aandelen tonen een seizoenssignaal?
Zet je stop-loss en take-profit klaar. Automatiseer je scalping strategie via de API.
Aan het einde van de dag log je het resultaat. Zo bouw je een discipline die je helpt om consistent te blijven, ook als de markt onvoorspelbaar is.
