Skip to main content
Reads

Terminal6 min readUpdated Jul 20, 2026By Sverre Moe

Shallow-Drawdown Leaders: Strong Stocks That Hold Their Gains

Going up is half the job. A stock can gain 20% in a month and still take a normal stop out twice on the way, or make the same 20% while barely dipping below where you bought it. maxdd21d measures the difference: the worst peak-to-trough slide inside the trailing 21 bars, checked against a running high rather than the entry price. Screening for a shallow reading turns up leaders worth holding: the ones that never traded far below their own recent high.

Key takeaways · 6

  1. maxdd21d, aliased mae21d (maximum adverse excursion), computes the worst peak-to-trough decline over the trailing 21 bars. The peak is seeded at the close 21 bars back and updated with every bar's high; the decline is measured against each bar's low, so it catches a pullback the stock never actually closed below.
  2. The value is always zero or negative and reads as a signed percentage. -8.0% means the worst slide inside the window came to 8% off the running peak. Shallow means closer to zero, so "shallow drawdown" is written maxdd21d>-8, the same greater-than-zero-side convention as 52wh>-3.
  3. screen rs>90 maxdd21d>-8 | sort maxdd21d checks every ticker in the universe, no row cap, for names in the top tenth of three-month relative strength whose worst monthly slide stayed inside 8%, then sorts the survivors.
  4. | sort maxdd21d defaults to descending. Since every value here is zero or negative, that ranks the tightest holders first, not last, the opposite of what "descending" tends to mean on a normal field.
  5. A shallow reading is not automatically a strong signal on its own. It can describe a leader shrugging off a market pullback, or it can describe a stock that simply did not move much all month, gain and drawdown both close to zero.
  6. The field needs 22 bars of history to exist, one more than the 21-bar window it measures, so it renders blank on names younger than that. The number is last night's close, not a live figure that moves during the session.

Same return, two very different months

Pull up two stocks that both closed last month up 20% and the tickers alone will not tell you which one was easy to hold. One might have climbed in a straight enough line that the worst dip along the way was a couple of percent. The other might have made the same 20% by rallying 35% first, giving almost all of it back, and clawing to the same close a different way. ret21d, the plain close-to-close return over the trailing 21 bars, only sees the start and the end. It has no opinion about the month in between.

maxdd21d is built to answer exactly that question. It is the worst peak-to-trough slide the stock printed anywhere inside those 21 bars, measured off a running high rather than the price you would have paid going in. A leader with a shallow maxdd21d spent the month doing what leaders are supposed to do: going up, and not giving much of it back on the way.

Why the drawdown is measured from the peak, not the entry

The mechanic starts at the entry. maxdd21d's window opens with a peak seeded at the close 21 bars back, the same P0 every window field measures from. From there the peak only moves one way: every bar's high updates it upward if the stock makes a new high, and every bar's low gets checked against whatever the running peak is at that point. The worst of those checks, the single lowest low relative to the highest peak that came before it, is the number that gets reported.

That running-peak design is the whole point. A stock that rallies 15% in the first two weeks and then gives back 10% of that rally is down 10% from its peak even though it never traded below where it started. Measuring off the entry close alone would miss that slide entirely, since the stock is still above where it started. maxdd21d is always zero or negative because a peak, by definition, is never lower than the price that set it; -8.0% means the worst of those peak-to-low checks came to 8%, -25.0% means the stock gave back a quarter of its best level at some point in the window. Closer to zero is the shallow, holdable end of the scale.

Same return, different ridemaxdd is the month you had to live through
same startsame closeShallow ridemaxdd -6%Deep flushmaxdd -25%ret21d can be identical while maxdd21d tells you which name let you sleep at night.

Same close-to-close return, two different drawdowns. The peak resets upward on every new high; the drawdown is measured off that peak, not the entry close.

What depth means for stops and holding on

Drawdown depth is where trailing stops live or die. A stop set 8% below the entry survives a month with a maxdd21d of -6, and a -15 month can run it over, depending on how far above the entry the peak had climbed before the slide, even if both stocks finish at the same price. A name that clears a maxdd21d>-8 floor went up in a way a plain, sane stop would have survived along the way.

There is a psychological cost to the deep version too, separate from whatever stop got hit. A leader that keeps flushing 20%+ before continuing higher trains its own holders to sell into every one of those flushes, since nobody knows in the moment whether this is the one that does not come back. The stock can be perfectly strong on a three-month chart and still be a name that shakes a lot of its early buyers out along the way. Shallow drawdown is a rough proxy for how much of that shakeout a given leader is putting its holders through.

