FRAKTAL·ICIOUS
Metric research
Metric research · updated 2026-08-29

Short-Term-Holder SOPR

When recent buyers start selling at a loss, a bottom is usually near. That is true, and our model already knew it — adding this signal made the model worse, so it carries zero weight.

Status Tested and rejected Weight in our model 0 Also called STH-SOPR, short-term holder spent output profit ratio, new-buyer capitulation

What it measures

Of the coins moved on-chain today that were last moved less than 155 days ago, the ratio of the price they sold at to the price they were bought at. Above 1.00 those recent buyers are taking profit; below 1.00 they are realising a loss. We score the 30-day moving average of that ratio, not the daily print, because the daily series is dominated by exchange housekeeping.

Our data: Checkonchain, banked in this repo as a frozen write-once series with a SHA-256 prefix, like every other graded input. The loader drops any row that is not a finite positive number before it reaches the scorer — see the tension note at the foot of this page for why that filter is load-bearing here and not merely defensive.

What happened when we put it in the model

A/B run 2026-07-15 · tested at weight 0.04 · verdict revert
MeasureWithout itWith it
Walk-forward geomean edge1.1761.159
Full-history dollar multiple4.25x3.72x
2019-22 cycle fold1.321.35

Swept at TWO weights on this date, 0.04 and 0.02, and reverted at both. The repo records the figures below for the sweep as a whole and does not break them out per setting, so read them as the outcome of the sweep rather than as the 0.04 row specifically. Measured against the model as it stood on 2026-07-15; that baseline is several re-baselines old and is NOT the current published record — see the register for today's figures. Recorded at src/services/cycleProjection.ts:3052.

What we concluded

The premise is sound and we are not disputing it. New buyers capitulating at a loss really does cluster near lows, and the one place this signal helped was exactly where the theory says it should: the 2019-22 cycle, the fold that contains a genuine bottom, improved from 1.32 to 1.35.

It still failed, and it failed on the aggregate. Walk-forward geomean edge fell from 1.176 to 1.159 and the full-history dollar multiple fell from 4.25x to 3.72x, at both weights in the sweep. A signal that improves one fold and degrades the aggregate has not found something new; it has re-timed something we already had.

The explanation is the least flattering one available, and it is the reason this page exists. Finding bottoms is the thing this model is already best at. A signal whose entire vocabulary is 'this looks like a bottom' arrives with nothing to add to the one call we do not need help with, and its noise still gets a vote on every other day. Being right about the right thing is not the same as being additive.

Read this page next to our Reserve Risk note. Both were swept on the same day, against the identical baseline — 1.176 geomean, 4.25x full history — and both reverted. Reserve Risk cost 0.070 of geomean edge; this cost 0.017. Same verdict, four times the damage, and the cheaper failure is the one that is easier to talk yourself into.

A third candidate later earned the same verdict for the same reason. In August 2026 we reconstructed a perpetual-futures basis proxy on our own BitMEX funding history, and it died the same death: backwardation turned out to be drawdown wearing a costume, and it added +0.53 of a point where the model already buys while costing 12.71 points in the middle of the range. Three independent bottom-side candidates, three rejections, one mechanism. That is a finding about our model, not about the metrics.

It stays wired at weight zero and can be re-swept with one environment variable. We did not delete it; we priced it at nothing.

Where our own notes disagree

The sharpest thing said about this signal in our own repo is that it should never have been testable at all. An earlier note lists the long-term/short-term SOPR cohort split among the data-blocked candidates and calls it an adversary-proven trap: the cohort series carried a placeholder value of 1.00 at the exact dates of the cycle bottoms, which is to say it read 'recent buyers are breaking even' at the precise moments they were capitulating. Training on that is training on fiction. The series was repaired before the July sweep and the loader now refuses any non-finite or non-positive row, and the result above is from the repaired data. We are recording the disagreement rather than resolving it, because a placeholder that happens to be a plausible number is the hardest class of data defect to detect after the fact, and anyone reading this page should weigh the result knowing the series has that history.

Every signal we add has to survive the same gate, and most do not. Our published record is measured over 18 walk-forward folds (the year and cycle folds tile the same span, so they are not independent of each other). The figures in the table above are dated results against the model as it stood on the day of the test — the register is the only authority on where the model stands today.

Read the current call in today's briefing, or the timestamped record of every call in the call ledger.

Fraktalicious Research · Metric index · Briefing archive · Call ledger · Privacy
Nothing on this site is financial advice. This page is a record of a test we ran on our own model, published with the numbers it produced.