All articles
vector regime backtesting on-chain bitcoin

BG Vector: A Bitcoin Risk-On / Risk-Off Signal Built From On-Chain Data

Most Bitcoin on-chain charts answer a narrow question. MVRV tells you whether Bitcoin is expensive relative to its cost basis. SOPR tells you whether coins are being sold at a profit. Net Capital Flow tells you whether money is entering or leaving the network. What none of them tells you on its own is the question most people actually have: should I be holding bitcoin right now, and how much?

BG Vector, now live at bgeometrics.com/vector and in the API, is our answer to that question. Once a day it says whether Bitcoin is risk-on or risk-off, places the market in one of four states, and suggests a BTC / cash allocation. Every input is a public BGeometrics metric, the method is written down below, and the backtest was run on years of data that were never used to tune it.

Two axes: momentum and valuation

A Bitcoin market can be cheap and still falling, or expensive and still rising. A single score blends those two situations together, which is why BG Vector uses two separate axes.

The fast axis decides whether Bitcoin is risk-on or risk-off. It combines six inputs that describe trend and the flow of capital:

  • Bitcoin price vs its 200-day moving average, the classic trend filter.
  • The 50-day / 200-day cross, to check that the medium-term trend agrees.
  • STH MVRV: are recent buyers in profit on average?
  • STH SOPR (7-day): are recent buyers selling at a profit or at a loss?
  • Net Capital Flow over 30 days, relative to market cap: is new money coming into Bitcoin?
  • The 30-day change in Realized Cap: how fast is the network’s aggregate cost basis growing?

Each input is oriented so that zero is neutral and scaled with tanh(x / RMS), where the RMS is computed only from data before that day. We deliberately did not use percentiles here, as we did for the Regime Score. A percentile throws away the sign: “price above its 200-day average” or “capital flowing in” should always count as positive, no matter how it compares with history. The six scores are averaged and smoothed with a 7-day EMA. Above zero, Bitcoin is risk-on; below zero, risk-off.

The slow axis is the Bitcoin Regime Score, our 0–100 temperature of the cycle, together with the share of short-term holder supply sitting at a loss. It doesn’t decide the direction. It decides how strong the call is.

Four Bitcoin market states

Crossing the two axes gives four states, each with a suggested allocation:

StateWhenAllocation
AccumulationRisk-on, valuation below 65100% BTC
EuphoriaRisk-on, valuation 65 or above60% BTC
CautionRisk-off0% BTC
CapitulationRisk-off and valuation 30 or below, or 75%+ of STH supply at a loss30% BTC

The asymmetry is intentional. When the trend is up but the cycle is hot, BG Vector trims rather than exits, because Bitcoin tops tend to run further than valuation models expect. When the trend is down and the market is already cheap or short-term holders are capitulating, it starts to buy the fear with a partial position instead of waiting for the trend to turn.

Since 2013, Bitcoin has spent 46% of its days in Accumulation, 27% in Capitulation, 16% in Euphoria and 11% in Caution.

What the allocation means

The percentage is the share of a portfolio BG Vector suggests holding in bitcoin; the rest stays in cash. 100% is fully in bitcoin, 60% is 60% bitcoin and 40% cash, 0% is all cash.

The allocation follows risk, not expected return. This is how bitcoin behaved after each state since 2013:

StateAllocationMedian 90-day returnNegative after 90 daysAvg. worst drop, next 180 daysVolatility (annualized)
Accumulation100%+15%34%−18%60%
Euphoria60%+24%43%−25%121%
Capitulation30%+3%46%−24%69%
Caution0%−19%69%−32%60%

The interesting row is Euphoria. Bitcoin has kept rising on average after entering it, even faster than in Accumulation, so why hold less? Because it does so with twice the volatility, ends lower after 90 days more often, and is followed by deeper drops: Euphoria is where cycle tops form. Cutting to 60% gives up some of that upside in exchange for a lot less risk, which is exactly what improves the risk-adjusted result. It doesn’t go to zero, because tops tend to run further than valuation models expect.

On the risk-off side, Caution has been the worst state to hold bitcoin (negative after 90 days 69% of the time), so the signal holds cash. Capitulation is also risk-off, but the market is already cheap or short-term holders are underwater, and returns from there have been roughly flat, so a 30% position starts to buy the fear.

One honest note: the four allocations (100 / 60 / 30 / 0%) are a design choice based on this reasoning, not the output of an optimizer. The calibration on 2013–2020 only chose the thresholds: when the signal is risk-on, and where Euphoria and Capitulation begin. The statistics in the table use the full 2013 – October 2026 history.

