Skip to content
6 min read Bitcoin

Spot ETFs and Global M2: Thresholds for Overriding the Bitcoin Halving Cycle

Discover how Global M2 and Spot ETF netflows are overriding the traditional Bitcoin halving cycle. Learn the thresholds, SQL formulas, and how to trade them.

Discover how Global M2 and Spot ETF netflows are overriding the traditional Bitcoin halving cycle. Learn the thresholds, SQL formulas, and how to trade them.

TL;DR

The signal rule

Formula:

Cycle Strength = (Global M2 YoY Growth > 0%) + (Weekly ETF Netflow > 0)

Thresholds and window:

Examples:

SQL / Code snippet

Calculates weekly Global M2 YoY growth against weekly Bitcoin price (BigQuery-compatible). This version actually aggregates to weekly data so the YoY LAG(52) is consistent.

-- Weekly (Sunday) aggregation + YoY change (52 weeks)
WITH price_daily AS (
  SELECT
    DATE(datetime) AS day,
    c AS price
  FROM `tech-web3-analytics-prod.abstraction_price.btc_usd_index-price_day`
  WHERE DATE(datetime) >= '2012-01-01'
),
m2_daily AS (
  SELECT
    DATE(event_timestamp) AS day,
    AVG(value) AS m2_value
  FROM `poc_stage.tradfi_fred_dataset`
  WHERE type = 'm2' AND DATE(event_timestamp) >= '2012-01-01'
  GROUP BY 1
),
price_weekly AS (
  SELECT
    DATE_TRUNC(day, WEEK(SUNDAY)) AS week,
    AVG(price) AS price
  FROM price_daily
  GROUP BY 1
),
m2_weekly AS (
  SELECT
    DATE_TRUNC(day, WEEK(SUNDAY)) AS week,
    AVG(m2_value) AS m2_value
  FROM m2_daily
  GROUP BY 1
)
SELECT
  w.week,
  p.price,
  100 * SAFE_DIVIDE(p.price - LAG(p.price, 52) OVER (ORDER BY w.week),
                    LAG(p.price, 52) OVER (ORDER BY w.week)) AS price_yoy,
  100 * SAFE_DIVIDE(m.m2_value - LAG(m.m2_value, 52) OVER (ORDER BY w.week),
                    LAG(m.m2_value, 52) OVER (ORDER BY w.week)) AS m2_yoy
FROM (SELECT week FROM m2_weekly UNION DISTINCT SELECT week FROM price_weekly) w
LEFT JOIN price_weekly p USING (week)
LEFT JOIN m2_weekly m USING (week)
ORDER BY 1 DESC;

Key definitions

How to interpret this metric

Historical examples (what worked, what didn’t)

How to use it in practice

Common pitfalls

Halving supply shock vs fiat liquidity

FAQ

Minimal conclusion

Axel Adler Jr