Skip to content

AI analysis

Crypto SOPR: what spent-output profit ratios measure

One spending set can produce different profit ratios when weighting and filters change. Recompute SOPR and check what the result can support.

An ivory paper ribbon passes through a lime-lined ceramic arch, with three paper rolls resting behind it.
Illustration for ai analysis; examples in this article are educational.

SOPR, or spent output profit ratio, compares the dollar value of coins when they are spent on-chain with their dollar value when the spent outputs were created. A ratio above 1 indicates an aggregate gain in that observed spending set; below 1 indicates a loss. It is a proxy built from transfers, not proof of a sale, net investor profit, or future price direction.

The useful question is therefore specific: which coins moved, against which earlier valuation, and under which filters? A Bitcoin SOPR chart can help describe the transfers included in its sample. Its headline number cannot supply the missing trade receipts or ownership history.

Start with the output that was consumed

Bitcoin transactions spend previously created outputs. Each output remains unspent until an input consumes it, as the Bitcoin Developer Guide's transaction explanation describes. SOPR looks back from the consumed output to its creation reference. It does not simply compare today's price with yesterday's price.

For an individual output, multiply its BTC quantity by the dollar price assigned to its creation time. Then multiply the same quantity by the price assigned to its spending time. Dividing spending value by creation value gives that output's price ratio, as described in Glassnode's original SOPR explanation.

For the value-aggregated calculation used here:

  • Creation value is the sum of quantity multiplied by creation price across the included outputs.
  • Spending value is the sum of quantity multiplied by spending price across those same outputs.
  • SOPR is total spending value divided by total creation value.

Coin Metrics' SOPR methodology and worked example document this aggregation. Keeping the same set on both sides is essential: today's new outputs are not a replacement for the historical creation values of today's spent outputs.

“Creation price” is a valuation reference. A transfer into a different wallet can create an output without its controller buying anything. Likewise, spending can be a payment, change-making transaction or internal move. Describing every creation as a purchase and every spend as a sale adds economic facts that the raw ledger does not establish.

Recompute a four-output spending set

This example is hypothetical. Four outputs are spent during one complete fictional UTC day. Each uses an illustrative spending price of $60,000 per BTC. The creation prices and ages are stipulated; they are not historical market observations. Output D is known, within this scenario, to move between addresses controlled by the same operator. The purposes of A, B and C remain unspecified.

OutputBTCCreation priceAge when spentCreation valueSpending value
A0.4$40,000200 days$16,000$24,000
B0.3$75,00010 days$22,500$18,000
C1.0$59,90030 minutes$59,900$60,000
D0.2$30,000730 days$6,000$12,000
Total1.9——$104,400$114,000

The value-aggregated ratio is $114,000 divided by $104,400, or approximately 1.0920. Spending value exceeds creation value by $9,600, equivalent to about 9.20% of the included creation value. This is a price-based result for these outputs, before any attempt to identify actual sales or account costs.

The individual ratios tell a less uniform story. A is 1.5, B is 0.8, C is approximately 1.001669 and D is 2. B contributes a $4,500 proxy loss despite the aggregate being above 1. A positive aggregate therefore cannot establish that every participant, or every moved coin, had a positive result.

Nor does 1.0920 mean 9.20% of outputs were profitable. It is a value ratio, not a count of winning outputs, a fraction of profitable owners, or a percentage of total circulating supply.

Check the weighting before comparing charts

An equal-output average of the four individual ratios is approximately 1.3254. That is quite different from 1.0920, although the quantities and prices have not changed.

The value-aggregated ratio can be expressed as an average of individual ratios weighted by their creation dollar values. C carries a $59,900 creation value and sits near 1; D carries only $6,000 yet has a ratio of 2. Giving each one an equal vote changes the question.

Coin Metrics explicitly separates its value-based SOPR from its unweighted SOPROut implementation in the methodology linked above. Treat a median, an equal-output mean and a ratio of value sums as different statistics. Write the metric identifier beside the chart before comparing readings from separate feeds.

Aggregation over time matters too. The average of hourly SOPR ratios need not equal a day's ratio of totals. Hours with different creation-value denominators require different weights. A moving average smooths observations; it does not recover missing underlying totals.

Change the filters while holding prices fixed

Glassnode defines adjusted SOPR, or aSOPR, by excluding outputs with a lifespan shorter than one hour. Its entity-adjusted SOPR instead removes transfers within the same estimated entity. These are different adjustments with different inclusion rules. The Glassnode indicator definitions specify those implementations; an “adjusted” label alone is insufficient.

