⚙ A Deep Dive on the SOPR On-Chain Oscillator
Tracking the profitability of the money-making ledger, in real time.
Over the past years, data pioneers have discovered ways of approximating a “price-to-earnings”-like ratio for bitcoin, tracking waves of change in asset ownership, assessing the velocity of money and much more.
But from a trader’s perspective, many indicators, despite revealing, act as no more than confirmation signals. The lagging nature of some popular on-chain metrics is frustrating to operators used to the sensitivity of order book data.
I suspect such peculiarity is not inherent to on-chain information more than it is a byproduct of the tools we've used so far.
Renato Shirakashi recently put forth some analysis on an indicator he called SOPR — Spent Output Profit Ratio. We’ve been working on it in parallel (calling it “On chain P&L”), and share some findings below. Let’s start with the reasoning behind the metric, then deep dive on its recent signals.
📅 🔥 Tweaking CoinDays Destroyed
CoinDays Destroyed is a popular bitcoin metric. It relies solely on on-chain data to give us an approximation of hoarding-ness in the cybereconomy. It is peculiarly hard to game, and indifferent to market price manipulation.
The earliest mentions to CoinDays Destroyed I could find are this Hacker News thread and StackExchange question in 2011. For some years, live charts were up on blockchain.info and other sites. They’re not so easy to find, these days, though you can still get CSV data from Blockchair.com.
Rumor says years ago, you could still transact without paying fees but only by paying with “coindays”, since transactions that destroyed the most coindays had the highest priority among some miners.
CoinDays Destroyed is found by getting all UTXOs spent in a given period, and summing up the days they’ve been dormant for (current date minus the date in which the UTXO was created times the amount in bitcoin, for each UTXO).
In the chart, we can see that long-term holders tend to increase movements into exchanges, over-the-counter trades or even into new addresses as price goes up.
That’s another way of saying that smart money (longtime holders) realises profits on the way up, not the way down.
An interesting observation is that, both in the 2014 and 2017 peaks (and in 2013, less markedly), CDD showed double tops. If I were to guess, I’d say the second tops are long time holders who’ve seen the movie before, anticipated a long bear market ahead after a clear break of the parabola, and “burned” some old coins — after whales had been doing so on the way up.
That second spike looks like a good place to get some of your coindays to be destroyed, after the next top.
We also notice at least one inorganic spike, derived from a large exchange moving its cold funds (Coinbase moved 5% of all BTC in circulation in early December 2018). It’s steepness on the chart is distinguishable.
Another hypothesis (too few data points to consider) is illustrated in pink: that which there is a resistance in the level of coindays destroyed, tested at least a couple times during crypto-winters, that must be broken to kickoff bull season.
🐢 The lagging nature of on-chain metrics
The incompleteness intrinsic to CDD is that gives us a measure of time destroyed. But it obviously doesn’t tell the full story as for the value destroyed (or created) in a series of transactions.
In this sense, a subset of indicators complement it: those which track the financial health of the blockchain as a money-making ledger.
- David Puell’s MVRV, for instance, divides the market value of all coins in circulation by the value they summed up to when they last moved;
- Awe & Wonder’s MVRV-z tracks the rate of change in this ratio in relation to a moving average;
- Tuur Demeester’s Unrealised P&L subtracts realised capitalisation from market capitalisation, and divides the result by the market cap to arrive at a percentage of losses/gains among all current investors.
In all of these, though, the full supply of circulating coins is taken into account. On the other hand, Coindays Destroyed reveals granular behaviour specifically because it only spikes up when time is effectively consumed — it doesn’t care about the passive accumulation of days.
To measure the profitability of actual value exchanging activities on the blockchain, one can think of an alternative approach, rather than an approximation that also includes a stash of inert coins.
That is to measure the combined fiat value that spent outputs accrued or lost during the time since they were created. This gives us a granular view of the fiat value created / destroyed on-chain through time.
For each UTXO spent within the given timeframe, one simply calculates
bitcoin amount * current market price — market price when UTXO was created
(while discounting change volume from the actual bitcoin amount).
🎱 The SOPR (10D MA)
Disclaimer: to avoid processing every single UTXO, what we’re doing here is to calculate an average of days destroyed per block, approximate a realised price for that block, and plot current block price minus the realised block price times the amount of bitcoin transacted in that block.
That is granular enough for this exercise, although it might bother the purists: we’re not assessing the profitability of literally each individual transaction.
Below is a chart of the SOPR on a 10-days simple moving average:
It is remarkably better at calling out tops than bottoms.
As Renato Shirakashi notes, the oscillator converges to 0%, and tests a line slightly above it as a resistance, during bear markets; while bouncing on a line slightly below it as a support, during bear-to-bull reversals.
Points of contact with such threshold can be useful in highlighting local tops and bottoms, while the mentioned resistance-to-support reversals are the clearest signals of a new bull cycle beginning.
Above we see the shifting support / resistance zones across market cycles, as well as our current (May 2019) attempt to break a lasting resistance.
16th of January 2019 saw the 2nd worst day ever for the SOPR indicator, losing only to a -55% day in early 2013. On the 10D SMA, the day marked the lowest point ever.
The charts also reveal 2 unusual patterns:
- The SOPR has found a resistance in 2 tops, and the 3 touch on it was the last before it broke upwards into a bull run, in both 2012 and 2014–15 (we arguably touched for a 3rd time on the current resistance).
- Triple tops on the SOPR don't end well, as they've almost perfectly called out the tops of January 2012, early 2013, January 2014, and, arguably, late 2017.
We wouldn’t bet our chips on any of these repeating in the future, of course. The takeaways are that you won’t see (1) uptrends sustaining higher tops for long, nor (2) resistances holding more than a handful of touches.
Presently, we’ve overcome (and have been holding so far) the 0% threshold in both the 10D and 30D moving averages, which suggests the medium-term downtrend has been broken and a bottom has been found. We’re still to see if the threshold will act as a resistance or if this is merely a fake out. To me, it looks like the former.
The charts above makes the (assumed) capitulation of late 2018 look more pronounced than price action suggested, with the daily SOPR dipping to near negative 50% a couple of days in December 2018 and January 2019 (see daily chart on the very bottom).
🌡 On SOPR Volatility
SOPR Volatility seems to be a useful thermometer to detect seasonal shifts in Bitcoin’s market mood.
From preliminar data, low SOPR volatility has historically been a synonym with accumulation phases (which is kind of self-explanatory), while consistent increases (e.g. higher lows, see 2015 data) denote a shift towards bull spirit.
I suspect the previous bull markets have also peaked in SOPR volatility astoundingly close to their tops (right after them). This is all going to be the subject of a further piece, once we have more conclusive data.
📝 Appendix: a step-by-step example
Here’s a step-by-step explanation of the SOPR indicator.
The chart below displays a daily view of the SOPR, expressed in the blue line. In orange, we see the average price for spent outputs in that day. In purple, the average “previous price” for spent outputs in that day.
The SOPR is the orange line (current price) minus the purple line (previous price). It is best understood as an index of profitability for every transaction in a given day (or time window).
Let’s look at UTXO A, amounting to 1 BTC, created in March 2017, when bitcoin was priced at U$1.000. UTXO A was moved today, in May 2019, with bitcoin at U$5.500. This transaction represented 790 coindays destroyed. It also represented +U$4.500 (1*(5.500–1.000)) of SOPR.
Now let’s assume we had 2 transactions in the blockchain today. The first one is UTXO A. The second one is UTXO B, amounting to 3 BTC, created in December 2017, when bitcoin was priced at U$15.000. 17 months (540 days) later, this transaction represented 3*540=1620 coindays destroyed, and also -U$28.500 of SOPR (3*5.500–3*15.000) — let’s ignore change volume for now.
In aggregate, today would be a fairly above average day for coindays destroyed, with the indicator at 2410 days for 4 coins moved (average dormancy is usually below 180 days) — allowing us to infer that likely a lot of value creation has been realised by hoarders.
However, the SOPR tells a different story, sitting at a bright-red -U$24.000 and revealing a good amount of materialised fiat losses. In relative terms, the SOPR today was of ~-48%. There’s more blood than smiles on the streets.
The distinction between the two metrics is specially useful between market cycles, when price may have corrected severely and coindays destroyed are not the most sensible way to gauge the financial prosperity of the blockchain.
The SOPR is similar to the MVRV (Market Value to Realised Value) in intent, since it attempts to capture how much underwater or profitable is the market. But it is narrowed down in scope from all circulating supply to active value exchanging activities.
In the example above (UTXO A and UTXO B), even if there’s a million more inert UTXOs out there, and the MVRV today sits at 0.90, showing us the current set of UTXO owners is on an average of 10% loss, the SOPR is able to uncover a more granular measure of how optimally bitcoiners are doing in fiat terms.