Key Takeaways

  • What it is: The ratio of realized value at spending time to value at creation or acquisition proxy for spent ledger units.
  • How it is built: For each qualifying spent output, providers compare current disposal price with the price when the output was created, then aggregate.
  • Core expression: SOPR = realized value of spent outputs ÷ value of those outputs at creation.
  • Best use: Values above one indicate aggregate realized profit among spent units; below one indicates aggregate realized loss.
  • Main limitation: Internal transfers can create false realization, averaging hides distribution, provider filters differ, and account-based adaptations are less direct.
  • Practical rule: Check which entity-adjustment or internal-transfer filter the data provider applies before comparing SOPR readings across sources.

Who This Guide Is For

SOPR is aimed at readers who already accept that price alone does not reveal whether holders are selling at a gain or a loss. If you are new to spent-output metrics, read the definition and formula sections and stop there. The construction section assumes you know what a UTXO is.

Analysts comparing providers need the construction and cross-network sections, because the single largest source of SOPR disagreement is not arithmetic but which spends each provider throws away before aggregating. Engineers reproducing SOPR from a node need the lineage list: SOPR is one of the few holder metrics you can rebuild yourself from a full Bitcoin node plus a daily price series, which makes it a good calibration target for a wider on-chain pipeline.

This page is educational and not individualized financial advice. Every number in the worked example is invented to show the arithmetic.

What Does SOPR Measure?

SOPR measures the aggregate profit ratio on coins that actually moved. For every output spent in a period, it divides the value of that output at the moment it was spent by its value at the moment it was created, then aggregates across all qualifying spends. A reading of 1.15 says the coins that moved that day were worth 15 percent more than when their current owner received them.

The critical property is what SOPR ignores. Coins that sit still contribute nothing. SOPR is a survey of the moving supply only, which on a typical day is a fraction of a percent of all coins. That makes it a behavioral metric about sellers, not a valuation metric about the asset. A market where nobody with losses sells and a market where nobody holds losses at all can produce the same SOPR.

Plain-language definition

SOPR is the average price coins sold for, divided by the average price the same coins were bought for, measured across everything that moved today.

Technical definition

For each spent transaction output o in the interval, let P_spend(o) be the asset price at the block timestamp of the spending transaction and P_create(o) the price at the block timestamp of the transaction that created it. SOPR is the sum of value(o) × P_spend(o) over the sum of value(o) × P_create(o). It is a value-weighted ratio, not an average of per-output ratios, so one large old output moves the daily print far more than a thousand small recent ones.

How Is SOPR Constructed?

SOPR is unusual among holder metrics in that the raw inputs are entirely on-chain except for one external series: the price feed. Everything else comes from the ledger.

blockchain data network technology SOPR Explained Realized constructed
Photo by geralt via Pixabay
  1. Enumerate spends. Walk every transaction input in the interval. Each input references a previous output by transaction id and index.
  2. Look up the creating block. Resolve each referenced output to the block that created it. This requires either a full UTXO-set index with creation heights or a replayed chain history.
  3. Attach two prices. Price at the creating block's timestamp and price at the spending block's timestamp. Both come from an off-chain market feed.
  4. Filter. Drop coinbase maturity artifacts, self-spends the provider classifies as internal, and, in adjusted variants, outputs whose lifespan falls below a threshold.
  5. Aggregate. Sum spent value at both prices and divide.

Where two honest providers diverge

Step four is where SOPR series separate. A transaction that pays one recipient and returns change to the sender creates a change output whose cost basis is the original acquisition price. When that change is later spent, SOPR counts it as a realized gain or loss even though the owner never transacted with anyone. Providers who leave change in and providers who attempt to strip it publish materially different curves during periods of heavy consolidation.

Step three matters almost as much. An output created in 2013 needs a 2013 price, and thin, fragmented early exchange data means providers using different historical references disagree on the cost basis of the oldest coins, which are also the coins with the largest gains and therefore the largest weight.

Formula and Measurement Logic

SOPR = Σ (spent value × price at spend) ÷ Σ (spent value × price at creation)

Read the sigma notation literally. The numerator and denominator are both currency totals for the same set of outputs, so the units cancel and SOPR is dimensionless. That is why SOPR can be compared across price regimes in a way that realized profit in dollars cannot: a bull market inflates both halves of the fraction equally.

Because the ratio is value-weighted, a single 500 BTC output from 2015 can dominate a day in which 40,000 small outputs also moved. Providers who publish an unweighted mean of per-output ratios are computing a different statistic, and the two series will not agree.

InputDecision requiredEffect on SOPR
Price at creationWhich exchange or index, and which timestamp within the blockSets the cost basis; dominates for old outputs
Price at spendSame feed as creation, or a different oneMixing feeds introduces a systematic bias in the ratio
Change outputsCounted as a real spend or strippedStripping raises SOPR during consolidation waves
Minimum lifespanZero, or a one-hour floor for adjusted variantsA floor removes intra-block shuffling that pins the ratio near 1
WeightingValue-weighted or per-output meanChanges which spenders control the print
Coinbase outputsIncluded as miner cost basis at block timeTies miner selling into the same series

