# SOPR

> Source: https://timechain.wiki/wiki/sopr · TimechainWiki, the Bitcoin encyclopedia. (note · on-chain)

> **Spent Output Profit Ratio (SOPR)** is the realized-side analog to [MVRV ratio](https://timechain.wiki/wiki/mvrv-ratio.md) and [NUPL](https://timechain.wiki/wiki/nupl.md): where MVRV characterizes unrealized profit across all UTXOs, SOPR measures realized profit on the subset that actually moves on a given day, as the ratio of price-at-spend to price-at-creation. SOPR > 1 means coins are being spent at a profit on average; SOPR < 1 means at a loss. The aSOPR variant (excluding coins held less than one hour) is operationally favored because it filters custodial-transfer noise. Introduced by Renato Shirakashi (Glassnode, 2019), SOPR has become a flagship realized-side metric, with the LTH-SOPR and STH-SOPR cohort variants carrying more refined signal than the aggregate. Empirically it shows a distinctive support-resistance structure — in bull markets retesting 1 from above and bouncing; in bears retesting 1 from below and rejecting. The metric complements MVRV/NUPL by characterizing what holders are doing in real time rather than what their static positions look like.

---

## Why this note matters

SOPR completes Cluster 1's valuation framework in three ways that MVRV and NUPL alone cannot:

1. **It is the realized-side analog to MVRV's unrealized framing.** MVRV tells what *could* happen if holders capitulated; SOPR tells what *is* happening as they make spend-or-hold decisions in real time.
2. **Its support-resistance structure is operationally tractable.** The "SOPR retests 1 from above and bounces" pattern (bulls) and "retests 1 from below and rejects" pattern (bears) give a trend-confirmation signal that aggregate MVRV/NUPL don't directly produce.
3. **The cohort variants are operationally informative.** LTH-SOPR extremes have been a recurring late-cycle signal for cycle-top calling as long-term holders take large realized profits.

Together with [MVRV ratio](https://timechain.wiki/wiki/mvrv-ratio.md) and [NUPL](https://timechain.wiki/wiki/nupl.md), SOPR characterizes the cost-basis-relative state of the network from complementary angles, all built on [Realized price](https://timechain.wiki/wiki/realized-price.md)'s machinery.

---

## What this metric measures

**The conceptual claim.** SOPR measures the realized profit ratio on Bitcoin that is being spent on a given day. It answers: "of the coins that moved today, what was the average ratio of sale price to acquisition price?"

**The mathematical form.** For each spent output (i.e., each UTXO consumed by a transaction):

$$\text{Output profit ratio} = \frac{P_{\text{spent}}}{P_{\text{created}}}$$

where $P_{\text{spent}}$ is the Bitcoin USD price at the time the UTXO is spent (today) and $P_{\text{created}}$ is the USD price when the UTXO was originally created. Aggregating across all spent outputs on a given day:

$$\text{SOPR}_t = \frac{\sum_{\text{spent today}} P_{\text{spent}} \cdot Q_i}{\sum_{\text{spent today}} P_{\text{created}} \cdot Q_i}$$

where $Q_i$ is the UTXO size. The numerator is the day's realized value (what the spent coins are worth at the spend price); the denominator is the day's cost basis (what the same coins were worth at the create price).

**Interpretation.** SOPR = 1 means the average coin spent today is being spent at break-even. SOPR > 1 means coins are being spent at a profit; SOPR = 1.1 means a 10% average realized profit on spent coins. SOPR < 1 means at a loss; SOPR = 0.95 means a 5% average realized loss.

**What SOPR is *not*.** SOPR characterizes the *spending action*, not the *holding state*. A high SOPR with low transaction volume means a few holders are taking profit at extreme ratios; a high SOPR with high transaction volume means broad-based profit-taking. The metric must be read together with transaction-volume context. The SOPR-by-volume integrated framework (sometimes called "realized profit/loss in dollar terms") is the natural extension.

---

## How it's calculated

**The basic form.** Sum of (spend-price × UTXO-size) divided by sum of (create-price × UTXO-size) across all UTXOs consumed on the day.

**The aSOPR (adjusted SOPR) variant.** Raw SOPR is contaminated by intraday-churn UTXOs — coins created and spent within the same day (exchange internal transfers, payment-channel rebalancing, mempool re-broadcasts, etc.). These coins have spend-price ≈ create-price, which pulls SOPR toward 1 mechanically without reflecting any genuine holder spending decision.

The adjusted SOPR excludes UTXOs held less than one hour. The filter removes most exchange-internal noise. **aSOPR is the operationally-favored variant across all serious on-chain analysis.** When practitioners reference SOPR without qualification, they usually mean aSOPR.

**Cohort-specific SOPR.**

- **LTH-SOPR** — Spent outputs originating from UTXOs held 155+ days. Captures the long-term-holder cohort's spending behavior. LTH-SOPR is operationally critical: LTH-SOPR > 2 has historically marked late-cycle distribution dynamics (LTHs taking 2× or greater realized profits).
- **STH-SOPR** — Spent outputs originating from UTXOs held less than 155 days. Captures the short-term-holder cohort's spending behavior. STH-SOPR is more volatile and noisier than LTH-SOPR; STH cohort spending tracks current price reactions.

**Realized profit/loss in dollar terms.** A related construction: instead of the SOPR ratio, the metric reports the *dollar value* of profit (or loss) realized on a given day. Mathematically: numerator − denominator from the SOPR formula. This is sometimes called "realized profit" or "realized loss" and is the volume-weighted complement to the SOPR ratio. SOPR plus realized-profit-in-dollar-terms gives a more complete picture of spending dynamics than either alone.

**Data-provider variants.** Glassnode, Coin Metrics, Checkonchain, and other platforms publish SOPR and aSOPR with the standard methodological choices documented in their realized-cap pages (see [Realized price](https://timechain.wiki/wiki/realized-price.md)). Differences are small.

---

## What it tells you

**The bull-market support-resistance pattern.** In bull markets, SOPR (or aSOPR) tends to oscillate above 1 with periodic retests of the 1 level from above:

- **Above 1 baseline**: holders are spending at profit; trend is up
- **Retest of 1 from above**: brief consolidation; holders test break-even spending
- **Bounce off 1**: long-term holders refuse to sell at a loss; trend resumes upward

The "SOPR retest 1 and bounce" pattern has been one of the more reliable trend-confirmation signals across the 2017, 2020-2021, and 2024-2025 cycles.

**The bear-market support-resistance pattern.** In bear markets, SOPR oscillates below 1 with periodic retests of the 1 level from below:

- **Below 1 baseline**: holders are spending at loss; trend is down or consolidating
- **Retest of 1 from below**: brief rally to break-even spending levels
- **Rejection at 1**: holders take profit at break-even, generating selling pressure; trend resumes downward

The "SOPR retest 1 and reject" pattern has been a recurring bear-market continuation signal.

**Cycle-top signals via LTH-SOPR.** Long-term-holder SOPR has been a more reliable cycle-top indicator than aggregate SOPR. LTH-SOPR > 2 (LTHs realizing 2× or greater profits on spent coins) has historically marked late-cycle distribution dynamics. Specific late-cycle peaks:

- **2017 cycle**: LTH-SOPR peaks above 2.5 in late 2017
- **2021 cycle**: LTH-SOPR peaks above 2 in April 2021 and again in October-November 2021
- **2024-2025 cycle**: LTH-SOPR spiked above 2 at multiple points into the August-2025 peak, though at lower magnitude than prior cycles

**Cycle-bottom signals via aggregate SOPR.** Aggregate SOPR below 0.95 (i.e., average 5%+ realized losses) has historically marked deep capitulation. The metric typically does not stay below 0.9 for extended periods; persistent sub-0.9 readings have marked the deepest historical bottoms.

**Capitulation completion signals.** When SOPR (or aSOPR) crosses back above 1 after an extended sub-1 period in a bear market, the cross has historically been a reasonable accumulation signal. The reverse — SOPR persistently below 1 after a long above-1 stretch — has been a bear-market initiation signal.

---

## Empirical track record

**Cycle peaks via LTH-SOPR.** The metric's most operationally useful application is LTH cohort spending at late-cycle. LTH-SOPR peak readings:

| Cycle | LTH-SOPR peak | Approximate spot at peak | Lead/lag to spot peak |
|---|---|---|---|
| 2017 | ~2.5-3 | $19,000 | Coincident |
| 2020-2021 (Apr peak) | ~2.5 | $63,000 | Coincident with intra-cycle peak |
| 2021 (Nov peak) | ~2 | $69,000 | Coincident with cycle peak |
| 2024-2025 | ~2 (peaks above 2, attenuated) | ~$124,000 (Aug 2025) | Coincident |

LTH-SOPR > 2 has consistently coincided with intra-cycle or full-cycle peak dynamics, though the magnitude of the LTH-SOPR peaks has declined alongside MVRV and NUPL peaks across cycles (consistent with [Diminishing returns thesis](https://timechain.wiki/wiki/diminishing-returns-thesis.md)).

**Cycle bottoms via aSOPR.** The metric's bottom-signaling has been less precise than its top-signaling, but the support-resistance pattern at SOPR = 1 has been reliable:

| Cycle | aSOPR pattern at bottom |
|---|---|
| 2018-2019 | Multi-month sub-1 stretch; cross above 1 in early 2019 marked accumulation phase |
| 2022 | Sub-1 stretch through H2 2022; cross above 1 in Jan 2023 marked accumulation phase |

**SOPR resistance in bear markets.** The "retest 1 and reject" pattern has been reliable as a bear-market continuation signal across the 2018, 2022, and (partial) post-2024 corrections. Specific instances of resistance rejection have produced ~30-50% downside continuation in some cases.

**Cross-validation with MVRV/NUPL.** SOPR extremes typically align with MVRV/NUPL extremes. The cross-validation is operationally useful: when aSOPR, MVRV, and NUPL all align at extreme readings, the cycle-positioning signal is much stronger than when any single metric is at an extreme.

---

## Limitations

**Daily-frequency noise.** SOPR is a daily metric and is noisier than the smoother MVRV and NUPL. A single day's reading is rarely operationally meaningful; multi-day moving averages (7-day or 14-day) are the operationally-used forms.

**Volume context required.** SOPR is a ratio; it does not capture absolute volume. A SOPR of 1.5 with low transaction volume is meaningfully different from a SOPR of 1.5 with high transaction volume. The metric should be read together with transaction-volume context, ideally via realized-profit-in-dollar-terms.

**The same cost-basis-proxy limitations as MVRV/NUPL.** SOPR inherits [Realized price](https://timechain.wiki/wiki/realized-price.md)'s limitations around custodial transfers, UTXO consolidation, transaction batching, etc. The aSOPR adjustment removes most exchange-internal noise but not all of it.

**ETF and custodial-cohort blindness.** Bitcoin held in ETF and custodial-exchange wallets shows up on-chain at the wallet level. SOPR captures wallet-level spending, not beneficial-owner spending. As more Bitcoin sits in custodial structures, SOPR's signal increasingly reflects custodial operational behavior rather than holder economic decisions.

**Cohort definition arbitrariness.** The 155-day LTH/STH threshold is empirically calibrated but somewhat arbitrary. Cohort SOPR variants depend on the threshold; alternative thresholds (90 days, 180 days, 1 year) produce different cohort-SOPR readings. The framework is robust to small threshold changes but the specific calibration matters at the margin.

**Support-resistance pattern is not deterministic.** "SOPR retests 1 and bounces" has been reliable historically but is not a structural law. Sufficiently severe market conditions could see SOPR break through 1 persistently in either direction without the support-resistance pattern holding. The 2022 bear market saw multiple sub-1 episodes; the pattern was statistical, not deterministic.

**Top-calling is operationally noisy at aggregate level.** Aggregate SOPR top-signaling is less precise than LTH-SOPR. Users relying on aggregate SOPR for cycle-top calls may receive premature signals; LTH-SOPR is operationally more useful for that specific decision.

**Cycle attenuation.** Like MVRV and NUPL, SOPR peak magnitudes have declined cycle-over-cycle. The 2017 LTH-SOPR peaks reached ~2.5-3; the 2021 peaks reached ~2-2.5; the 2024-2025 cycle has produced lower peaks consistent with the broader [Diminishing returns thesis](https://timechain.wiki/wiki/diminishing-returns-thesis.md) pattern.

---

## Counter-arguments and tensions

### "SOPR is just MVRV in motion"

**The argument:** SOPR measures realized profit ratios on spent outputs; MVRV measures unrealized profit ratios on held outputs. The two metrics share the same cost-basis foundation. SOPR is essentially MVRV for moving coins. Building it as a separate primary note is redundant.

**Response:** Partially right but understated. The metrics share a foundation but characterize different behaviors: MVRV captures the static state (what holders *could* realize if they sold); SOPR captures the dynamic action (what they *are* realizing as they spend). The behavioral content is genuinely different. The support-resistance pattern at SOPR = 1 has no direct MVRV analog; the cohort variants behave differently than MVRV's cohort variants because spent-output dynamics are not identical to held-output dynamics. The redundancy critique is partially right at the aggregate-trend level but understates the metric's distinctive content.

### The intraday-churn-pollution problem

**The argument:** Raw SOPR is heavily contaminated by exchange internal transfers, payment-channel rebalancing, mempool re-broadcasts, and other intraday-churn UTXOs that have spend-price ≈ create-price. The aSOPR adjustment removes UTXOs held less than one hour, but the one-hour threshold is somewhat arbitrary. Different thresholds produce different aSOPR values.

**Response:** Real concern. The one-hour threshold is empirically chosen; it removes most exchange-internal noise but not all. Alternative thresholds (one day, one week) produce different metric variants. The honest reading is that aSOPR is the operationally favored form because the one-hour threshold has empirically produced reliable signals; the specific calibration is robust within reasonable ranges but not theoretically derived.

### "SOPR support-resistance is technical-analysis dressed up as on-chain"

**The argument:** The "SOPR retests 1 and bounces" pattern is essentially technical-analysis support-resistance applied to an on-chain metric. The pattern's reliability is not stronger than typical technical-analysis patterns and may share their limitations (subjective fitting, hindsight bias, post-hoc rationalization).

**Response:** Partially right and worth taking seriously. The pattern is mechanistically more substantive than typical TA support-resistance because the level (SOPR = 1) has behavioral content (holder reluctance to spend at a loss). The mechanism is real: when SOPR drops to 1 in a bull market, holders who would otherwise sell at break-even refuse; the resulting reduction in selling pressure is the support. But the pattern is not deterministic, and analysts can over-fit specific instances in retrospect. The honest reading is that the pattern is operationally useful at the trend-context level, not at the precise market-timing level.

### Cycle attenuation and threshold-stability

**The argument:** LTH-SOPR peaks have declined cycle-over-cycle, like MVRV and NUPL peaks. The historical threshold (LTH-SOPR > 2 as a late-cycle signal) has been less and less reliably reached. The framework's specific thresholds are migrating with cycle attenuation.

**Response:** Real ongoing recalibration problem. The metric remains useful but the specific thresholds need adjustment. The cohort-specific framework partially compensates because LTH-cohort dynamics may be less attenuated than aggregate dynamics, but the cohort variants are also affected.

### "SOPR signals are too noisy for operational use"

**The argument:** SOPR is a daily metric and exhibits substantial day-to-day noise. Even aSOPR with multi-day smoothing produces signals that retail users may interpret as more precise than they are. The metric's operational use requires careful smoothing and trend-context that less-sophisticated users may not apply.

**Response:** Right as critique of unsophisticated use. The metric is operationally useful for trend-context positioning, not for precise market-timing. Users who treat single-day SOPR readings as definitive will be misled. The systematic frameworks (Check, Ryan) deploy SOPR with 7-day or 14-day smoothing and integrate it with multiple complementary metrics; this is the appropriate use pattern.

### "Custodial and ETF era has broken SOPR"

**The argument:** Post-2024 ETF flows and broader custodial-institutional adoption have introduced large custodial wallet movements that show up in SOPR without reflecting holder economic decisions. The aSOPR adjustment doesn't filter these custodial movements; the metric's signal is contaminated.

**Response:** Partially right. Custodial wallet movements show up in raw SOPR; the aSOPR adjustment removes the very-short-duration churn but not the longer-duration custodial rebalancing. The cohort variants (LTH-SOPR especially) partially compensate because long-held UTXOs are less likely to be ETF-creation/redemption-cycle coins. The framework needs adaptation; LTH-SOPR is increasingly the operationally useful variant in the post-ETF regime.

### Statistical-robustness shared with MVRV/NUPL

**The argument:** SOPR shares MVRV and NUPL's general statistical concerns — the metric is mean-reverting around the level 1 (break-even) but the precise reliability of the support-resistance pattern is not formally proven across diverse market regimes.

**Response:** Right. The mean-reverting property at level 1 is genuine (holders' behavioral reluctance to sell at a loss is a real mechanism), but the precise calibration of the support-resistance pattern depends on the historical sample. Future cycles may produce regime changes that break the pattern. The framework should be deployed with appropriate epistemic humility.

---

## Open questions for further development

- **How should SOPR cohort variants be adapted for the post-ETF regime?** ETF-aware cohort frameworks that explicitly separate ETF coins from self-custody coins would strengthen the metric's signal.
- **What is the appropriate weight on aggregate SOPR vs LTH-SOPR vs STH-SOPR in operational decision-making?** Cohort variants carry more signal but the integration framework is not fully codified.
- **Can the support-resistance pattern at SOPR = 1 be formally tested?** The pattern is empirically observed; rigorous statistical testing of its reliability across market regimes would strengthen the framework.
- **How does SOPR interact with macro extremes?** The integration with [Bitcoin and global liquidity](https://timechain.wiki/wiki/bitcoin-and-global-liquidity.md) and [Bitcoin and the ISM PMI cycle](https://timechain.wiki/wiki/bitcoin-and-the-ism-pmi-cycle.md) is the topic of [Using on-chain data for macro positioning](https://timechain.wiki/wiki/using-on-chain-data-for-macro-positioning.md).
- **Should the aSOPR exclusion threshold (one hour) be recalibrated?** Alternative thresholds may produce more or less reliable signals in the contemporary regime; empirical work on threshold sensitivity is an open direction.
- **What is the appropriate way to communicate SOPR's daily-noise problem to less-sophisticated users?** The metric is operationally useful with smoothing and context; communication frameworks for retail users need careful design.
- **How does SOPR interact with the [Coin Days Destroyed](https://timechain.wiki/wiki/coin-days-destroyed.md) framework?** Both metrics characterize spending dynamics from different angles (SOPR weighted by profit ratio; CDD weighted by age × volume); their integration is an open direction.

---

## Canonical sources for this note

**Primary framework sources**

- Renato Shirakashi, "Introducing SOPR" (Glassnode, 2019) — the canonical introduction of the metric
- Glassnode SOPR documentation — methodological detail and ongoing analysis
- Checkonchain platform — James Check's analytical framework integrating SOPR with MVRV, NUPL, and cohort-specific spending dynamics
- Coin Metrics State of the Network reports — adjacent on-chain analyses

**Practitioner literature**

- James Check, extensive Glassnode Week On-Chain newsletters during the 2020-2023 tenure — applied SOPR analysis across multiple cycles
- James Check, ongoing Checkonchain platform analysis 2024+
- Ryan (On-Chain Mind), various video analyses applying SOPR accessibly
- Various Bitcoin Magazine and Bitcoin Layer pieces engaging SOPR-based analysis

**Adjacent on-chain literature**

- Various Glassnode pieces on aSOPR, LTH-SOPR, and STH-SOPR variants
- Realized profit/loss in dollar terms — adjacent realized-side metric, often presented alongside SOPR
- Various analyses of SOPR cross-validation with MVRV and NUPL

**Critical perspectives**

- Engagements with SOPR's daily-noise problem and the need for smoothing
- Critiques of the support-resistance pattern as technical-analysis dressed up
- Within-Bitcoin debates about cycle-attenuation effects on SOPR thresholds

---

## Related notes

- [On-chain analytics and market psychology](https://timechain.wiki/wiki/on-chain-analytics-and-market-psychology.md) — sub-MOC parent
- [Realized price](https://timechain.wiki/wiki/realized-price.md) — definitional foundation; SOPR uses the same cost-basis machinery on spent outputs
- [MVRV ratio](https://timechain.wiki/wiki/mvrv-ratio.md) — unrealized-side analog; complementary perspective on the same cost-basis state
- [NUPL](https://timechain.wiki/wiki/nupl.md) — alternative valuation metric; closely related to MVRV
- [HODL waves](https://timechain.wiki/wiki/hodl-waves.md) — cohort framework; SOPR cohort variants build on cohort identification
- [Long-term vs short-term holder behavior](https://timechain.wiki/wiki/long-term-vs-short-term-holder-behavior.md) — produces cohort-specific SOPR variants (LTH-SOPR, STH-SOPR)
- [Coin Days Destroyed](https://timechain.wiki/wiki/coin-days-destroyed.md) — complementary spending-dynamics metric; volume-and-age-weighted analog
- [Whale behavior](https://timechain.wiki/wiki/whale-behavior.md) — entity-weighted cohort framework
- [Exchange flows](https://timechain.wiki/wiki/exchange-flows.md) — custodial-flow framework; complements SOPR
- [Miner flows](https://timechain.wiki/wiki/miner-flows.md) — miner-cohort framework
- [Sentiment indicators](https://timechain.wiki/wiki/sentiment-indicators.md) — off-chain sentiment proxies
- [Psychological phases of the market cycle](https://timechain.wiki/wiki/psychological-phases-of-the-market-cycle.md) — synthesis where SOPR extremes mark phase transitions
- [Using on-chain data for macro positioning](https://timechain.wiki/wiki/using-on-chain-data-for-macro-positioning.md) — operational bridge to macro frameworks
- [The Power Law model](https://timechain.wiki/wiki/the-power-law-model.md) — longer-horizon trajectory framework
- [Four-year halving cycles](https://timechain.wiki/wiki/four-year-halving-cycles.md) — cycle structure SOPR extremes anchor
- [Diminishing returns thesis](https://timechain.wiki/wiki/diminishing-returns-thesis.md) — cycle-over-cycle attenuation framework SOPR peaks empirically demonstrate
- [Bitcoin and global liquidity](https://timechain.wiki/wiki/bitcoin-and-global-liquidity.md) — macro framework
- [Monetization S-curve](https://timechain.wiki/wiki/monetization-s-curve.md) — adoption framework
- [Portfolio approaches to Bitcoin](https://timechain.wiki/wiki/portfolio-approaches-to-bitcoin.md) — practical allocation framework SOPR signals inform
- [James Check](https://timechain.wiki/wiki/james-check.md) — primary contemporary anchor; SOPR framework developer
- [Ryan - On-Chain Mind](https://timechain.wiki/wiki/ryan-on-chain-mind.md) — adjacent contemporary anchor
- [Dylan LeClair](https://timechain.wiki/wiki/dylan-leclair.md) — adjacent on-chain voice
- [Giovanni Santostasi](https://timechain.wiki/wiki/giovanni-santostasi.md) — Power Law modeler; adjacent
- [Plan B](https://timechain.wiki/wiki/plan-b.md) — S2F framework (engaged critically)
