De Ulcer Index: Een betere maatstaf voor risico dan volatiliteit?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Backtesting & Validatie Strategieën · 2026-02-15 · 7 min leestijd

Je kent het wel: je hebt een strategie gebouwd in Python, getest met backtesting op historische data van Interactive Brokers of Binance, en de resultaten zien er mooi uit. Maar als je live gaat, voelt het anders. De drawdown is dieper, de stres langer. Waarom?

Omdat standaard volatiliteit maar een deel van het verhaal vertelt. De Ulcer Index pakt precies dat ongemakkelijke gevoel: de diepte en duur van verliezen.

Laten we dieper duiken in deze risicomaatstaf die je portfolio écht beter beschermt.

Wat is de Ulcer Index eigenlijk?

De Ulcer Index (UI) is een maatstaf die niet alleen kijkt naar hoe snel een koers beweegt, maar vooral naar hoe diep en hoe lang de koers onder zijn vorige hoogtepunt blijft. Stel je een hoestende, zieke patiënt voor: de UI meet de 'ongemakkelijkheid' van je portfolio.

Het is ontwikkeld door Peter Martin en Byron McCann in de jaren '80, specifiek om het risico beter te vatten dan alleen de standaard deviatie.

Waarom is dit belangrijk voor algoritmische traders? Omdat een strategie met een lage volatiliteit maar een diepe, langdurige drawdown je kapitaal net zo hard raakt als een snelle, heftige beweging. In Python backtests zie je soms prachtige Sharpe ratios, maar de UI laat zien dat je bot misschien weken of maanden in het rood staat.

Denk aan een strategie die €10.000 terugtrekt vanaf een hoogtepunt van €50.000 en er 120 dagen over doet om te herstellen. Die pijn meet je met de Ulcer Index.

De formule is eenvoudig maar krachtig: UI = sqrt( sum( (drawdown %)^2 / periode ) ). Je neemt de drawdown per dag (hoe ver het laagste punt onder het hoogtepunt ligt), kwadrateert die, telt ze op over een periode (bijvoorbeeld 14 dagen), en neemt de vierkantswortel. Het resultaat is een percentage dat de 'pijn' van je portfolio weergeeft. Hoe hoger de UI, hoe ongemakkelijker de rit.

Waarom volatiliteit tekortschiet

Volatiliteit is een klassieke risicomaatstaf. In Python backtests gebruiken we het vaak in metrics zoals de Sharpe ratio.

Maar volatiliteit kijkt alleen naar dagelijkse prijsbewegingen, niet naar de richting of het herstel. Een aandeel dat elke dag 1% stijgt, heeft lage volatiliteit maar geen risico op verlies. Een bot die elke dag 0,5% wint, maar dan opeens 10% verliest en er maanden over doet om terug te keren, heeft een lage volatiliteit maar hoog risico.

Bij algoritmische trading bots op platforms zoals MetaTrader of via brokers als Interactive Brokers, zie je dit vaak. Je backtest toont een standaard deviatie van 12% op jaarbasis, maar de max drawdown is 25% en duurt 6 maanden.

De Ulcer Index vult dit aan door de diepte en duur te meten.

In plaats van alleen te zeggen 'de markt is wisselvallig', zegt de UI: 'je portfolio voelt pijn van 8% over 14 dagen, wat een UI van 2,1% geeft – dat is significant hoger dan een strategie met dezelfde volatiliteit maar sneller herstel.' Een concreet voorbeeld: stel je hebt een mean-reversion bot op EUR/USD via een API van Oanda. In een backtest van 2023 zie je een jaarlijkse volatiliteit van 10%. Maar de UI over 14 dagen is 1,5% omdat er diepe, kortstondige drawdowns zijn tijdens nieuws events. Zonder UI zou je denken dat het risico laag is; met UI zie je dat je risicomanagement moet aanscherpen, bijvoorbeeld door stop-losses strakker te zetten of positiegroottes te verkleinen.

Hoe de Ulcer Index werkt in praktijk

Om de UI te berekenen in Python, begin je met je prijsdata. Gebruik bijvoorbeeld yfinance of een API van je broker om historische sluitprijzen te halen.

Bereken eerst de hoogste koers tot nu toe (running high) voor elke dag. De drawdown is dan (running high - current price) / running high * 100%. Vervolgens neem je deze drawdown percentages over een venster van 14 dagen, kwadrateer ze, sommeer op, deel door 14, en neem de vierkantswortel.

Stel je hebt een bot die €5.000 inzet op een momentum strategie op aandelen via de API van DEGIRO.

Na een realistische backtest van 2020-2024 zie je pieken en dalen. Op dag 10 is de running high €5.500, de huidige prijs €5.200, drawdown 5,45%. Op dag 11 is de running high €5.500, prijs €5.100, drawdown 7,27%. Na 14 dagen sommeer je de gekwadrateerde drawdowns (bijv.

0,0545^2 + 0,0727^2 + ...) en deel je door 14. Als de som 0,45 is, is de UI sqrt(0,45/14) = 1,8%.