How Should SOPR Be Interpreted?

One is the structural pivot. Above one, the coins that moved were sold above their acquisition price in aggregate; below one, below it. That threshold is not a convention chosen by an analyst, it falls out of the arithmetic, which is why SOPR is more interpretable than metrics whose bands are fitted to history.

blockchain data network technology SOPR Explained Realized should interpreted
Photo by geralt via Pixabay

The useful reading is not the level but the behavior at the pivot. In a rising market, sustained selling at a loss is rare, so dips toward one tend to be brief; in a falling market, prints below one persist because holders who bought higher are the ones capitulating. Analysts therefore watch how long SOPR stays on one side and how it behaves when it approaches one from above, rather than treating any single day's value as a signal.

Reading order

  1. Side. Above or below one, and for how many consecutive days.
  2. Magnitude. A print of 1.02 and a print of 1.40 both sit above one and mean very different things about who is selling.
  3. Cohort. Split by coin age. A high aggregate SOPR driven by coins bought last month is a different market than the same value driven by coins from four years ago.
  4. Volume. A ratio computed over a tiny amount of moved value is noise. Always plot spent volume beside the ratio.

The most common overreach is treating a SOPR reset to one as a tradeable event. It describes what sellers just did. It carries no information about the buyers absorbing that supply, and buyer capacity is what determines whether price holds.

Step-by-Step Workflow

  1. Pick the chain and confirm it has a genuine UTXO set. On an account-based chain, SOPR is a heuristic reconstruction, not a measurement.
  2. Record the provider's minimum-lifespan filter and whether change outputs are stripped. These two settings explain most cross-provider disagreement.
  3. Record the price feed and the timestamp rule, and confirm the same feed supplies both the creation and the spend price.
  4. Plot spent volume on the same chart. Discard ratio readings on days when moved value collapses.
  5. Split the series by coin age before drawing any conclusion about seller behavior.
  6. Check the interval against known exchange consolidation events, which produce large ratio moves with no economic selling behind them.
  7. Reproduce one day from a node or a public query if the conclusion is going to be published.

Worked Hypothetical Scenario

Suppose four outputs are spent in a single day. Their sizes, creation prices, and spend price are as follows.

OutputSize (BTC)Price at creationPrice at spend
A50$20,000$60,000
B10$68,000$60,000
C5$59,800$60,000
D2$71,000$60,000

Value at spend is (50 + 10 + 5 + 2) × $60,000 = $4,020,000. Value at creation is (50 × 20,000) + (10 × 68,000) + (5 × 59,800) + (2 × 71,000) = $1,000,000 + $680,000 + $299,000 + $142,000 = $2,121,000. SOPR is 4,020,000 ÷ 2,121,000 = 1.90.

Three of the four outputs moved at a loss. The aggregate ratio still reads 1.90 because output A carries 71 percent of the spent volume and a 3x gain. This is the value-weighting property doing exactly what it is designed to do, and it is also why a single daily print says almost nothing about how most sellers fared. If output A were an internal exchange consolidation rather than a sale, the entire reading would be an artifact.

Now strip output A. The remaining three give 17 × 60,000 = $1,020,000 over $1,121,000, or SOPR 0.91. Same day, same chain, opposite story.

What Can Make the Interpretation Wrong?

SOPR fails in specific, testable ways rather than generically.

  • Change outputs manufacture realization. Paying 0.1 BTC from a 5 BTC output creates a 4.9 BTC change output. Spending that change later registers as a realized gain or loss on 4.9 BTC that never changed hands.
  • Exchange consolidation swamps the print. When an exchange sweeps thousands of deposit addresses into cold storage, enormous spent volume enters the calculation at whatever cost basis those deposits carried, with no seller behind it.
  • Value weighting hides the median. As the worked example shows, the aggregate can sit far above one on a day when most spenders realized losses.
  • Early-history prices are weakly sourced. Coins created before liquid exchange pricing existed carry cost bases that differ by provider, and those coins have the largest ratio impact.
  • Lost coins never resolve. Coins whose keys are gone hold their cost basis forever and simply never appear in the numerator, silently shrinking the population SOPR describes.
  • It is not independent of price. The spend price appears in the numerator of every term. A sharp price move mechanically shifts SOPR before any behavior changes.

Cross-Network and Provider Comparison

SOPR is native to UTXO ledgers. Bitcoin, Litecoin, and other Bitcoin-derived chains record discrete outputs with an unambiguous creation block, which is precisely the object SOPR needs. On those chains the metric is a measurement.

blockchain data network technology SOPR Explained Realized cross provider
Photo by geralt via Pixabay

Account-based chains have no equivalent. Ethereum stores a single balance per account, so there is no output to date. Providers who publish an Ethereum SOPR impose an inventory convention, usually first-in-first-out, on a balance history they reconstructed from transfers. The result is an estimate whose value depends entirely on that convention, and a last-in-first-out reconstruction of the same account history produces a different number. Treat cross-chain SOPR comparisons as comparisons of two different methodologies that happen to share a name.

