SOPR stand for Spent Output Profit Ratio. It’s a Bitcoin on-chain metric that shows whether Bitcoin spent outputs (UTXO’s) are being realized in profit or loss. It’s calculated by dividing realized value by the value at creation (price sold / price paid).
The SOPR metric traditionally uses a baseline of 1 instead of 0. For the purposes of the script, I've changed the baseline to 0.
SOPR signals > 0 show the overall market is transaction at a profit.
SOPR signals < 0 show the overall market is transacting at a loss.
SOPR servers as a great short/mid-term indicator.
SOPR Toolkit Features
- Smoothed SOPR
- SOPR Spikes
Smoothed SOPR
By default, ‘Smoothed SOPR’ is shown which applies a smoothing function to SOPR. This helps to visualize the broader SOPR trend.
Smoothed SOPR is calculated by taking the difference between positive and negative SOPR values.
SOPR is split into separate arrays based on if it's above or below the baseline A moving average is then applied to each array, then subtracted to get the difference.
You can also change whether or not a SMA, EMA, or Volume Weighted Simple/Exponential moving average is used. The VWMA is calculated using Glassnode’s BTC Total Transfer Volume metric.
SOPR Spikes
Shows relevant SOPR spikes.
SOPR spikes is calculated by applying a Bollinger Band to SOPR. Only values spike outside the bands are shown.
Adjust the StdDev to show more/less relevant spikes.
Enjoy :)