OPEN-SOURCE SCRIPT
Bitcoin Macro Oscillator (Cuga)

Bitcoin Macro Oscillator (BMO) — WooCharts-Style Composite Indicator
A single-number macro health check for Bitcoin, combining 4 key signals into one oscillator:
══════════════════════════════════════════════
HOW IT'S CALCULATED
══════════════════════════════════════════════
1. MVRV Z-Score
• Data: On-chain MVRV Ratio (INTOTHEBLOCK:BTC_MVRV)
• Z = (MVRV - μ_4yr) / σ_4yr
• Measures over/undervaluation vs. realized cost basis
2. VWAP Ratio Z-Score
• VWAP = Cumulative (Price × Volume) / Cumulative Volume
• Ratio = (Price / VWAP) - 1
• Z = (Ratio - μ_4yr) / σ_4yr
• Tracks deviation from volume-weighted fair value
3. CVDD Ratio Z-Score (Approximated)
• CVDD Proxy = 200-week SMA (long-term holder cost)
• Ratio = (Price / CVDD) - 1
• Z = (Ratio - μ_4yr) / σ_4yr
• Captures coin-age destruction & HODL cost basis
4. Sharpe Ratio Z-Score
• 90-day rolling Sharpe = (Daily Return) / σ_daily
• Z = (Sharpe - μ_4yr) / σ_4yr
• Measures risk-adjusted momentum quality
══════════════════════════════════════════════
FINAL BMO FORMULA
══════════════════════════════════════════════
BMO = 0.25 × (Z_MVRV + Z_VWAP + Z_CVDD + Z_Sharpe)
• Lookback: 1,460 days (~4 years) for mean & std dev
• Equal weighting → BMO oscillates ~ –2.5 to +2.5
• Optional 1-period SMA smoothing
══════════════════════════════════════════════
SIGNAL LEVELS
══════════════════════════════════════════════
< –1.5 → Deep Oversold (Macro Buy)
–1.5 to –0.8 → Oversold
–0.8 to +0.8 → Neutral
+0.8 to +1.5 → Overbought
> +1.5 → Deep Overbought (Macro Sell)
A single-number macro health check for Bitcoin, combining 4 key signals into one oscillator:
══════════════════════════════════════════════
HOW IT'S CALCULATED
══════════════════════════════════════════════
1. MVRV Z-Score
• Data: On-chain MVRV Ratio (INTOTHEBLOCK:BTC_MVRV)
• Z = (MVRV - μ_4yr) / σ_4yr
• Measures over/undervaluation vs. realized cost basis
2. VWAP Ratio Z-Score
• VWAP = Cumulative (Price × Volume) / Cumulative Volume
• Ratio = (Price / VWAP) - 1
• Z = (Ratio - μ_4yr) / σ_4yr
• Tracks deviation from volume-weighted fair value
3. CVDD Ratio Z-Score (Approximated)
• CVDD Proxy = 200-week SMA (long-term holder cost)
• Ratio = (Price / CVDD) - 1
• Z = (Ratio - μ_4yr) / σ_4yr
• Captures coin-age destruction & HODL cost basis
4. Sharpe Ratio Z-Score
• 90-day rolling Sharpe = (Daily Return) / σ_daily
• Z = (Sharpe - μ_4yr) / σ_4yr
• Measures risk-adjusted momentum quality
══════════════════════════════════════════════
FINAL BMO FORMULA
══════════════════════════════════════════════
BMO = 0.25 × (Z_MVRV + Z_VWAP + Z_CVDD + Z_Sharpe)
• Lookback: 1,460 days (~4 years) for mean & std dev
• Equal weighting → BMO oscillates ~ –2.5 to +2.5
• Optional 1-period SMA smoothing
══════════════════════════════════════════════
SIGNAL LEVELS
══════════════════════════════════════════════
< –1.5 → Deep Oversold (Macro Buy)
–1.5 to –0.8 → Oversold
–0.8 to +0.8 → Neutral
+0.8 to +1.5 → Overbought
> +1.5 → Deep Overbought (Macro Sell)
Open-source script
In true TradingView spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.
Open-source script
In true TradingView spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.