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:
| State | When | Allocation |
|---|---|---|
| Accumulation | Risk-on, valuation below 65 | 100% BTC |
| Euphoria | Risk-on, valuation 65 or above | 60% BTC |
| Caution | Risk-off | 0% BTC |
| Capitulation | Risk-off and valuation 30 or below, or 75%+ of STH supply at a loss | 30% 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:
| State | Allocation | Median 90-day return | Negative after 90 days | Avg. worst drop, next 180 days | Volatility (annualized) |
|---|---|---|---|---|---|
| Accumulation | 100% | +15% | 34% | −18% | 60% |
| Euphoria | 60% | +24% | 43% | −25% | 121% |
| Capitulation | 30% | +3% | 46% | −24% | 69% |
| Caution | 0% | −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 Vector | Buy & hold |
|---|---|---|
| Growth | ×3.1 | ×2.8 |
| Maximum drawdown | −41% | −77% |
| Sharpe ratio | 0.69 | 0.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.
See the metrics in this article live
Free interactive charts, or full historical access with a paid plan.