Chains with heavy smart-contract activity add a second problem: a large share of balance movement is protocol mechanics, such as collateral posting or automated market maker rebalancing, which an inventory convention will score as realized profit or loss.

Advanced Analytical Methods

Adjusted SOPR

Adjusted SOPR removes outputs whose lifespan falls under a short threshold, most commonly one hour, on the reasoning that coins created and spent within the same hour are almost always wallet or exchange plumbing rather than economic decisions. The adjustment raises the amplitude of the series because it strips out spends whose cost basis is nearly identical to their spend price and which therefore pull the ratio toward one.

Cohort SOPR

Splitting spends by output age produces short-term and long-term holder variants, conventionally divided at 155 days. This is a provider convention chosen from historical spending behavior, not a protocol rule, and it should be restated rather than assumed. The two series frequently point in opposite directions, which the aggregate hides entirely.

Entity-adjusted SOPR

Clustering addresses into entities and dropping spends where the sender and recipient clusters match removes internal transfers, including exchange consolidation. It depends on a label set whose accuracy is unaudited and which changes retroactively when a provider updates its clustering.

Spent volume overlay

Plotting the denominator alongside the ratio is the cheapest reliability improvement available. It immediately separates a meaningful ratio from one computed over trivial volume.

Practical Checklist

  • I know whether this SOPR series strips change outputs.
  • I know the minimum-lifespan filter, or that there is none.
  • The creation price and the spend price come from the same feed.
  • I have spent volume plotted beside the ratio.
  • I checked whether a large single output is driving the print.
  • I split the series by coin age before describing seller behavior.
  • I confirmed the chain is UTXO-based, or I labeled the series an estimate.
  • I checked the window against known exchange consolidation events.
  • I did not describe a reset to one as a buy or sell trigger.

Frequently Asked Questions

What does a SOPR of exactly 1 mean?

It means the coins spent that day were sold, in aggregate, at the same price their current owners acquired them for. Because the ratio is value-weighted, this can also occur when large gains and large losses offset each other rather than because individual spenders broke even.

Why does SOPR ignore coins that do not move?

SOPR is computed only over spent outputs. A coin held all year contributes nothing, which is what makes SOPR a metric about sellers rather than about the market as a whole. For a whole-supply view, use NUPL or supply in profit and loss instead.

What is the difference between SOPR and adjusted SOPR?

Adjusted SOPR removes outputs with a very short lifespan, most commonly under one hour, on the reasoning that coins created and spent within the same hour are wallet or exchange plumbing rather than economic decisions. Removing them increases the amplitude of the series, because those spends have a cost basis nearly identical to their spend price and pull the ratio toward one.

Can SOPR be calculated for Ethereum?

Not directly. Ethereum accounts hold a single balance with no per-unit creation record, so any Ethereum SOPR is a reconstruction that imposes an inventory convention such as first-in-first-out on transfer history. The result depends on the convention chosen, so it is an estimate rather than a measurement.

Do change outputs distort SOPR?

Yes, and this is one of the largest sources of disagreement between providers. Change returned to the sender carries the original acquisition cost basis, so when it is later spent the calculation registers a gain or loss on coins that never changed hands.

Why should spent volume be plotted alongside SOPR?

SOPR is a ratio, so it prints a value regardless of how little moved. On a low-activity day the ratio can swing widely on a handful of outputs. Plotting the denominator shows whether the reading describes meaningful activity or noise.

Is a SOPR reset to 1 a buy signal?

No. SOPR describes what sellers just did. It carries no information about the buyers absorbing that supply, and buyer capacity is what determines whether price holds. Treating the reset as a trigger substitutes a description of past behavior for evidence about future demand.

How do short-term and long-term holder SOPR differ?

They split spends by output age, conventionally at 155 days, and frequently move in opposite directions. Recent buyers capitulating while long-held coins move at a profit produces an unremarkable aggregate that hides both effects. The 155-day boundary is a provider convention, not a protocol rule.

How do transaction fees affect SOPR?

They are generally not deducted, so the metric compares gross value at spend against gross value at acquisition and ignores what the transaction cost. On networks and in periods where fees are trivial relative to the amounts moved, the omission changes nothing measurable. Where fees are large relative to small transfers, the reported ratio slightly overstates the profit actually realized. The effect is concentrated in small transactions, which contribute little to a value-weighted aggregate, so it is a minor rather than a structural distortion.

Why is SOPR bounded below at zero but not bounded above?

Because it is a ratio of the value realized to the value at acquisition, and the realized value cannot be negative. A coin spent at a price approaching zero produces a ratio approaching zero but never below it, so the entire loss range is compressed into the interval between zero and one. Profits have no such ceiling: a coin acquired very cheaply and spent much higher produces an arbitrarily large ratio. The asymmetry means the metric's distribution is skewed and that averages of it are pulled upward by a small number of large values.

References

These sources should be reviewed during editorial verification. They support data structures and methods, not the hypothetical conclusion. Provider formulas, chain rules, and APIs can change. Confirm current documentation before publication.