Method
How mpriors measures.
Every read in mpriors compares today with the same security’s own past. This page says which past, how long a window, and what is computed from it. The explainers in Learn go further, one chart at a time.
What “usual” means
Usual always means usual for this security. A 2% day is ordinary for a small biotech and rare for a utility, so a move, a day’s volume or a level of volatility is placed against the name’s own history, never against the market’s or another name’s. On a card, that history is drawn as a track (its lowest to its highest), a pill (the usual range) and a triangle (today).
Volume
- Take the shares traded in each of the 90 sessions before today.
- Work on a log scale, where equal steps are equal ratios. Volume has a few very busy days (options expiries, index changes) that would otherwise set the scale.
- The typical session is the average of the logs; the usual range is one standard deviation either side of it, about two sessions in three.
- Today is left out of the typical session and the range, so a busy day is not partly measured against itself. While the session is open, past sessions are scaled to the share of a day’s volume this name usually trades by that minute, measured from its last 14 full sessions.
Volatility
- Realised volatility: how much the price moved over the last 21 sessions, from each day’s open, high, low and close (the Yang–Zhang estimator), as a yearly percentage.
- Rank: where today’s value sits among the last two years (504 sessions) of the same measure, as a percentile.
- The sea state: the rank in five words.
- Direction: whether the last 5 sessions were rougher, about the same, or calmer than the last 21.
- Implied volatility: what the option market is pricing for the next 30 days, read from the option chain; the expected move for a week follows from it.
| Word | Two-year percentile |
|---|---|
| glassy | below 10 |
| smooth | 10 to 35 |
| moderate | 35 to 65 |
| rough | 65 to 90 |
| heavy | above 90 |
Group and solo
In a basket, each name’s move is split in two:
change = group + solo
- For each name, fit its β (how much it tends to move when the rest of the basket moves) on the 120 sessions before the window, by ordinary least squares.
- The benchmark is the rest of the basket, equal-weighted, leaving the name out, so a name never explains itself.
- Group is β times the rest of the basket’s move; solo is whatever is left. The two add up to the change exactly.
- Cohesion is how much of the names’ movement the basket explains on average; spread is how differently they respond to it (the standard deviation of β).
Time
Charts run on the exchange’s trading calendar: nights, weekends and holidays take no width, so a closed market never draws as a flat line. Session dates are the exchange’s dates in New York; times of day are shown in the clock you choose. Before the open and after the close trading is sparse, so those trades are drawn as dots on a shaded band, joined only where they are minutes apart.
Data
Prices, volume and option chains come from Alpaca; Treasury yields from the US Treasury; company financials from the filings on SEC EDGAR, exactly as filed. Each page of the app names, at its foot, the sources its numbers came from.
What it will not do.
mpriors does not forecast prices, score stocks, or tell you to buy or sell. A rough sea state or a large solo move is a description of what happened, not a signal about what happens next. What to do about it stays with you.