Key takeaways · 6
maxup3m, aliasedmfe3m(maximum favorable excursion), measures the highest HIGH a stock printed over the trailing 63 trading bars against its close 63 bars back. It reads the run to the high, not the close, so it is always greater than or equal to the close-to-close return over the same window.ret3mis the close-to-close return: what a position held the whole window actually earned. A stock can print amaxup3mof +50 and aret3mcloser to +18, illustratively, if it spiked and then faded before the window closed.- The gap between
maxup3mandret3mis the fade, how much of the best move a stock has already given back by today's close. A wide gap on its own says the peak has passed; it doesn't say the stock is finished moving. - Both fields need 64 sessions of daily bars, the entry close plus 63 sessions of highs, to exist at all. A recently listed stock just hasn't built up that history yet, so the field sits blank until it has.
screen maxup3m>=50 rs>85runs the whole universe, without the 100-row limitleaderscarries, for stocks whose run to the high cleared 50% whilers, the three-month relative-strength percentile, still ranks in the top 15%. Writing both predicates side by side is enough; the terminal treats it as AND.- A big
maxup3mpaired with a collapsedrsreading is a warning, not a candidate, the run happened and appears to be over. The samemaxup3mpaired withrs>85says the strength behind it hasn't evaporated yet.
The list every screener promises doesn't say from where
Type that query and you're picturing a straightforward list: names that ran hardest over the last quarter. The catch sits inside the word "up." Up from where, measured to what. A stock's closing price 63 trading bars ago is one starting line. The highest price it touched at any point since is a different, larger number, and a screen built on one instead of the other hands back two different lists from the same universe on the same night.
The tickerstance terminal keeps both readings as separate fields because they answer different questions. ret3m is the close-to-close return, what a position held the whole window actually earned. maxup3m is the maximum run-up, how far the stock got at its best moment along the way, whether it held there or not. Before screening for "up 50%," the question worth answering first is which of the two you mean.
Measuring to the high, not the close
maxup3m, also written mfe3m (maximum favorable excursion, trader shorthand for the best a position ever looked), fixes an entry point 63 trading bars back at that day's close, then scans every high printed since for the largest gain above it. The math is plain: highest HIGH in the window, divided by the entry close, minus one, times 100. It is measured to the high a stock reached, not to where it happens to sit today.
That distinction produces real gaps. A stock that spiked to a maxup3m of +50 and has since faded to trading only 18% above its entry close, illustratively, still carries a +50% maxup reading; its ret3m for the same stretch reads closer to +18%. The 32-point difference between the two is the fade, how much of the best move has already been given back by today's close. maxup3m can also read negative, for a stock that has never once traded above the close it started the window at.
maxup3m measures to the high the stock reached; ret3m measures to where it closed. The shaded gap is what got given back.
Ran hard once is not the same as still strong now
A large maxup3m on its own says only that a stock ran hard at some point in the last quarter, not that the run is still going. Plenty of names spike on a single catalyst and print an eye-catching maxup number, then spend the following weeks giving it back: the buyers who chased the top are left holding shares while the stock grinds toward where it started. Screening maxup3m alone surfaces both that stock and the one still climbing, with nothing in the number to tell them apart.
rs (rs_3m_pctile, the three-month relative-strength percentile) answers the second half of the question: is the stock still outperforming right now. Requiring rs>85 keeps only names ranked in the top 15% of the universe, which means whatever demand produced the run-up hasn't evaporated. A maxup3m near 50 paired with a collapsed RS reading reads as a warning more than a candidate, the move happened and it's over. The same maxup paired with rs>85 says the move hasn't rolled over yet.
Running `screen maxup3m>=50 rs>85`
screen maxup3m>=50 rs>85 reads as one sentence once the two floors are separated. screen runs against the whole universe rather than the 100-row cap leaders applies, so nothing clearing the bar gets left off before you see the list. maxup3m>=50 keeps stocks whose highest print over the trailing 63 sessions reached at least 50% above the close 63 sessions back. rs>85 adds the second floor, still in the top 15% of the universe on three-month relative strength right now. Two predicates written side by side both have to hold at once; the terminal ANDs them without needing a connector word.
Add | sort maxup3m and the survivors get ordered by run-up size. Leave off a direction and the terminal defaults to descending, so the stock with the largest maxup reading sits at the top of the list, exactly where the original search was pointing.
Typed live: the command decoded clause by clause, with a worked example of a run-up measured to the high rather than the close.
What the screen can't tell you, and where the chart takes over
The window fields need history before they exist at all. maxup3m needs 64 sessions, the entry close plus 63 sessions of highs to scan, so a stock that listed within the last few months returns blank instead of a number. Read that blank the way any other young-name gap gets read on the terminal: the data hasn't accumulated yet, not a zero.
The read never goes past the close: screen maxup3m>=50 rs>85 finds stocks that ran hard and are still strong right now, and stops there. It doesn't say where to get in, and sizing the position or judging what's left of the move is still the reader's job. That call belongs to the chart. /terminal ships with tickerstance Pro at $28 a month, grandfathered: once you're in, the rate doesn't move.
Frequently asked questions
How do I find stocks that went up 50% in 3 months?
Run screen maxup3m>=50 rs>85 in the tickerstance terminal. maxup3m measures the highest price a stock reached over the trailing 63 sessions against its close 63 sessions back; rs>85 keeps only names still ranked in the top 15% of three-month relative strength, filtering out runs that have already faded.
What is maximum favorable excursion (MFE)?
Maximum favorable excursion, MFE, is trader shorthand for how far a position moved in its favor at its best point, regardless of where it later closed. tickerstance's maxup3m field, aliased mfe3m, computes it over a 63-bar window: the highest HIGH printed, divided by the close 63 bars back, minus one.
What's the difference between maxup3m and ret3m?
ret3m is the close-to-close return over 63 trading bars, what a position held the whole window actually earned. maxup3m measures to the highest HIGH printed anywhere in that window rather than the current close, so it is always greater than or equal to ret3m. A stock that spiked and faded can show a maxup3m of +50 with a ret3m closer to +18, illustratively.
Why is maxup3m blank for some stocks?
The field needs 64 sessions of daily bars, an entry close plus 63 sessions of highs to scan. A stock that listed within the last few months doesn't have that much history yet, so maxup3m returns blank rather than a guessed number.
Why pair maxup3m with rs in a screen?
A large maxup3m only confirms a stock ran hard at some point; it says nothing about whether that strength is still intact. Adding rs>85, the three-month relative-strength percentile, filters for names still outperforming right now, separating a run that's still going from one that already rolled over.
How do I sort by the biggest run-up in the terminal?
Add | sort maxup3m to the end of a command. Leave off a direction and the terminal defaults to descending, so the stock with the largest run-up to its high sits at the top of the list.