Applying an age cutoff to our fixture removes C. A further, separate deletion of known internal transfer D leaves A and B:

Sensitivity calculationIncluded outputsCreation valueSpending valueRatio
All four outputsA, B, C, D$104,400$114,0001.0920
Exclude outputs younger than one hourA, B, D$44,500$54,0001.2135
Also remove known internal transfer DA, B$38,500$42,0001.0909

Removing the near-break-even C moves the ratio farther above 1. Removing high-ratio D moves it back toward 1. Filtering does not have a universal upward or downward effect; it changes the observed spending population.

The last row is a deletion sensitivity, not a reconstruction of Glassnode's entity-adjusted series. Its account-based metric methodology also describes averaging references across an entity's holdings. An entity model can therefore change the effective creation basis as well as which transfers count. Our four-row ledger lacks the ownership and inventory information needed to reproduce that process.

Entity labels also remain estimates. Glassnode's clustering explanation describes inferred common control, including the distinction between an entity and its underlying users. The active-addresses versus users guide explains why a custodian's network identity cannot identify each customer behind it. Removing likely self-transfers does not turn the remaining transfers into verified exchange trades.

Account for change and fees outside the headline

A spent UTXO is consumed in full. Part can fund a payment, part can return as change, and part can pay a miner. The developer guide's transaction-fee and change section documents that mechanism. A raw calculation can consequently revalue more BTC than the amount the sender intended to transfer to someone else.

The price ratio is also not a net cash return. Consider a separate hypothetical cash ledger where creation and spending happen to coincide with an actual purchase and sale: 1 BTC costs $59,900, its sale produces $60,000, and total entry, exit and transfer charges are $120. Assume those charges are paid from additional cash so that they do not change the example's BTC quantities.

The corresponding price-only ratio is approximately 1.001669, as in row C. Net cash PnL is $60,000 minus $59,900 minus $120, or a $20 loss. A reading just above 1 does not establish that trading covered its costs. Use the realized versus unrealized PnL reconciliation when the question concerns an actual account result.

Do not subtract a guessed universal fee from an aggregate SOPR reading. You would need the actual transactions, cost allocation and trade evidence for the economic result being claimed.

Keep the spending sample separate from all holdings

Coins that remain unspent do not enter this spending set. An owner can have a large unrealized gain while contributing nothing to the day's SOPR. If no eligible outputs exist, the mathematical ratio has no observations; an interface's missing-value policy must be checked rather than silently substituting 1.

Price and sample composition can also pull in different directions. A day dominated by old, low-creation-price outputs can show a high ratio. Another day dominated by recently created outputs can sit near 1 even at the same spending price. Neither pattern supplies the next day's price.

Keep other on-chain questions separate. The NVT ratio guide compares network value with a defined transfer measure; it does not measure the same profitability proxy. The protocol fees versus revenue guide examines economic flows to protocols and participants. A spent-output revaluation is not protocol revenue.

For account-based assets, inspect the provider's mapping before carrying this Bitcoin-style ledger across chains. The account-based methodology cited above is one documented implementation, not evidence that every chain natively contains Bitcoin-like spent outputs.

Audit one SOPR observation before using it

Save enough information to reproduce the claim, including the extraction time. Glassnode's point-in-time data research explains how processing and updated address clustering can revise observations. A later download can contain knowledge unavailable at an earlier decision time.

Worksheet fieldWhat to recordFailure it can expose
Metric and scopeProvider, identifier, asset and chainSimilar labels with different calculations
PopulationAge cutoff, entity treatment and exclusionsRaw SOPR compared with a filtered series
ArithmeticIncluded outputs and both value totalsAn equal-output average mistaken for a value ratio
Pricing and timePrice source, sampling, UTC window and completenessDifferent pricing references or partial periods
VersionDownload time and revision policyLater clustering treated as earlier knowledge
Economic evidenceActual sales, ownership and charges, if claimedTransfer revaluation presented as net account profit

For your next chart, complete one sentence: “This ratio compares these included transfers at these spending and creation references.” If you cannot fill in the population, weighting and time boundary, resolve those fields before attaching a trading conclusion to the number.

Keep the context with the example.

Each worked example is illustrative, with its sources and assumptions in the article. Read our editorial standards for authorship, verification and corrections.