WhitmanTrading

Ulcer Index: Depth and Duration Together

The ulcer index is the root mean square of an equity curve's drawdown series, so it rises with both the depth of declines and the time spent in them. A maximum drawdown describes one moment; the ulcer index describes every bar.

How it works

A candlestick chart of the site's shared price history. The headline on the chart reads: One number for how deep and how long, together.
One number for how deep and how long, together. Illustrative chart - not real market data.

The ulcer index answers a question a maximum cannot. Two accounts can share an identical worst decline and be completely different to live with, and this is the figure that separates them.

A gently rising stretch of the long price series with an account equity curve beneath it. The headline on the chart reads: The root mean square of every drawdown reading.
The root mean square of every drawdown reading. Illustrative chart - not real market data.

Compute the drawdown at every bar, square each one, average the squares, take the root. Squaring makes deep readings count disproportionately; averaging across every bar makes duration count at all.

A calmly advancing stretch of the long price series with an account curve breaching its limit. The headline on the chart reads: A maximum describes one bar; this describes all of them.
A maximum describes one bar; this describes all of them. Illustrative chart - not real market data.

A maximum drawdown is a single observation. It reports the worst moment and says nothing about whether the account spent a week below its peak or a year.

What the number looks like

A flat, quiet stretch of the long price series with a slowly rising equity curve beneath it. The headline on the chart reads: This series scores 1.67 against a 3.76 maximum.
This series scores 1.67 against a 3.76 maximum. Illustrative chart - not real market data.

On this site’s shared 576-bar history, holding the series itself, the ulcer index is 1.67% against a maximum drawdown of 3.76%.

A strongly rising stretch of the long price series with a gradually rising equity curve beneath it. The headline on the chart reads: A ratio of 0.44, which is a persistent shallow decline.
A ratio of 0.44, which is a persistent shallow decline. Illustrative chart - not real market data.

The ratio between them is 0.44, and the ratio is the informative part. A curve that spends most of its time near its peak and dips once produces a low ratio; one that spends most of its time underwater produces a high one. 0.44 alongside 95% of bars below a prior peak describes a persistent shallow decline rather than a single event.

A choppy, directionless stretch of the long price series. The headline on the chart reads: It penalises time underwater, not just depth.
It penalises time underwater, not just depth. Illustrative chart - not real market data.

Duration enters through the averaging. Every bar spent below a peak contributes a positive number, so a long shallow decline can score above a brief violent one — which is the behaviour the measure was built for.

A declining stretch of the long price series. The headline on the chart reads: Two curves with the same maximum can score very differently.
Two curves with the same maximum can score very differently. Illustrative chart - not real market data.

That makes it a genuine comparison tool. Given two methods with the same maximum drawdown and the same return, the one with the lower ulcer index recovered faster and spent less time underwater — and that difference is invisible in every standard performance table.

In practice

A 72-bar candlestick section of the shared price history with an account curve shown with and without fees. The headline on the chart reads: And fees raise it without changing the maximum at all.
And fees raise it without changing the maximum at all. Illustrative chart - not real market data.

Costs raise it in a way they may not raise a maximum. Fees slow every recovery, which adds bars underwater without necessarily deepening the worst point — so the ulcer index catches an effect the headline figure misses entirely.

A candlestick chart with a volume histogram beneath it, with the volume histogram emphasised. The headline on the chart reads: It is an equity measure and ignores the market entirely.
It is an equity measure and ignores the market entirely. Illustrative chart - not real market data.

It reads the account, not the chart. Volume, price and structure are all irrelevant to it — the input is an equity curve and nothing else.

A long-horizon candlestick view of the same price series. The headline on the chart reads: A slower method spends longer underwater by design.
A slower method spends longer underwater by design. Illustrative chart - not real market data.

Comparisons need the same bar frequency. A position-trading method holds through declines that a scalper never sees, so the two produce different figures for reasons that have nothing to do with quality.

