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.
| Output | BTC | Creation price | Age when spent | Creation value | Spending value |
|---|---|---|---|---|---|
| A | 0.4 | $40,000 | 200 days | $16,000 | $24,000 |
| B | 0.3 | $75,000 | 10 days | $22,500 | $18,000 |
| C | 1.0 | $59,900 | 30 minutes | $59,900 | $60,000 |
| D | 0.2 | $30,000 | 730 days | $6,000 | $12,000 |
| Total | 1.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 calculation | Included outputs | Creation value | Spending value | Ratio |
|---|---|---|---|---|
| All four outputs | A, B, C, D | $104,400 | $114,000 | 1.0920 |
| Exclude outputs younger than one hour | A, B, D | $44,500 | $54,000 | 1.2135 |
| Also remove known internal transfer D | A, B | $38,500 | $42,000 | 1.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 field | What to record | Failure it can expose |
|---|---|---|
| Metric and scope | Provider, identifier, asset and chain | Similar labels with different calculations |
| Population | Age cutoff, entity treatment and exclusions | Raw SOPR compared with a filtered series |
| Arithmetic | Included outputs and both value totals | An equal-output average mistaken for a value ratio |
| Pricing and time | Price source, sampling, UTC window and completeness | Different pricing references or partial periods |
| Version | Download time and revision policy | Later clustering treated as earlier knowledge |
| Economic evidence | Actual sales, ownership and charges, if claimed | Transfer 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.
