FRAKTAL·ICIOUS
Metric research
Metric research · updated 2026-09-19

Net Unrealised Profit/Loss

The heaviest valuation signal this model ever carried, removed at a measured cost to its sharpest recent call — not because it scored badly, but because it is algebraically the same number as a signal we were already scoring beside it.

Status Tested and rejected Weight in our model 0 Also called NUPL, net unrealized profit and loss, relative unrealised profit, unrealised profit ratio, market cap vs realised cap

What it measures

Market capitalisation minus realised capitalisation, divided by market capitalisation. Realised cap values every coin at the price it last moved on-chain, so the result is the share of the network's total value that is currently paper profit. Above zero the average coin is held in profit; below zero the average coin is underwater. We scored it as a trailing percentile rather than against fixed levels, because the absolute bands compress every cycle.

Our data: Checkonchain, refreshed from the published NUPL chart and banked here as a frozen write-once daily series, non-revising, like every other graded input. Coverage runs from 2012-10-27. The data is not the limitation on this page and never was: the register's own signal-silence audit records this metric as zero-weighted by decision rather than absent, and names the file and the date range to prove the distinction.

What happened when we put it in the model

A/B run 2026-07-09 · tested at weight 0.07 · verdict revert
MeasureOne variable scored 3xScored 2x, realised price zeroed
Walk-forward geomean edge1.0461.090
Current-cycle dollar edge1.551.99
Trailing 24-month edge1.512.11
2025 top, letter gradeAA
Holdout GPA4.004.00

Read the verdict word carefully on this row. The run did change the shipped model — what it reverted was the double-count, by cutting this signal from 0.09 to 0.07, cutting MVRV from 0.07 to 0.05 and taking realised price to zero. This signal lost weight in this run and in the next one, and gained it in neither, which is why both rows here read revert. Measured against the model as it stood on 2026-07-09; that baseline is many re-baselines old and is NOT the current published record. The register is the only authority on today's figures. Recorded at src/services/cycleProjection.ts:3274.

A/B run 2026-07-10 · tested at weight 0.07 · verdict revert
MeasureNUPL weighted 0.07NUPL at zero (today)
Walk-forward geomean edge1.0901.140
2025 top, letter gradeAC
Current-cycle dollar fold2.021.80
Holdout GPA4.004.00

The second run took the remaining 0.07 to zero, leaving MVRV alone as the model's valuation axis — where it still sits. The left column is therefore the model as it shipped for one day, and the right column is the model that has been serving this site since. Same warning as above: these are dated figures from July 2026, not current performance, and must not be quoted as such. Recorded at brain/IMPROVEMENT_PROPOSALS.md, entry dated 2026-07-10.

Is it independent of the valuation signal we kept?

No. It is the same condition, written differently. We measure a candidate's independence as the phi coefficient against the mvrv < 1.0 anchor, the valuation condition the model already reads. Net Unrealised Profit/Loss scores 0.9936. That is not a high correlation, it is an identity wearing two names, and we can show it on our own series rather than assert it from the algebra: the median absolute difference between NUPL and one minus one over MVRV is 0.0014 across 5,046 days. For scale, the same phi measurement, run against the equivalent form of this anchor, returns 0.465 for a miner-cost-basis reading and 0.412 for a long-term-holder conviction reading. Those are candidates from genuinely different on-chain axes. This is not one of them.

Recorded at brain/IMPROVEMENT_PROPOSALS.md:436.

What we concluded

Every other page in this family records a candidate that was tested, measured worse, and went to zero. This one is the opposite shape, and it is the more uncomfortable story. This signal was not a candidate. It was live, it was the single heaviest valuation input we had, and it had been passing for as long as we had been measuring.

It was passing because the measurement could not see the problem. A walk-forward test grades the composite the model produces. It cannot tell you that three of the inputs feeding that composite are the same number, because the composite it grades is the only thing it ever gets to look at. Collinearity is invisible to an out-of-sample score by construction — it does not make the model fail the test, it makes the model quietly place one fifth of its conviction on a single variable and call it three opinions.

What found it was not a better test. It was reading the definitions of two signals next to each other and noticing that one was the other rearranged. Nothing in the gate would ever have surfaced that, and the gate had been green throughout.

The correction was made in two steps and the second one cost us. Collapsing the triple count improved everything we measure and cost nothing — walk-forward geomean edge 1.046 to 1.090, current-cycle edge 1.55 to 1.99, and the 2025 top still graded A. Then removing the signal entirely improved the walk-forward again, 1.090 to 1.140, and took the 2025 top from an A to a C while the current cycle's dollar fold fell from 2.02 to 1.80.

We took the second step anyway, and the reasoning is the part worth arguing with. The A on the most recent top was the single most quotable thing this model had. Keeping it meant keeping a double-count that the older cycles said was hurting us — and a model that grades its most recent event best is describing the event it was most recently tuned near, which is the failure the walk-forward exists to catch rather than to certify. We traded the sharpest recent call for the more robust history, and we are publishing the price of that trade rather than the half of it that flatters us.

The honest generalisation, and the reason this page exists: passing a test is not the same as being true. A signal can clear every gate for years while the thing that makes it clear them is a defect the gate has no way to detect. If you are reading a track record anywhere — ours included — the question that separates a measured model from a fitted one is not how many tests it passed. It is what class of error those tests were capable of finding.

It stays wired and computed at weight zero, which is why both arms above can still be re-run from a single environment variable. We did not delete it; we priced it at nothing.

Where our own notes disagree

This quantity is not actually gone from our model, and saying otherwise would be the easy version of this page. A second signal derived from the same series, the divergence between price and NUPL near an all-time high, carries 0.05 of weight in the graded model today — equal to MVRV, the valuation signal we kept, and more than most other signals in the stack. Our position is that a divergence between two series is not the level of either one, and that the identity argument above applies to the level and not to the shape; the divergence only computes within a few percent of an all-time high and is silent otherwise, so it cannot be the standing valuation vote we removed. We think that is right. We also note that it is exactly the kind of reasoning that let one variable hold 0.20 of the weight for years, and that nobody has run the phi measurement on the divergence flag against the valuation anchor the way it was run on the level. Until someone does, this page records the argument rather than the proof.

Other candidates we put through the same gate

Each of these was wired into the same model, measured against the same walk-forward gate, and written up with the numbers it produced — including the cells where it helped. A candidate can improve several measures and still be reverted, because the gate is a conjunction and buying one measure by selling another fails it.

Tested and rejected · 1 A/B run · 1 of 4 measured cells improved · 0 shipped

Reserve Risk

Reserve Risk prices long-term-holder conviction against the market. We tested it inside our model, measured it, and it made the model worse — so it carries zero weight.

Tested and rejected · 3 A/B runs · 7 of 15 measured cells improved · 0 shipped

The Trade-Weighted Dollar

A falling dollar really does precede Bitcoin strength, in every cycle we can measure. We swept it into our model at three weights and every one of them failed the out-of-sample test — so it carries zero weight.

Tested and rejected · 1 A/B run · 1 of 3 measured cells improved · 0 shipped

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.

Tested and rejected · 2 A/B runs · 3 of 8 measured cells improved · 0 shipped

CFTC Commitments of Traders — leveraged fund positioning

We scored hedge-fund positioning in CME Bitcoin futures for months before anyone checked the distribution. Its bearish half had never fired once in 2,608 days, so we set it to zero.

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.