How it was tested

The obvious way to build a signal like this is to try parameters until the backtest looks great. That produces a beautiful curve and a useless signal. So the rules were the same ones we use in BG Lab:

  • Parameters were chosen on 2013–2020 only. The smoothing, thresholds and state boundaries were picked using eight years of data. Everything from January 2021 onwards was held out.
  • No look-ahead. Every input is scaled with history available on that day, and each day’s allocation is applied to the next day’s return. Recomputing the whole series with history cut at any past date gives exactly the same values for those dates.
  • Over-trading is penalised. Signals that flip more than six times a year were penalised during selection, so the search couldn’t win by reacting to every wiggle.

On the held-out period, January 2021 to October 2026, the result was:

2021 – Oct 2026 (unseen)BG VectorBuy & hold
Growth×3.1×2.8
Maximum drawdown−41%−77%
Sharpe ratio0.690.59

The edge is mostly in what it avoided, not in what it earned. Over the full history since 2013, buying and holding bitcoin still has the higher raw return; BG Vector has the better risk-adjusted one (Sharpe 1.42 vs 1.22) with a much shallower worst drawdown. This is a simulation without fees, slippage or taxes.

What it got right, and what it got wrong

The inflection log is public on the BG Vector page. A few episodes since 2021 are worth looking at, the bad ones included.

The 2022 bear market. BG Vector turned risk-off on 1 January 2022 at about $47,500 and stayed out for over a year, holding 30% through the Capitulation lows of June ($18,500) and November 2022 ($15,700). It turned risk-on again on 16 January 2023 at $21,200. That single call is most of the drawdown difference in the table above.

The November 2021 top: a miss. At the cycle high in November 2021, BG Vector was in Accumulation at 100%. That cycle never got euphoric by on-chain standards (we wrote about it here), so the valuation axis never fired, and the exit came seven weeks and roughly 27% later, when momentum broke.

The October 2025 high: the same story. At the all-time high near $125,000 in October 2025 the signal was again fully in Accumulation. It turned risk-off on 6 November 2025 at about $101,000 and turned back risk-on on 22 August 2026 at about $77,000.

Summer 2024: whipsaw. Between July and October 2024 Bitcoin moved sideways between $55,000 and $65,000, and BG Vector flipped risk-on/risk-off eight times. Every trend-following signal pays this cost in a range. We chose not to add more smoothing, because the extra confirmation that would have avoided it also delays the exits that matter, like January 2022.

The pattern is consistent: BG Vector does not call tops. It leaves after the trend breaks, and it earns its keep by not riding the whole way down.

Real-time for subscribers, delayed for everyone else

The page and the API show the full methodology, the state history, the equity curve and the inflection log to everyone. Without a subscription, the most recent 7 days are withheld and history is limited to four years, the same rule that applies to our other premium metrics. Subscribers see today’s state as soon as it is calculated, every inflection as it happens and the full history since 2013.

You can also be notified when the regime changes: create an alert on BG Vector allocation % with the condition Value changes, by email or Telegram.

API

The same data is in the BGeometrics API:

  • /v1/vector: the full daily series (state, risk state, allocation, momentum and valuation scores, component contributions and the Bitcoin close).
  • /v1/vector/last: the latest reading.
  • /v1/vector/inflections: only the days the risk state flipped.

See the API documentation for parameters and response fields.

What BG Vector is not

It is not a price prediction, and it is not investment advice. It is a disciplined way of reading Bitcoin’s on-chain momentum and capital flows, with every rule written down and a test on data it never saw. A signal that worked in the past can stop working, and some on-chain metrics are revised over time, so backtests are always somewhat optimistic.

What it does offer is something most market-timing products don’t: you can see exactly why it says what it says, and check it yourself.

#vector #regime #backtesting #on-chain #bitcoin

See the metrics in this article live

Free interactive charts, or full historical access with a paid plan.

Related articles

lab backtesting

BG Lab: On-Chain Trading Rules, Tested Honestly

BG Lab searches thousands of simple rules built on BGeometrics on-chain metrics, validates them on data they never saw, and tracks them live with frozen thresholds. How it works, what it found, and why no rule clears the bar for 'definitely not luck' yet.

metrics api

Liquidity Stress Index: A Thermometer for Bitcoin's Market Plumbing

A new hourly 0-100 composite in the BGeometrics API that reads price, order-flow and leverage stress in one number — how it's built, what it got wrong at first, and what six years of hourly data say about where the line for 'extreme' actually sits.