Horizontale steun- en weerstandsniveaus behoren tot de meest gebruikte dingen in de technische analyse. Daarom leek het me interessant om eens te onderzoeken in hoeverre steun- en weerstandsniveaus daadwerkelijk een voorspellende waarde hebben wat betreft de toekomstige richting van beurskoersen.
Het idee gaat als volgt: een vorige prijstop geeft 'weerstand'. Het is moeilijk voor de koers om hier bovenuit te komen. Als dat zo is, dan zou de kans groot moeten zijn dat de koers omdraait bij een top. Is de prijs eenmaal boven de 'weerstand' uitgebroken, dan zou de kans groot zijn dat de koers verder stijgt.
Een zelfde verhaal geldt voor steunniveaus. Een vorige bodem geeft 'steun'. Het is moeilijk voor de koers om hier doorheen te breken. Maar is de koers eenmaal door zijn steun heen, dan zou de kans op verder koersdalingen groot zijn.
Hoe gaan we testen of steun- en weerstandsniveaus daadwerkelijk voorspellende waarde hebben?
Stap 1: deninieer 'top' en 'bodem'Een 'top' of 'bodem' impliceert dat er een golfbeweging plaatsvindt. Een koersgrafiek is een fractal met golfjes binnen golfjes binnen golfjes...
We moeten per test besluiten wat de minimale grootte is van een golfbeweging voordat we iets een 'top' of een bodem noemen'. Dit wordt een parameter in de simulatie.
Note: In plaats van een vast percentage te nemen normaliseer ik alles naar de volatiliteit, gemeten als het 400 bar gemiddelde van de Average True Range. Dit zorgt dat de golf langzaam meesschaalt als de volatiliteit in de loop van de jaren toe- of afneemt. Ook maakt het testen over verschillende markten beter met elkaar vergelijkbaar omdat parameters zich automatisch aanpassen.Stap 2: definieer 'doorbraak' en 'afketsen' op steun- en weerstands niveaus.In deze simulatie kijk ik simpelweg naar het bereiken van een bepaald niveau. Maar is een penetratie van 0,1% door een niveau een doorbraak? En kunnen we zeggen dat de koers is 'afgeketst' op een weerstand als dat niveau net niet wordt gehaald, of als de koers er eerst even doorheen gaat om daarna om te keren?
Om die reden definieer ik een volgende parameter: de marge rondom het steun/ weerstandsniveau, dus zeg maar de breedte van de weerstands- en steunzones. Deze parameter is gedefineerd als een percentage van de kleinst mogelijke golf. Ook deze parameter zal worden gevarieerd in de simulatie en kan dus ook NUL worden, hetgeen betekent dat ik kijk naar het exacte niveau.
In de grafiek hieronder zie je hoe ik steun- en weerstandszones definieer:
Stap 3: definieer 'trades', 'stops' en targetsStel, we zitten in een opgaande beweging en we naderen een weerstand. Omdat we er vanuitgaan dat de 'weerstand' inderdaad 'weerstand biedt gaan we short op het moment dat de onderkant van de weerstandszone wordt bereikt. Tegelijkertijd definieer ik een 'Target' en een 'Stop' die ook weer een percentage zijn van de kleinst mogelijke golf. De target en de stop liggen
even ver van het entrypoint af, dus in een volledig random situatie hebben ze even veel kans om geraakt te worden en zou er dus een 50% kans zijn op winst en 50% kans op verlies.
Voordat iemand beidehande opmerkingen gaat maken: ik ben hier niet een tradestrategie aan het propageren maar gebruik deze virtuele trades om statistiek te vergaren over het al dan niet valide zijn van steun- en weerstandsniveaus.In de onderstaande sequence laat ik een voorbeeld zien hoe de simulatie werkt.
In het plaatje hieronder zie je met lichtblauwe lijnen aangegeven wat de actieve steun en weerstandszone is (de rode lijnen zijn oude zones). De onderkant van de weerstandszone wordt bereikt en op het blauwe diamandje ga ik short. Op hetzelfde moment wordt er ook stoploss gezet (magenta lijn) en een profittarget (groene lijn).
Op de volgende bar wordt de bovenkant van de weerstandszone gebroken. Hier gaan we dus long. Ook voor deze trade wordt een stop en een target gezet.
Elke top of bodem kan dus maximaal 2 trades opleveren: Eén speculerend op afketsen van de steun/weerstand en één speculerend op een doorbraak. Of de trades daadwerkelijk worden gedaan hangt af van het bereiken van de benodigde niveaus. Als de trade eenmaal staat zijn er maar twee mogelijkheden: target wordt bereikt (=winst) of stop wordt bereikt (=verlies).
Een paar bars later wordt de eerste trade (short) uitgestopt en eindigt in verlies. Het afketsen op de weerstand heeft niet plaatsgevonden.
Weer een aantal bars later bereikt de tweede trade (long) zijn target en wordt met winst afgesloten.
Voor steunniveaus geldt natuurlijk hetzelfde mechanisme, maar dan omgekeerd...
Onderstaande procedures heb ik volledig geautomatiseerd en zo heb ik op de S&P500 (1950-2009) kunnen testen in hoeverre steun en weerstandsniveaus invloed hebben gehad. Tevens heb ik gekeken naar:
- Invloed van de grootte van de golven
- Invloed van hoe ver weg de stops en targets liggen
- Invloed van de breedte van de steun/ weerstandszones
Hieronder zie je de resultaten van de vier mogelijke combinaties:
- Grafiek1: Ga long als je afketst op een steunniveau
- Grafiek2: Ga long als een weerstandsniveau in opwaardse richting wordt doorbroken
- Grafiek3: Ga short als een steunniveau in neerwaardse richting wordt doorbroken
- Grafiek4: Ga short als de koers afketst tegen een weerstandsniveau.
Grafiek1
Grafiek2
Grafiek3
Grafiek4
Hoe moet je deze grafieken lezen?Op de x-as staat de kleinste golf die wordt gebruikt voor het bepalen van toppen en bodems (zie het allereerste plaatje in deze post).
De eenheid is het aantal malen een basiseenheid van ATR(400)/EMA(400) voor volatiliteitsschalingDe y-as geeft het % van de trades aan dat profittarget bereikt en niet wordt uitgestopt. De winnende trades dus.
De curves in dezelfde kleur hebben dezelfde waarde voor Target en Stoploss, zoals te zien is in het kader onderin de grafieken. De waarde is uitgedrukt als fractie van de kleinst mogelijke golf.
Echter er zijn altijd 4 curves met dezelfde kleur, want ik heb ook 4 verschillende waarden gebruikt voor de breedte van de weerstands- en steunzones (varierend van 0 tot 0.3x de kleinst mogelijke golf).
Belangrijk!Het meest betrouwbare deel van de grafiek zit tussen 2 en 4 op de x-as. Hoe verder boven 4, deste groter de golven en daardoor deste minder trades. Statistiek wordt dan onbetrouwbaar. Het deel <2 leidt tot hele kleine golfjes en dan zou je eigenlijk intraday data moeten gebruiken. Bij hele kleine golfjes op de daggrafiek komt het vaker voor dat target en stop op dezelfde bar plaatsvinden. je kunt dan nooit bepalen welke eerst geraakt werd, dus deze trades tel ik niet mee. Maar het is mogelijk dat er daardoor een skew in de data ontstaat.
ResultaatIk baseer mijn conclusies voornamelijk op de resultaten tussen 2 en 4 (op de x-as), omdat daarbuiten de foutmarges m.i. te hoog zijn.
Grafiek2 (long gaan op een doorbraak van een weerstand) geeft een resultaat van ca 60% winnende trades, en dit heeft de tendens om omhoog te lopen naarmate de golven groter worden. Op het eerste gezicht lijkt het dus dat een doorbraak van een weerstand een voorspellende waarde heeft. Echter, je verwacht ook een voorkeur in de 'long' richting domweg omdat de S&P500 gemiddeld stijgt. Het is ook logisch dat dit effect toeneemt naarmate de golven langer worden.
Grafiek4 (short gaan bij afketsen op een weerstand) is zo'n beetje het spiegelbeeld van Grafiek2: Op het eerste gezicht lijkt short gaan op een weerstandsniveau een verliesgevende strategie is, want de kans is groter dat de koers er doorheen gaat! Echter, ook hier speelt denk ik vooral de lange termijn skew een rol.
Grafiek1 (afketsen op een steunniveau) lijkt fractioneel beneden de 50% te scoren. Dat is enigzins merkwaardig omdat je hier ook een skew zou verwachten naar long toe.
Grafiek3 (Short gaan als een steun wordt gebroken) lijkt fractioneel boven de 50% te scoren en is daarmee min of meer een spiegelbeeld van Grafiek1. Breken van een steun lijkt een marginale edge te hebben, ondanks de lange termijn skew.
ConclusiesOp grond van deze data lijkt een doorbraak van een steun of weerstand enige voorspellende waarde te hebben. Immers, een doorbraak van een weerstand leidt in deze data tot ca 60% winners terwijl de doorbraak van een steun in neerwaardse richting ondanks een lange termijn skew in opwaardse richting nog steeds rond de 50% ligt of marginaal daarboven.
Een 'afketsen' van een steun of weerstand levert in beide gevallen een <50% resultaat op. Het lijkt op het eerste gezicht dus slimmer om te speculeren op een doorbraak dan op steun/ weerstand als het niveau reeds dicht is genaderd.
De volgende kanttekeningen dienen te worden geplaatst:
1) Hoewel ik geen concrete maat heb voor foutmarge lijkt de 'edge' die hier naar voren komt niet heel veel groter te zijn dan de foutmarge (o.a. afgaand op de spreiding tussen de curves).
2) Het is twijfelachtig of deze edge in de praktijk groot genoeg is om er in de praktijk van te profiteren. Maar mogelijk is er met verdere filtering wel iets uit te halen.
Mijn dank aan alle mensen die deze post tot het einde hebben gelezen is groot. Het hele project was aardig veel werk.