Bitcoin SOPR and on-chain activity

SOPR and market price

The ratio between the value at spend and the value at creation of the coins moved each day, weighted by value -- not the average of each coin's individual ratio. Above 1 (reference line), the set of coins spent that day realized a net profit; below, a net loss.

Coin Days Destroyed

The sum of the BTC value times the days each coin had been sitting still before it moved that day -- a 1 BTC coin sitting for 100 days destroys 100 "coin-days" when spent. Log scale: spikes, when very old coins move, can be several orders of magnitude larger than a normal day.

Dormancy

Coin Days Destroyed divided by the total BTC transferred that day -- normalizes for volume, to tell apart "a few very old coins moved" from "a lot of BTC moved overall".

Realized profit and loss

For every coin spent, its BTC value times the difference between the price at spend and the price at creation -- profit and loss are accumulated separately and never offset against each other, so the same day can show both at once.

What do these four numbers measure?

SOPR, Coin Days Destroyed, dormancy and realized profit/loss all come from walking, day by day, every coin that changes hands on the chain -- unlike Realized Price or HODL waves, which are a snapshot of the UTXO set at a single point in time, this is a continuous tally of movements. The four measure different angles of the same question: when coins move, with how much profit or loss, and how "old" they were.

How we compute this

We walk every block from our own Bitcoin Core node, requesting the full detail of every transaction -- for every input, that includes the height and value of the UTXO it spends, with no need for a separate transaction index. From that we reconstruct, day by day, which coins were spent, what they were worth at creation and at spend, and how long they had been sitting still. Coinbase transactions (the first in every block, the miner's reward) are excluded: they don't spend any prior coin.

The creation and spend price of every coin are looked up by their real date, using the same interpolation and price history already used elsewhere in the project -- not exact prices per block. Value that couldn't be evaluated (missing date or price) is excluded from all four metrics alike -- never filled in with a made-up value.

What this page cannot show yet

The scanner starts on January 1, 2011 -- before that date there's no reliable market price to compute profit or loss against -- and advances block by block toward the current chain height, a little at a time. Until it's done, the series stops at the coverage date shown above; there's no data past that yet. It also doesn't yet distinguish short-term from long-term holders (LTH-SOPR/STH-SOPR) -- a possible extension on the same base, with no date set.

How this relates to the Score

This doesn't feed into the NodeWitness cycle Score yet: it's a new, independent series, computed from scratch by walking the chain block by block -- a possible future indicator, not part of the Score's calculation yet.

NodeWitness Network page