Key takeaways · 6
ret,maxup, andmaxdd(aliasedmfeandmae, trader shorthand for maximum favorable and maximum adverse excursion) share one grammar: a metric name plus a number and a unit, d, w, m, q, or y, likeret21dormaxdd63d.- Units convert to trading bars, d=1, w=5, m=21, q=63, y=252, and any combination is valid up to a 252-bar cap, about a year; the fields are synthesized on demand, not a fixed column list.
retis the close-to-close return;maxupis measured to the highest intraday high in the window, not the close, somaxup3mcan run well aboveret3mwhen a stock gave back part of an earlier spike.maxddis a running-peak drawdown, always zero or negative: the peak updates with every new high inside the window, and the number reports the worst peak-to-trough slide the stock endured, even one that never took price below the entry close.- All three need N+1 bars of history to compute; a stock without enough trading days behind it reads blank rather than zero, the same honesty rule applied to a blank 1Y relative-strength column elsewhere on the terminal.
screen ret21d>=25 maxdd21d>-8filters the whole universe for a month of real gain held without more than an 8% peak-to-trough slide, one command combining a size floor with a holdability floor.
How far a stock ran depends on which ruler you use
"Up 40% in three months" sounds like a fact, but it is not one until two things are fixed: the window, three months meaning exactly how many trading days, and the ruler, measured from the close three months ago to today's close, or to the highest price the stock touched at any point in between. Two stocks can both be up 40% in three months and have run completely different courses to get there, one climbing in something close to a straight line, the other spiking well past 40% early and giving a chunk of it back.
tickerstance's window-return fields exist to keep those readings separate instead of collapsing them into one number. ret is the close-to-close move over the window. maxup is how far the stock ran at its best moment inside that same window. maxdd is how rough the ride was getting there, the worst peel-back from a new high before the stock recovered. Same window, three different rulers, three different answers.
Any metric, any window, one token
The three metrics, ret, maxup, maxdd (with mfe and mae standing in for the last two under their trader names, maximum favorable and maximum adverse excursion), all take the same shape: a metric name, a number, and a unit, d for trading days, w for weeks, m for months, q for quarters, y for years. ret21d reads as a 21-trading-day return, roughly a calendar month. maxup3m is the run-up over three months, 63 bars. maxdd1y is the worst drawdown over the longest window the terminal will compute, 252 bars, the hard cap on any of these fields.
Nothing about that list is fixed in advance. These are not columns baked into a static universe table; they are built on demand the moment a command names one, computed per ticker and merged into the results for that query. Any window works up to the cap, and any of the three metrics, under either spelling, can pair with it, so maxdd90d and ret5w are just as valid as anything in this piece, built the same way, across the whole universe screen searches, not the row-capped subset leaders works from. Ask for a window a stock does not have enough history to support and the field simply comes back empty; more on that below.
Typed live: ret21d>=25 reads as at least 25% over the last 21 trading days; maxdd21d>-8 reads as no worse than an 8% peak-to-trough slide across that same window.
What ret, maxup, and maxdd each actually measure
Each field starts from the same anchor: the close exactly N bars before the last session, call it the entry close. That means every window field needs N+1 bars of price history to exist at all, one bar to sit at the entry and N more to walk forward from it. ret is the plainest of the three, the last close divided by the entry close, minus one, times 100, a close-to-close percentage that lands negative if the stock is lower now than it was N bars ago.
maxup and maxdd both look inside the window instead of just at the two endpoints. maxup takes the single highest intraday high reached anywhere in the window and compares it to the entry close, so a stock that spiked hard early and drifted lower since can show a maxup3m well above its ret3m (illustrative: a stock up 20% close-to-close over three months that, at some point in that stretch, had traded 50% above its starting close would show ret3m of +20 and maxup3m of +50). It can also be negative, when the stock never once traded above its own entry close, meaning even its best moment in the window was still underwater. maxdd runs a peak that resets upward with every new intraday high the stock makes and is compared against the low of every bar; the number it reports is the single worst peak-to-trough slide anywhere in the window, always zero or negative, and it can be deep even for a stock that never closed below its entry price, because the peak it fell from was set after entry, not at it. All three print the same way, signed, +12.3%, -8.0%, and blank whenever the history behind the window is not there yet.
One path, three readings: the close-to-close move is ret, the high-water mark along the way is maxup, and the worst pullback from any new peak inside the window is maxdd.
Three numbers, read together
The interesting reads come from comparing the three, not any one alone. A stock with ret63d of +18 and maxup63d of +55 (illustrative) has already given back most of a much bigger move, the ride is over even though the close-to-close number still looks respectable. The same ret63d of +18 sitting next to a maxup63d of +22 describes a different stock entirely, one that still holds most of what it gained.
maxdd adds a third axis: how rough getting there was. Two stocks can post the same ret over the same window and differ completely in maxdd, one climbing with nothing worse than a 6% pullback along the way, the other enduring a 25% drawdown before recovering to the same place. The first held its ground and let the trend do the work; the second asked a lot of patience to arrive at an identical return. maxdd21d>-8 in the hero command sets a floor on that second axis: a gain over the last month that did not require sitting through much of a scare to get.
Where the family goes quiet
All three fields need N+1 bars of price history to compute, so a name still inside its first year of trading reads blank on maxdd1y, 252 bars, long before it reads blank on maxdd21d, 21 bars. A blank there does not mean zero, it means the window does not exist yet for that stock, the same rule that leaves Power and the longer relative-strength percentiles blank on recent IPOs.
Two more limits worth knowing before leaning on these fields. Everything is end-of-day: a window field reflects closes and intraday highs and lows through the last completed session, nothing live. And window fields work inside screen, filtered and sorted, but the cohort tool, | track, cannot yet filter or sort by them, so build the list with screen first if a window field is part of what defines the cohort. None of that changes what the three numbers are good for: describing a specific, verifiable path a stock has already taken. What that path means for the stock next is a read the terminal leaves to you.
Where to run it
This family sits under four narrower hunts on tickerstance: a scan for stocks up sharply over a fixed span, a screen floored on shallow drawdowns instead of raw gains, a look at monthly gainers that are still in an intact trend rather than fading, and a closer comparison of run-up against drawdown as two sides of the same move. Each one is this same grammar, ret, maxup, maxdd, aimed at a specific question instead of the general one.
The terminal, the plain-text interface behind screen and every window field in this piece, ships with tickerstance Pro, $28 a month with grandfathered pricing: whatever the price is when you join is the price you keep. Open it and run screen ret21d>=25 maxdd21d>-8 for tonight's list: real gain that did not cost its holders much stress to keep. Whether any name on it is worth watching is the next question, and it is yours to answer.
Frequently asked questions
What is max drawdown in a stock screener?
Max drawdown, maxdd in the tickerstance terminal, is the worst peak-to-trough decline a stock endured within a given window, always zero or negative. The peak resets upward with every new intraday high inside the window, and the drawdown is measured from that peak to each bar's low, so it catches a pullback even if the stock never traded back below where the window started.
How do I screen for stocks up 25% in a month?
Type screen ret21d>=25. ret21d is the close-to-close return over the last 21 trading days, roughly a calendar month, and screen checks every ticker in the universe, with no row limit the way leaders has one. Add maxdd21d>-8 to keep only names that made that gain without a peak-to-trough slide worse than 8% along the way.
What is a window return in stock screening?
A window return is any of ret, maxup, or maxdd computed over a chosen span, any number of days, weeks, months, quarters, or years up to a 252-bar cap. Instead of a fixed set of preset columns like a "1-month return," the terminal builds the field on demand from the token itself, ret21d, maxup3m, maxdd1y, and so on.
What is the difference between ret and maxup in a screen?
ret is the close-to-close return from N bars ago to the last close. maxup instead compares the highest intraday high reached anywhere in the window to that same starting close, capturing the best the stock did at any point rather than where it finally landed. A large gap between the two, a high maxup next to a modest ret, means the stock gave back most of an earlier run.
What do mfe and mae mean in trading?
mfe and mae are trader shorthand for maximum favorable excursion and maximum adverse excursion, how far a position moved in your favor and against you before the measurement ends. In the tickerstance terminal, mfe is an alias for maxup and mae is an alias for maxdd, so mfe3m and maxup3m return the same value.
Why is a window return field blank for a stock?
Every window field needs N+1 bars of price history to compute, one bar to anchor the start of the window and N more to walk forward from it. A stock without that much trading history yet, a recent IPO checked against a year-long window, for example, reads blank rather than a guessed or zeroed value.