Key takeaways · 6
float_rotation_60d, aliasedfloatrot, divides the total shares traded over the trailing 60 sessions by a stock's free float. A reading of1xmeans the entire tradeable float changed hands once in roughly three months;2xmeans twice.- The field is blank whenever the data can't support it: fewer than 60 sessions of price history, as with a recent IPO, or no known float. A blank is the terminal being honest that the read doesn't exist yet, not a bug.
- High rotation alone is ambiguous. A float turning over twice while the stock chops sideways is churn, the same shares passed among the same short-term traders. The same rotation while the stock also outperforms, RS above 80, points the other way: net demand absorbing the supply.
screen floatrot>2 rs>80 | sort floatrotfilters the whole universe, not the 100-row capleadersapplies, down to names clearing both floors, then ranks the survivors by rotation intensity, heaviest first.rsin that command defaults to the three-month relative-strength percentile. Pairing it withfloatrotis what separates a name genuinely in play from one just getting kicked around.- The terminal's own
| profilebreakdown already buckets a list intofloatrot>1andfloatrot>2liquidity tiers. It reports the condition, end-of-day and point-in-time; what a given rotation means for a specific stock is a read only the chart can finish.
A busy tape and a turned-over float are different facts
A stock trading five times its usual volume today tells you something happened today. It does not tell you whether that volume was new money taking a position or the same shares getting passed among the same traders for the third week running. Float rotation asks a different, longer question: over the last 60 trading sessions, how many times has the stock's entire public float changed hands. tickerstance carries the answer as float_rotation_60d, aliased floatrot in the terminal, sitting in the liquidity field group next to float and dollarvol.
The number reads as a multiple, not a percentage. 1x means the volume traded across those 60 sessions equals the float itself, so on average every tradeable share moved once. Cross 2x and the stock's whole public supply, spread evenly, has changed hands more than twice in about a quarter's worth of trading. That's a fact about supply, built from three months of tape. It says nothing about what happened in any one session.
What the multiple is actually counting
The calculation is plain arithmetic. Add up the daily share volume across the trailing 60 sessions, then divide by the stock's free float, the shares actually available to trade once insider and locked-up shares are set aside. A small, thin name makes the math easy to picture: a 20 million-share float averaging 700,000 shares a day turns over 42 million shares across 60 sessions, a 2.1x reading. A name ten times the size needs ten times the volume to post the same number.
The field needs two inputs to exist at all: at least 60 sessions of daily bars and a known float. A stock that IPO'd eight weeks ago has neither the history nor, often, a settled float yet, so floatrot stays blank rather than guessing. Read that blank the same way a blank 1Y relative-strength column gets read elsewhere on the terminal: an honest gap, not a zero.
Float rotation sums 60 sessions of volume and divides by the float. Past 2x, the tradeable supply has changed hands more than twice in about a quarter of trading.
One number, two very different stories
Rotation on its own does not say which direction the shares moved. A float that turned over twice while the stock ground sideways or drifted lower is churn: the same crowd of short-term traders rotating positions in and out, with no net change in who holds the stock. It is exactly the kind of tape a thinly-floated name can produce without ever going anywhere.
The same rotation arriving while the stock is also outperforming the market tells a different story. Relative strength above 80 says the stock has been beating most of the universe over the last three months; heavy rotation on top of that says a large share of the float changed hands while it was happening. Read together, that leans toward demand absorbing supply rather than noise passing it around. That's why the command pairs the two instead of screening floatrot by itself.
Running `screen floatrot>2 rs>80 | sort floatrot`
screen filters the whole universe, not the 100-row cap that leaders applies, so nothing clearing the floor gets left off before you ever see the list. Predicates written side by side combine with an automatic AND, so floatrot>2 rs>80 keeps only names that clear both the rotation floor and the three-month RS floor at once, not just one.
| sort floatrot then orders the survivors by rotation intensity. Leave off a direction and the terminal defaults to descending, so the name that has cycled through the most of its own float sits at the top. Read as one sentence, the command says: of the names strong enough to sit in the top fifth of relative strength, rank them by how much of their own supply has already turned over.
Typed live: the command decoded clause by clause. A 20M float trading about 700k shares a day turns over 2.1x across 60 sessions.
What the screen leaves for you to judge
Two floors narrowing a few thousand names to a short list gets you a starting point, nothing more. A stock clearing both floatrot>2 and rs>80 after it is already extended far above a base looks different from one doing the same thing on a first breakout out of a quiet range, and the command's two numbers do not know which is which. That distinction lives on the chart, not in the screen.
The blanks matter as much as the numbers that show up. A young name with no floatrot reading yet is not a name with zero rotation, it is a name the field cannot speak to for a few more months. Everything here is end-of-day and point-in-time honest: it reports that the float turned over and that RS confirms it, never what to do about that combination. The trade is yours.
Where to screen it
screen, the floatrot field, and the | sort pipe are all part of the tickerstance terminal, the plain-text interface that puts questions like this straight to the tape after every close. The terminal is a Pro feature at $28 a month, grandfathered, so the price at signup is the price that stays.
Open the terminal and run screen floatrot>2 rs>80 | sort floatrot for tonight's list. A stock that has quietly turned its entire float over twice while beating most of the market is worth a longer look than the rotation number alone; the command's job is just to put it in front of you.
Frequently asked questions
What is float rotation?
Float rotation measures how many times a stock's tradeable share count, its free float, changed hands over a set window. tickerstance computes it over the trailing 60 sessions as float_rotation_60d, aliased floatrot. A reading of 2x means the volume traded across those 60 sessions was double the size of the float itself.
How is float_rotation_60d calculated?
It sums the daily share volume across the trailing 60 trading sessions and divides by the stock's free float. A 20 million-share float averaging 700,000 shares a day, for example, trades 42 million shares over 60 sessions, a 2.1x reading. The field needs a full 60 sessions of history and a known float to compute; without either it stays blank.
What does floatrot>2 mean in a screen?
It filters for stocks whose entire public float has turned over more than twice in the trailing 60 sessions. On its own that only says a lot of shares changed hands; it does not say whether the stock went up, down, or nowhere while it happened, which is why the field is rarely screened alone.
Why pair floatrot with rs in the terminal?
Rotation by itself is ambiguous, high turnover shows up in a churning, going-nowhere stock as readily as in a genuinely in-demand one. Adding rs>80, the three-month relative-strength percentile, filters for rotation that arrived while the stock was also outperforming the market, which points toward demand absorbing the float rather than traders passing it back and forth.
Why is floatrot blank for some stocks?
The field needs at least 60 sessions of daily price history and a known float to compute. A stock that IPO'd within the last few months typically has neither yet, so floatrot returns blank rather than a guessed number. It is the same honesty rule the terminal applies to a blank 1Y relative-strength column: no history, no reading.
How do I screen for float rotation in the tickerstance terminal?
Type screen floatrot>2 rs>80 | sort floatrot. screen filters the whole universe rather than the 100-row cap leaders uses, the two predicates combine with an automatic AND, and | sort floatrot ranks the survivors by rotation intensity, heaviest first by default.