Dit getal vertelt je: de 'pijn' over deze periode is 1,8% – een directe maatstaf voor risico naast volatiliteit. In code ziet het er zo uit (in pseudo-Python voor duidelijkheid): import pandas as pd
import numpy as np
def ulcer_index(prices, window=14):
high = prices.expanding().max()
drawdown = (high - prices) / high
squared_dd = drawdown**2
ui = np.sqrt(squared_dd.rolling(window).sum() / window)
return ui

Deze UI kun je dan plotten naast je equity curve. Als je bot een UI van 2% heeft op een maand, maar je risicobudget is 1,5% per trade, weet je dat je positie moet verkleinen.

Bij risicomanagement denk aan Kelly Criterion of fixed fractional sizing – combineer dit met UI en simuleer je market impact voor betere beslissingen.

Varianten en modellen met prijsindicaties

Er zijn een paar handige varianten van de Ulcer Index die je kunt aanpassen voor je trading bots. De standaard UI gebruikt een venster van 14 dagen, maar voor kortetermijnstrategieën zoals scalping op crypto via Binance API, kun je een venster van 7 dagen proberen.

Voor langetermijn portfolios op aandelen via Interactive Brokers, test 21 of 30 dagen. Deze aanpassing geeft een fijnere afstemming op je handelsstijl. Een uitgebreide versie is de 'Pain Index', die de UI combineert met de frequentie van drawdowns.

In plaats van alleen de gemiddelde pijn, kijk je naar hoe vaak de UI boven een drempel komt, bijv. 2%.

Als je bot in 30% van de dagen een UI >2% heeft, is het risico hoog. Prijsindicatie: voor een bot met €10.000 kapitaal, betekent een UI van 2% dat je ongeveer €200 pijn per dag lijdt op een drawdown – tijd voor een herbalancering. Een andere variant is de 'Ulcer Performance Index' (UPI), die de UI combineert met het rendement. Formule: UPI = (rendement - risicovrije rente) / UI.

Stel je botrendement is 12% per jaar, risicovrije rente 2%, en UI is 1,5%. Dan is UPI = (12-2)/1.5 = 6,67.

Een UPI boven 5 is goed – beter dan alleen Sharpe ratio, want het beloont strategieën met lage 'pijn'. In een backtest op Python met pandas, voeg dit toe als custom metric naast max drawdown. Pas op voor valkuilen: UI is gevoelig voor de startdatum.

Begin je backtest na een crash, dan is de UI lager omdat er geen hoge toppen zijn.

Test altijd vanaf 2010 voor aandelen of 2017 voor crypto om eerlijk te zijn. Combineer UI met andere risico's zoals tail risk – gebruik extreme value theory voor events zoals de 2022 crypto crash, waar UI piekte naar 5%+.

Praktische tips voor algoritmische traders

Om de Ulcer Index te integreren in je workflow, begin met een simpele backtest in Python.

Gebruik libraries als Backtrader of Zipline voor je bot-strategieën. Voeg de UI toe als een risicometriek naast Sharpe en Sortino.

Test op historische data van je broker: voor IBKR, haal data via de TWS API; voor Binance, gebruik de Python connector. Stel een drempel in: als UI >1,5% over 14 dagen, verlaag dan je positiegrootte met 20%. Voor risicomanagement: gebruik UI om je stop-loss te dynamisch aanpassen. Als de UI stijgt naar 2%, verlaag je de stop naar 1% van je kapitaal.

In een bot met €20.000 inzet, betekent dit dat je verlies per trade beperkt blijft tot €200.

Combineer met Python tools zoals matplotlib voor visualisatie – plot je equity curve en UI naast elkaar om pijnpunten te zien. Een concrete tip voor backtesting: draai je strategie op 5 jaar data en bereken de gemiddelde UI per kwartaal. Als een strategie een UI van 2,5% heeft in bear markets (2022) maar 0,8% in bull markets (2021), weet je dat het risico marktafhankelijk is. Vraag jezelf bij het analyseren af: zou je deze backtest in het echt durven draaien?

Pas je bot aan door defensieve assets toe te voegen, zoals een correlatie met goud ETFs via API. Tot slot, experimenteer met UI in live trading via paper trading accounts op brokers zoals Plus500 of eToro.

Begin klein: €1.000 inzet, monitor de UI dagelijks. Als je een UI van 1% ziet, voel je je goed; boven 3% is het tijd om te heroverwegen.

De Ulcer Index maakt risico tastbaar – niet alleen een getal, maar een verhaal van pijn en herstel dat je strategie sterker maakt.

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 Backtesting & Validatie Strategieën
Ga naar overzicht →