the method
Show the math. All of it.
In a category defined by hype, the credible voice is the one thing the hyped can't clone. So here is our estimator, its known biases, and the rules we hold ourselves to — published, because the audit trail is the marketing.
01 · the primitive
One quantitative primitive, annotated.
Everything in mpriors is arithmetic on a single factor regression, computed per member, per basket, per session:
ri,t = αi + βi · rB\i,t + εi,t
The member's return regressed on its group's — with the member left out of the group. On any display day, group = β · rgroup and solo = α + ε, the intercept deliberately folded in so the identity stays exact:
change = group + solo
Sum the daily solo over time and you have the cumulative divergence — the exact series the pairs-trading literature calls the spread, and the protagonist of every statistic below. Same object, three vocabularies: Chan's spread = y − h·x, Avellaneda–Lee's residual = r − β·rfactor, and ours.
02 · small-N honesty
The self-inclusion trap, measured.
Textbooks regress stocks on indices, where a name's own weight in the benchmark is negligible. Our users build five-name baskets, where it's catastrophic: a member regressed on a group that contains it is partly explaining itself.
what we measured
R² 0.69 reported vs 0.36 honest at N=3 — the flattery self-inclusion buys in a small basket. So every benchmark in mpriors is leave-one-out: the group is recomputed without the member, for every member.
what it costs, disclosed
Leave-one-out buys honesty at the price of attenuation in small samples — so we quantified that too, and turned the residue into product rules: baskets need five members minimum, and below eight we say plainly that estimates are noisier.
The engine even asserts that mean β ≠ 1.000 exactly — because exactness there is the signature of the self-inclusion bug, not of good fit.
03 · the contracts
Rules the software enforces, not conventions we intend.
Every displayed decomposition must reconcile: the rounded independents derive the third term, the identity is asserted to nine decimal places, and on failure the app refuses to render rather than show a number that doesn't add up.
Every response names the provider that produced it. If the data isn't there, you see that it isn't there — never a synthetic stand-in. Spreads amplify bad ticks into phantom divergences; provenance is the defense.
Union time grid, common rebase anchor, marked late joiners, partial trailing bars dropped. The classic multi-series lies — lines that start in different places, composites that plunge on a half-filled bar — are impossible by construction.
Basket quality is cohesion (how much of members' variance the group explains) and spread (how dispersed the βs are) — two numbers that fail independently. We proved with archetypes that collapsing them into one "score" hides exactly the failures you'd want to see.
Today's β comes from a 120-session leave-one-out OLS, refit each session. When a drift-aware estimator ships, it arrives as v2 beside v1, labeled on every number it touches — never silently replacing the math under your saved history.
04 · dynamics
Named tests, plain language, visible uncertainty.
A divergence that doesn't come back isn't a stretched relationship — it's a breakup in progress. Telling those apart is a statistics problem with named tools, and we name them:
Stationarity tests on the cumulative divergence, rendered as plain language: "historically pulled back toward the group" vs "drifts — no pull detected." Each verdict names its test, window, and confidence.
The single most useful number a divergence has: how long stretches have historically taken to halve. It also sets the lookbacks of every other statistic — and when λ isn't credibly negative, we say "no reliable half-life" instead of printing one.
Return co-movement (what our rolling regression measures) and price-level equilibrium (what CADF/Johansen test) are different claims. The panel tells you which one it's making — most tools don't know the difference.
Below minimum observations, half-life and reversion verdicts are withheld rather than shown with silent unreliability. A missing number is honest; a shaky number in confident type is not.
05 · the enemy is fooling yourself
Multiple testing, correlation ceilings, and your own record.
discovery
The trials count, on the label
Scan 1,240 pairs and dozens will look good by luck alone. Every scan result in mpriors carries its arithmetic: "~62 would look this good by chance." Ranking penalizes short samples by construction.
the book
Neff ≈ N / (1 + ρ̄(N−1))
Correlated divergences don't diversify. Six spreads at ρ̄ 0.5 are ≈ 1.7 independent bets — the ceiling nobody tells retail about, computed across everything you watch.
your ledger
Out-of-sample starts at save
A professional forecast's track record starts at submission — not where a backtest flatters it. Yours too: saved divergences are timestamped point-in-time, outcomes accrue automatically, and the ledger renders with zero performance-claim vocabulary.
And the warning we inherit verbatim from the literature: mean reversion fails rarely and violently, usually at maximum confidence. Mpriors' honest role is not a risk engine — it's a tripwire on the assumptions. When β breaks, cohesion decays, or a divergence exceeds its historical worst, you get a notice that the ground has moved. It names the assumption, never an action.
06 · the vocabulary
Describe, never advise — enforced by a grep.
The product ships with a forbidden-word list checked in continuous integration. Verbs like diverged, reverted, historically took N sessions carry the information without the claim; the words that turn description into advice can't reach a release. Marketing lives under the same rule — this site included.
That's why mpriors has no colored arrows telling you what to do, no "opportunities" tab, and no urgency anywhere in the interface. If a sentence wouldn't survive the grep, it isn't in the product — or on this page.