In this ScriptSpotlight:
On Balance Volume (OBV)
On Balance Volume is a technical analysis indicator best known from the stock market. Swing traders use OBV to identify periods of quiet accumulation.
During such times, entities dubbed “smart money” are buying up the asset in question, but their activity has minimal effect on price.
Traders who are able to use OBV, Wyckoff method or fundamental analysis to discover the “smart money” accumulation is happening can choose to enter the market at a better entry price than breakout traders.
There is also the use of OBV to improve your exit price or minimize the risk of drawdowns. Traders who spot a bearish OBV divergence can sell as the “smart money” starts selling into retail, typically all the while the news sites and social media are still insanely bullish.
How OBV works
On Balance Volume is a way to graphically express the old stock market wisdom: Volume precedes price action.
The OBV chart is a single line that changes proportionally to the last period’s volume.
- Current close price is below last close price (Price goes down): We subtract current traded volume from OBV (OBV goes down)
- Current close price is above last close price (Price goes up): We add current traded volume to OBV (OBV goes up)
How to use OBV in crypto trading
Looking for smart money accumulation, we want to see only small increases in price but large volumes and therefore large changes in OBV.
On the chart, smart money accumulation will show as a divergence of OBV vs price.
OBV Divergence Types
OBV follows the same divergence patterns as RSI divergence:
- Bullish OBV divergence: OBV bottoms out, making higher low, on continually falling price
- Bearish OBV divergence: OBV tops out, making a lower high, on continually rising price
OBV Divergence on TradingView
There is plenty of OBV scripts in the TradingView library.
Here’s one version that is modified precisely to bring up divergences: OBV Oscillator.
The script calculates the regular OBV, as explained above…
src = close obv(src) => cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume) # new obv = if close went up then add volume, # if close went down then subtract volume, # else leave old obv
…and then it makes it into an oscillator by subtracting its own exponential moving average from itself:
obv_osc = (obv(src) - ema(obv(src),length))
This brings up weaker divergences on short time frames that would not always show up on regular OBV.
Does it work?
On shorter timeframes (1H-4H), the oscillator does bring up divergence that the plain OBV does not yet show.
Below is a December 2020 BTCUSD in 2H timeframe.
On the left, there is a clear bearish divergence that is far more pronounced with the oscillator. Plain OBV shows it as well, just much more shallower.
Later on, more to the right, there is another bearish divergence that is not shown on plain OBV at all.
With this weaker divergence you could argue that the price stayed more or less flat anyway, and so this div might not be worth the attention anyway.
When in doubt, zoom out: Let’s take a look at the same situation on a higher timeframe then.
Below is BTCUSD in 4H.
The divergence highlighted on 2H is still there (yellow), and moreover it is now a part of a larger divergence (pink).
The larger div is not shown in plain OBV.
On the classic 1D chart, the differences between OBV oscillator and plain OBV vanish.
It is still worth noting that the oscillator will paint the line bright red to scream at you at that THIS IS NOT GOOD in case you’d prefer to ignore that…which you still kind of could with plain OBV.
This could be one of the three-pushes patterns but I’ll leave the full analysis to you.
That’s right -
It Is Still Just a Divergence
OBV divergence is still a divergence. Divergences are good for a quick glance to see where the market is at. They are not precise enough to give you information like “buy now”.
To get that level of precision, you will need to either use additional different indicators or you can “scale in”/”scale out” of your position.
Scaling in or out is basically DCA of speculative trading.
The OBV oscillator script on TradingView makes OBV-price divergence more prominent on shorter timeframes. If used well, it will give you the chance to get better entry or exit price.
OBV as well as OBV divergences can be traded on at cryptocurrency markets, stock markets and in general anywhere as long as the volume data is public.