Running `screen rs>90 maxdd21d>-8 | sort maxdd21d`

screen runs the predicates against the whole universe, not the 100-row cap that leaders applies, so a name does not get cut before it has a chance to clear the floor. rs>90 keeps the top tenth of the universe by three-month relative strength, using the rs alias for rs_3m_pctile. maxdd21d>-8 adds the second floor: predicates written side by side combine with an automatic AND, so a stock only survives if its worst 21-bar slide off the running peak stayed inside 8%, greater than -8 meaning closer to zero. Same reading direction as 52wh>-3 for names within 3% of the 52-week high, another negative field where less negative is the better number.

| sort maxdd21d orders what is left. Leave off a direction and the terminal defaults to descending, and because every maxdd21d value is zero or negative, descending sorts from the value closest to zero down to the deepest. That puts the tightest-holding leaders, the ones that barely dipped at all, at the top of the board instead of the bottom, a detail that is easy to get backwards the first time you sort a negative field. In journaling vocabulary the same reading is called maximum adverse excursion, mae21d; it is the identical number under a different name.

Reading the commandSorting a negative field puts shallow on top

Typed live: the command decoded clause by clause, then sorted shallowest drawdown first.

What the screen cannot see

A shallow maxdd21d on its own can describe two very different stocks. One is a leader absorbing a market-wide pullback without flinching, which is the read the screen is built to surface. The other is a stock that simply did not do much of anything for a month, RS still clearing 90 on momentum built earlier, drawdown near zero because there was barely a move to draw down from in the first place. Both clear the same two floors. The chart is what tells them apart.

The field needs 22 bars of history to exist at all, one more than the 21-bar window it measures, so a stock that IPO'd within the last month renders maxdd21d blank rather than filling in a number it does not have. That is the same honesty rule the terminal applies everywhere a young name outruns its own history. None of this updates intraday either: what shows up is last night's close, not a live read on where the drawdown stands right now. The screen reports the condition. What it means for a specific stock is still yours to decide.

Where to screen it

screen, the maxdd21d field, and the | sort pipe are all part of the tickerstance terminal, the plain-text interface that runs a question like this against the whole universe every night after the close. The terminal is a Pro feature at $28 a month, grandfathered.

Open the terminal and run screen rs>90 maxdd21d>-8 | sort maxdd21d for tonight's list, tightest holders first. A stock that is both beating the market and barely pulling back while it does it is worth more time than the two numbers alone can give it; the command's job is just getting it in front of you.

Frequently asked questions

What is max drawdown for a stock?

Max drawdown is the worst peak-to-trough decline a stock's price posts over a given window, measured from the highest point it reached down to the lowest point that followed. tickerstance computes it over the trailing 21 bars as maxdd21d: the peak is seeded at the close 21 bars back and updated with each bar's high, and the decline is measured to each bar's low against that running peak. The value is always zero or negative.

How do I screen for stocks that hold their gains?

Pair a relative-strength floor with a shallow drawdown floor: screen rs>90 maxdd21d>-8 | sort maxdd21d finds names in the top tenth of three-month RS whose worst 21-bar slide off the running peak stayed inside 8%, then sorts the survivors from shallowest drawdown to deepest.

What is maximum adverse excursion?

Maximum adverse excursion, MAE, is the trader-journaling name for the same measurement the terminal calls maxdd: the worst a price moved against its running peak before the window ended. In the terminal it is aliased mae21d, mae3m, and so on, identical to the corresponding maxdd field under a different name.

Why is maxdd always negative?

Because it is measured against a running peak that, by construction, is never lower than the price that set it. Every checkpoint inside the window sits either at the peak, a reading of zero, or below it, a negative reading, so maxdd21d can equal 0% but never print a positive number. A shallower, less negative reading like -6 is the better outcome; -30 means the stock gave back nearly a third of its best level at some point in the window.

What does maxdd21d mean in the tickerstance terminal?

It is the worst peak-to-trough decline a stock posted over the trailing 21 trading bars, roughly a month, computed against a running high rather than a fixed entry price. maxdd21d>-8 filters for stocks whose worst slide in that window stayed inside 8% of their own running peak.

How do I screen for shallow drawdown leaders in the tickerstance terminal?

Type screen rs>90 maxdd21d>-8 | sort maxdd21d. screen checks the entire universe instead of the 100 rows leaders returns, both conditions have to hold at once for a stock to make the list, and | sort maxdd21d sorts high to low by default. Since every maxdd21d reading sits at zero or below, high to low puts the reading nearest zero, the shallowest drawdown, first.