On-chain intelligence is only useful when the consumer can trust the number. Yesterday we closed the last engineering gate on our UTXO indexer and put the output through an institutional reference feed. This post publishes the results. Every formula, every drift measurement, every methodological choice, in public.
No black boxes. If our number ever differs from an industry reference, we will tell you exactly why.
The comparison
We aligned both systems on the same close snapshot (April 22, 00:00 UTC). Our numbers come from a direct read of our own UTXO indexer. The reference provider is a widely used institutional data room with a paid live feed. We do not name it. The point is not whose number is right, the point is how close a from-scratch UTXO engine can get to an industry benchmark, and where it should diverge.
| Metric | Nexus Glass | Reference | Drift | Status |
|---|---|---|---|---|
| Raw SOPR | 0.99606 | 0.997 | 0.1% | Match |
| MVRV | 1.44513 | 1.44251 | 0.2% | Match |
| STH-SOPR | 1.00684 | ~1.01 | 0.3% | Match |
| Exchange Inflow (24h) | 25,430 BTC | ~27,300 BTC | 7% | Match |
| Adjusted SOPR | 0.94717 | ~0.99 | 4.3% | Filter differs |
| LTH-SOPR | 0.76905 | ~0.70 | 9% | Filter differs |
Four metrics that should match, and do
Raw SOPR, MVRV, STH-SOPR, and aggregate exchange inflow are all defined by a single, shared formula. When two engines use the same math on the same UTXO set, they produce the same number within rounding error.
The core formulas
MVRV = MarketCap / RealizedCap = (Supply × SpotPrice) / Σ(UTXO.value × price_at_creation)
SOPR = Σ(value × spend_price) / Σ(value × creation_price)
STH-SOPR = SOPR, restricted to UTXOs with age < 155 days.
Our numbers differ from the reference by 0.1% to 0.3%. That residual drift comes from price source differences (our daily close vs their close), not from the formula. If we used identical price series, the drift would round to zero.
The 7% drift on exchange inflow is structural. Our wallet coverage is 13 major venues built from public tagging, public blockchain data, and our own heuristics. Commercial feeds extend this with paid attribution data from third-party forensic providers. Our number is defensibly accurate for the wallets we classify. The gap is a coverage gap, not a math gap.
Two metrics that differ, on purpose
Adjusted SOPR and Long-Term Holder SOPR are not a single formula. They are a family of formulas, parameterized by a filter rule. Different publishers pick different filter rules. Ours is stricter.
Adjusted SOPR: why ours is lower
The purpose of "adjusted" SOPR is to strip out short-lived UTXOs that represent internal shuffling rather than real profit-taking. Exchange consolidations, miner cleanups, self-transfers inside custody services. All of these create spend events that are not real sales.
The question is how short is short. The most widely published version excludes UTXOs spent within one hour of their creation. That removes the fastest shuffling but leaves a day of potential noise in the signal. We exclude any UTXO spent within the same day. That is a stricter filter. It removes more noise, and it leaves the residual signal with a wider margin for interpretation.
The result: our adjusted SOPR sits about 4% lower than the reference. The gap is the arithmetic consequence of a tighter filter. When our adjusted SOPR crosses below 1.0, the condition has survived 24 hours of scrutiny instead of 60 minutes. For a consumer making an allocation decision on the signal, that extra filter is the point.
LTH-SOPR: why single-day snapshots diverge
Long-Term Holder SOPR is restricted to UTXOs older than 155 days. The 155-day threshold is universal. What differs between publishers is the value-weighting convention and the price oracle.
LTH-SOPR is highly sensitive to individual ancient coin movements. A single Satoshi-era whale spending 5,000 BTC can move the daily LTH-SOPR by several percent. If one publisher counts that event against the April 22 UTC day and another publisher counts it against April 23 (different block cutoff), the two publishers will disagree by 5 to 10% on a single day even though they agree on the 7-day moving average within 2%.
We publish LTH-SOPR live, computed from our own UTXO indexer, with our own daily close pricing. The reference publisher publishes LTH-SOPR on a delayed feed with their own pricing. Neither number is wrong. They are the same metric, measured through different frames, at different moments.
Why stricter filters matter for institutional consumers
An adjusted SOPR at 0.99 and at 0.94 tell different stories. The 0.99 reading says spending is roughly at cost basis. The 0.94 reading says spending is 6% below cost basis. Same market, same day, same underlying UTXO set. Different filter, different signal.
For a fund running a capitulation-based entry rule, the difference between 0.99 and 0.94 is the difference between no signal and a triggered signal. A filter that is too loose generates false entries. A filter that is too tight misses real bottoms. Neither extreme is correct. What matters is that the consumer knows exactly which filter they are consuming.
Our choice is the tighter filter because our consumers are institutional. False positives in a capitulation signal trigger real capital allocation. A same-day filter gives the signal 24 hours to survive. A one-hour filter does not. For an algorithm, that extra margin is the difference between a clean trigger and a noisy one.
What this means for the consumer
If you read our raw SOPR, you are reading the industry-standard number, within 0.1% of the institutional reference. If you read our adjusted SOPR, you are reading a stricter signal, one that has survived a full trading day of noise. Both numbers are published side by side. You choose which one feeds your decision.
Open math as a product principle
We built Nexus Glass because the on-chain data market has a trust problem. Most consumers take the number and use it. When it is wrong, they find out from price action, not from the data provider. That is backwards.
We publish the formula. We publish the filter. We publish the drift against a live institutional reference. When we diverge, we tell you why. When we match, we show the math. The goal is not to be the closest mirror of an existing provider. The goal is to be the data source where the consumer can always answer the question: where does this number come from, and should I trust it for the decision I am about to make.
Four of six metrics match within 0.3%. Two diverge by deliberate methodological choice. All six are reproducible from the public Bitcoin blockchain, our published UTXO indexer logic, and our published daily price source. Nothing is a black box.
This is what market-grade on-chain intelligence looks like when the producer treats the consumer as a peer.