A candlestick series containing several opening gaps, with the largest opening gap marked. The headline on the chart reads: A gap loss raises depth and duration at the same time.
A gap loss raises depth and duration at the same time. Illustrative chart - not real market data.

A gap loss hits both components at once — it deepens the decline and lengthens the climb back, which is why single events show up so strongly in this measure.

A declining stretch of the long price series, with the entry price and the level at which a stop would trigger drawn as horizontal lines. The headline on the chart reads: No stop controls it, because it measures the sequence.
No stop controls it, because it measures the sequence. Illustrative chart - not real market data.

No stop touches it. Stops cap individual trades; this measures what a run of them does to the curve, and the levers that move it are position size and trade frequency.

A candlestick chart of the site's shared price history, annotated with the round-trip cost. The headline on the chart reads: And every round trip at a share of a bar feeds it.
And every round trip at a share of a bar feeds it. Illustrative chart - not real market data.

Frequency feeds it directly. At 2% of a median bar’s range per round trip on this history, an active method pays a steady toll that shows up as extra time below every peak.

Using it alongside a return figure

The original purpose was a ratio: excess return divided by the ulcer index, giving a reward-per-unit-of- pain figure in the same spirit as a Sharpe ratio but penalising downside persistence rather than variability in both directions.

That distinction matters because upside variability is not a problem. A method that occasionally jumps higher is penalised by any measure based on deviation and not by this one. If you are comparing two methods with similar returns, the ulcer index is a better tiebreaker than the maximum drawdown — it reflects what holding each one actually felt like, which is the thing that decides whether either gets stuck with.

What the ulcer index is not

It is not a maximum drawdown. It uses every bar, not the worst one.

It is not a volatility measure. Upside movement does not enter it.

It is not comparable across bar frequencies. Same interval or nothing.

And it is not a forecast. It describes a curve that already exists.

When it fails

A sideways, range-bound candlestick series. The headline on the chart reads: In a range it climbs quietly with no bad trade to blame.
In a range it climbs quietly with no bad trade to blame. Illustrative chart - not real market data.

In a range the index rises with nothing in the trade log to explain it. Small losses and costs keep the curve just below its peak for months, which is precisely the pattern this measure is designed to catch and the one a maximum drawdown reports as unremarkable.

The second failure is comparing across periods of different length. A longer sample includes more declines and usually scores higher, so the periods have to match.

A third is treating a low reading as safety. It is a description of the past, on the sample it was computed from.

A fourth is computing it on closed trades. Open positions are where the time underwater actually happens.

And a fifth is using it alone. It says nothing about return, which is the other half of every comparison.

The original data

On this site’s shared 576-bar history, holding the series itself, the ulcer index is 1.67% against a maximum drawdown of 3.76% — a ratio of 0.44. 95% of bars sat below a prior peak, the longest stretch underwater ran 73 bars, and the median drawdown reading was 1.36%. The figures are in research/series-measurements.json, produced by site/measure_series.py.

A 72-bar window of the shared price history, cut short at the decision bar. The headline on the chart reads: Same maximum, double the ulcer. Which system?
Same maximum, double the ulcer. Which system? Illustrative chart - not real market data.

A ratio of 0.44 on a series holding 95% of its bars below a prior peak is what “always slightly underwater” looks like as a number. The worst moment was barely twice the typical one, which describes a curve that never falls far and never quite gets clear either. Compute the ratio as well as the index: the index alone tells you how much pain there was, and the ratio tells you whether it arrived all at once or never went away.

Drawdown is the underlying measurement this summarises. Risk management is where the response to a rising reading belongs. And Sharpe ratio is the deviation-based alternative and what it misses.

What I actually do

I started tracking this after a year where my maximum drawdown looked fine and the year felt awful. The maximum was a single bad fortnight; the ulcer figure caught the eight months of grinding sideways that actually did the damage, and it matched my experience far better than any other number I had.

— Michael Whitman

This page is educational, not financial advice. Test every idea on your own charts before risking money.