BTC Market Bias Dashboard

Live BTC derivatives bias — funding rate, OI, taker flow, VWAP & momentum combined into one score Checking… ● How this works ↓
Last updated: --
Market Evidence (Live)
A fast read on real buying/selling pressure + whether expansion is likely
Evidence: —
Taker Buy/Sell
—
—
Open Interest Δ
—
—
Funding
—
—
Price vs 7d Avg
—
—
Basis (Mark vs Spot)
—
—
How to use this
  • Bullish evidence: Taker buys ↑, OI ↑ with price progress, funding not overheated, long/short not extreme.
  • Bearish evidence: Taker sells ↑, OI ↑ while price stalls, funding flips positive into resistance.
  • Chop / low confidence: mixed signals + flat OI → reduce size, quicker targets.
—
BTC MARKET BIAS
NEUTRAL / COMPRESSED
Loading live data…
Market Bias Score
0 / 3
BearishNeutralBullish
Leverage Risk —
—
Price Acceptance —
—
Structural Demand —
—
Momentum —
—
Component Contributions
Leverage Risk
0
Price Acceptance
0
Structural Demand
0
Momentum
0
Strategy Permission
Context filter — tells you what’s sensible right now
As of: —
Strategy
Status
Guidance
Current Risk Posture
—
—
Position size—
Stops—
Targets—
Avoid—
ATR (14d)—
ATR %—
Volatility—
Why this bias?
Transparent inputs (no hype)
More bearish if
  • Rising BTC exchange inflows broadly (not just one entity)
  • Funding turning positive while price stalls
  • Open Interest rising without price expansion
  • Price rejecting VWAP / range high
Less bearish / bullish if
  • BTC absorbs the selling and holds range lows
  • Spot bid support remains strong
  • ETFs continue net inflows
  • Funding resets or goes negative
Data sources

Live derivatives + candles from Deribit (BTC-PERPETUAL). Supply pressure (exchange netflows) requires a premium on-chain provider.

What Is the BTC Market Bias Dashboard?

The Bitcoin Market Bias Dashboard is a risk-first indicator that answers one question before every trade: is this an environment where risk should be increased, reduced, or avoided entirely? It does not generate entries, predict prices, or give buy and sell signals. It gives you systematic market context derived from real derivatives data.

Most traders make their biggest mistakes not from bad entries, but from trading the wrong environment — going long into bearish conditions, using full size in choppy markets, or staying in trades when structural demand has collapsed. The bias dashboard addresses this directly by aggregating four market conditions into a single score that tells you what kind of environment you are in.

The Four Components and What They Measure

⚡ Leverage Risk

Derived from the Binance perpetual funding rate. High positive funding means longs are crowded and paying a premium — a warning signal. Neutral or negative funding means positioning is balanced or short-sided, which is healthier for long entries. Extreme positive funding near resistance is one of the most reliable signs of an imminent long squeeze.

📊 Price Acceptance

Checks whether the market is accepting current prices using two inputs: VWAP position (is price above or below the volume-weighted average?) and 30-day range location (is price in the upper, middle or lower third of the recent range?). High price acceptance — above VWAP in the upper range — is structurally bullish. Low acceptance signals distribution or rejection.

📦 Structural Demand

Measures real buying pressure using the 7-day price change and the taker buy/sell ratio. A rising price with taker buys dominant confirms genuine demand-driven movement. A rising price with taker sells dominant is a warning (passive offers absorbing buyers) rather than confirmation. Structural demand separates momentum from real supply/demand imbalance.

📈 Momentum

Short-term trend strength using a 3-day vs 7-day price comparison and a structural check for higher highs and higher lows. Positive momentum means short-term price action is accelerating upward within the trend. Negative momentum means the trend is losing pace or reversing. Momentum is the leading-edge signal — it often shifts before the longer-term components.

Understanding the Bias Score

Each component contributes -1 (bearish), 0 (neutral), or +1 (bullish) to the total. The combined score ranges from -3 to +3:

-3 / -2
Bearish
Most components confirming bearish conditions. Long strategies on standby. Short strategies or cash favoured. Reduce position sizes significantly.
-1 / 0 / +1
Neutral / Compressed
Mixed signals — no clear edge in either direction. Reduce size, use tighter targets, avoid high-conviction positions. Patience is the correct play.
+2 / +3
Bullish
Most components confirming bullish conditions. Long strategies permitted. Trend continuation and swing long setups have structural support. Normal position sizing.

The Market Evidence Panel

Above the bias score, the Market Evidence panel shows the raw derivatives signals used in the calculation. These give you the granular picture behind the score:

Taker Buy/Sell Ratio — a ratio above 1.0 means aggressive buy orders dominate (genuine demand). Below 1.0 means sell orders dominate. Open Interest Δ — rising OI with rising price confirms a healthy trend; rising OI with flat or falling price signals a leverage trap. Funding Rate — the current 8-hour rate between longs and shorts on Kraken perpetuals. Price vs 7d Avg — shows whether current price is above or below the 7-day mean, indicating short-term positional bias. Basis (Mark vs Spot) — the premium or discount of perpetual mark price versus spot; positive basis means perpetuals are trading rich, which can signal speculative demand rather than real buying.

How to Use the Strategy Permission Table

Below the bias score, the Strategy Permission table translates the current conditions into actionable guidance for each trade type. Each strategy receives one of three statuses. ALLOWED (green) means conditions structurally support this approach — proceed with your normal process. REDUCED (amber) means conditions are mixed — trade if your setup is high quality, but use smaller position size and tighter stops. STANDBY (red) means conditions actively work against this strategy — stay flat regardless of how attractive the individual setup looks on a lower timeframe.

Workflow: Using This Dashboard in Your Trading Process

Step 1 — Check bias before chart analysis. Read the current score and the status of each component before opening any chart. This tells you the macro environment and prevents confirmation bias from clouding your analysis. Step 2 — Check the Strategy Permission table. Find your intended strategy type and read its status. If it is on STANDBY, stop. Step 3 — Cross-reference with the Leverage Gate. The BTC Leverage Gate handles the structural EMA200 regime check. Use both tools together — BTC Bias for current derivatives conditions, Leverage Gate for macro structure. Step 4 — Size correctly. Use the position size calculator to determine exact size based on your account, stop distance and the risk posture shown on this dashboard. Never size a trade without a calculated stop.

⚠️ Not financial advice. The BTC Market Bias Dashboard provides market context for educational purposes. It does not generate trade entries or guarantee outcomes. All data from Binance API. Always use a defined stop loss and correct position sizing. Never risk capital you cannot afford to lose.

Frequently Asked Questions

What does the BTC Market Bias score mean?
The bias score ranges from -3 (strongly bearish) to +3 (strongly bullish). It is the sum of four component scores — Leverage Risk, Price Acceptance, Structural Demand and Momentum — each contributing -1, 0 or +1. A score of +3 or +2 indicates most components are in bullish agreement. A score of 0 is neutral with no clear edge in either direction. A score of -2 or -3 means most components are bearish and long trades carry significant structural headwind.
What is the funding rate and why does it affect Bitcoin bias?
The funding rate is a periodic payment between perpetual futures longs and shorts on exchanges like Binance. Positive funding means longs are paying shorts — the market has more leveraged longs than shorts, creating crowding risk. If price stalls or reverses with high positive funding, a cascade of long liquidations can produce a sharp drop (a long squeeze). Negative funding means shorts pay longs — bearish crowding, with potential short squeeze risk if price pumps. The dashboard uses funding rate history as the primary input to the Leverage Risk component. Neutral funding is the healthiest state for trend continuation.
What is the taker buy/sell ratio in crypto trading?
The taker buy/sell ratio compares aggressive buy order volume to aggressive sell order volume over a recent period. A ratio above 1.0 means more volume is coming through as market buys — indicative of genuine buying pressure and real demand. A ratio below 1.0 means taker sells dominate — active selling pressure. Unlike price alone, taker flow shows who is initiating moves. Rising price with dominant taker buys is healthy. Rising price with taker sells means passive sellers are being absorbed at resistance, which often precedes a reversal.
How does VWAP price acceptance work in this indicator?
VWAP (Volume Weighted Average Price) is the average price at which all volume has traded. Price above VWAP indicates buyers are in control and the market is accepting current or higher price levels. Price below VWAP means sellers are in control. The dashboard also checks the 30-day range position — whether current price is in the upper third, middle third or lower third of the recent trading range. Both inputs together form the Price Acceptance component. High acceptance (above VWAP in upper range) is bullish. Low acceptance (below VWAP in lower range) is bearish. This distinction helps separate genuine breakouts from fake-outs.
Can I use the BTC Bias for altcoin trading decisions?
Yes — Bitcoin's market conditions strongly influence the entire crypto market. A bearish BTC bias creates headwinds for virtually all altcoin long positions. Even strong altcoin setups tend to fail when BTC conditions are deteriorating. Using the BTC bias as a macro context filter for all crypto trades is appropriate: if BTC bias is bearish or neutral, apply extra scrutiny to any long position on any crypto asset. For altcoin-specific short-term conditions, you would still need to check the individual coin's chart and derivatives data separately. The BTC bias is a necessary gate, not a sufficient entry signal.
Builder’s Notes

How I Built the BTC Bias Dashboard

Four components, dynamic regime weights, a consensus boost — and why I changed data sources twice
By Russ, Trade Logic  ·  March 2026  ·  14 min read

Why I built it — the problem with reading derivatives manually

The BTC Bias Dashboard started as a personal frustration. I was reading funding rates, taker ratios, open interest and VWAP position separately, in different tabs, on different refresh cycles, trying to manually synthesise them into a view on whether conditions were supportive of a trade. The problem wasn't a lack of information. It was that I had no systematic way to weight conflicting signals against each other.

When funding is elevated but taker buy ratio is dominant and price is above VWAP, what does that actually mean for your next trade? Elevated funding is a warning. Dominant taker buys is a confirmation. Above VWAP is a structural positive. In isolation, each is interpretable. Together, without a framework, they produce a paragraph of mental gymnastics where you arrive at whatever conclusion you already wanted.

The tool exists to force that framework to be explicit, consistent, and immune to in-the-moment rationalisation.

The four scoring components and their exact thresholds

Each component returns −1 (bearish), 0 (neutral), or +1 (bullish). There are no fractional values at the component level — each is a clear verdict. This was a deliberate choice. Fractional component scores create a false precision that the underlying data doesn't support.

1. Leverage Risk

This component reads the funding rate from Kraken Futures perpetual contracts. Funding rate is the clearest single signal I've found for crowded positioning.

// Funding rate as a percentage (e.g. 0.02 = 0.02%)
if avgFunding > 0.02%    → −1 (BEARISH)  // longs crowded, squeeze risk
if avgFunding < −0.005% → +1 (BULLISH)  // shorts crowded, short squeeze fuel
else                       → 0  (NEUTRAL)  // balanced positioning

The thresholds are asymmetric — the bullish trigger (−0.005%) is much tighter than the bearish trigger (0.02%). That asymmetry is intentional. Slightly negative funding is relatively common during healthy consolidations; it doesn't carry the same predictive weight as strongly elevated positive funding, which consistently precedes corrections. I tested equal thresholds and they produced too many false bullish signals during ranging markets.

2. Price Acceptance (VWAP + Range Position)

This component answers: is the market accepting current price levels, or rejecting them? It combines two sub-checks.

// aboveVWAP = price > 14-day volume-weighted avg price
// rangePos = where price sits in the 14-day range (0–100%)
// priceTrend = 5-day avg vs prior 5-day avg, as %

if !aboveVWAP AND priceTrend < −0.3% → −1  // below VWAP and declining
if rangePos < 25% → +1  // at range lows — potential base
if rangePos > 70% AND !aboveVWAP → −1  // high range but losing VWAP
if aboveVWAP AND priceTrend > 0.5% → +1  // above VWAP and accelerating
else → 0

The third condition — high range position but below VWAP — is the one that trips people up the most. A price at the top of a recent range feels bullish. But if it's also below VWAP, that means the market is at high prices that aren't being supported by average transaction cost. That combination precedes sharp reversions more reliably than low range position alone.

3. Structural Demand

This component measures whether there's actual buying pressure behind price movement, not just price movement itself. It uses 7-day price change as its primary input, with taker flow as a secondary confirmation when the price change is ambiguous.

if ch7d < −0.5% → −1  // 7-day price change negative
if ch7d > 0.5% → +1  // 7-day price change positive
// If price change is flat, check taker proxy
elif takerProxy < 0.95 → −1  // sell-side takers dominating
elif takerProxy > 1.05 → +1  // buy-side takers dominating
else → 0

The 0.5% threshold on 7-day change is deliberately conservative. Bitcoin moves 0.5% in minutes during active sessions — at the 7-day level, anything under that is essentially noise. I tested tighter thresholds and the component fired constantly on irrelevant micro-movements. Wider thresholds missed the early stages of meaningful moves.

4. Momentum

The simplest component. It compares the 3-day average price to the 7-day average price to ask: is recent price moving faster or slower than the medium-term trend?

// momentum = (avg3d − avg7d) / avg7d × 100
if momentum > 0.7% → +1  // short-term above medium-term trend
if momentum < −0.7% → −1  // short-term below medium-term trend
else → 0

This component is intentionally kept simple because momentum is already partially captured by the Structural Demand component's 7-day price change input. I didn't want to double-count the same underlying signal. The 0.7% threshold creates a meaningful gap between noise and signal at this timeframe.

The regime detection system and why weights change dynamically

This is the part of the tool most people don't know about, and the part I'm most satisfied with in terms of design.

The four components don't all carry equal weight all the time. The tool detects what kind of market environment Bitcoin is currently in — trending up, trending down, or ranging — and adjusts each component's contribution accordingly. The same bias score has a different meaning and a different composition depending on whether the market is trending or consolidating.

Regime is determined by comparing the 7-day average price to the 14-day average price:

trendStrength = (avg7d − avg14d) / avg14d × 100

if trendStrength > 1.0% AND avg7d > avg14d → TRENDING UP
if trendStrength < −1.0% AND avg7d < avg14d → TRENDING DOWN
if |trendStrength| < 0.7% → RANGING
else → NEUTRAL

Once the regime is known, the weights shift:

📈 Trending Market

  • Leverage: 0.8×
  • Price: 0.9×
  • Demand: 1.1×
  • Momentum: 1.3×

↔ Ranging Market

  • Leverage: 0.9×
  • Price: 1.4×
  • Demand: 0.8×
  • Momentum: 0.3×

◈ Neutral

  • Leverage: 1.0×
  • Price: 1.0×
  • Demand: 1.0×
  • Momentum: 0.8×

The logic behind these shifts: in a trending market, momentum and demand are genuinely predictive — when something is trending, those signals have follow-through. Funding rates and VWAP positioning matter less because trend continuation overrides normal mean-reversion signals.

In a ranging market, the opposite is true. Momentum signals are noise — they fire constantly on small oscillations and have no follow-through. Price acceptance at VWAP becomes the dominant signal because ranging markets are defined by price oscillating around a central value. The VWAP position tells you much more about the likely next move than any momentum reading.

This means a Momentum score of +1 contributes 1.3 points to the total in a trend but only 0.3 points in a range. The same component, the same raw signal, different weight based on context. That's the key insight behind the regime system.

The consensus boost — when 3 components agree

After the weighted total is calculated, there's a second pass. If three or more components agree on direction — all pointing bullish or all pointing bearish — the total gets an additional ±1 point.

bullCount = components where score > 0
bearCount = components where score < 0

if bullCount ≥ 3 AND totalScore < 3 → totalScore += 1
if bearCount ≥ 3 AND totalScore > −3 → totalScore -= 1

The reasoning: a +2 score built from two strong bullish components and two neutral ones is a different market from a +2 score built from three bullish components and one bearish one. The three-way consensus version has more confirmation behind it and historically has better follow-through. The boost only applies when the total hasn't already hit the maximum, which prevents the adjustment from pushing the score into an invalid range.

The final score is capped at ±3 for display purposes, though the raw calculation allows ±4.

−3
Extreme Bear
−2
Bearish
−1
Mild Bear
0
Neutral
+1
Mild Bull
+2
Bullish
+3
Extreme Bull

The Market Evidence panel — what it is and isn't

The Market Evidence panel at the top of the dashboard shows five raw data readings: taker buy/sell ratio, open interest delta, funding rate, price vs 7-day average, and mark vs spot basis. It has its own summary score. I want to be precise about what this panel is, because it is often misread.

The Market Evidence panel is not the bias score. It's a raw data readout — an unweighted, unregimed summary of the most recent derivatives signals. It updates to give you a fast first read when you open the tool. The bias score below it is the considered, regime-adjusted calculation that I would actually trade from.

There's also something you should know about two of the five evidence inputs. The taker buy/sell ratio and open interest delta are proxies, not direct feeds. Direct taker and OI data from Binance requires authentication that can't be done from a public-facing serverless function without exposing API keys. The proxies are derived from price change direction and volume ratio — a reasonable approximation that tracks the real signal well in most conditions, but will diverge during high-volume sideways action where volume is elevated but price isn't moving.

The funding rate and basis are real direct figures from Kraken Futures. The price vs 7-day average is calculated from CoinGecko price data. If you need precision on taker flow, a paid data subscription to CryptoQuant or Coinalyze will give you the real number.

Why I changed data sources twice

The original version of this tool pulled directly from the Binance API. Binance has better liquidity, better data granularity, and more direct relevance to BTC perpetuals trading. It was the obvious first choice.

The problem was CORS. Binance blocks cross-origin requests from browser-side JavaScript, which meant every data call had to route through a Netlify serverless function as a proxy. This added latency, occasionally produced rate-limit errors during high-traffic periods, and — most critically — meant the tool silently showed stale data when the function timed out rather than failing visibly. Users would see an apparently live dashboard showing conditions from 10 minutes ago. That's worse than no dashboard.

I moved to Kraken Futures for the funding rate data because their API has permissive CORS headers and consistent uptime. For price, volume, and OHLC data I moved to CoinGecko, whose free tier is slower but reliable and doesn't require authentication.

The trade-off is honest: Kraken + CoinGecko gives less granular data than Binance direct, but gives consistently available data rather than occasionally great data with silent failure modes. For a bias dashboard used to make position-sizing decisions before entering a trade, reliability beats precision.

The second data source change was smaller — the original version used the Binance long/short ratio endpoint as a direct sentiment signal, with no proxying. That endpoint disappeared from Binance's public API without notice in late 2025. The replacement is the price vs 7-day average calculation described in the evidence panel section above. It's a weaker signal, which is why it's in the evidence panel rather than the component scoring.

Why ATR is in a bias dashboard

ATR — Average True Range — measures daily price volatility over the last 14 days. It doesn't measure direction, only magnitude. I included it because bias without volatility context is incomplete information for sizing decisions.

A +2 bias score when ATR is $4,000 per day is a different risk proposition than a +2 score when ATR is $1,200. In the first case, a trade sized correctly for a $1,200 ATR environment is already undersized. In the second, a trade sized for $4,000 volatility is taking far more risk than the environment warrants. The ATR reading tells you which environment you're in before you calculate your position size.

The ATR trend indicator shows whether volatility is expanding, contracting, or stable — comparing the last 7-day average true range against the prior 7. Expanding volatility is a caution signal even in bullish conditions: it means the market is becoming less predictable, and stops need to be wider to avoid being triggered by noise. Contracting volatility into a range often precedes a breakout — either direction.

What this tool cannot do

It cannot tell you where to enter. A bias score of +2 tells you conditions favour longs. It does not tell you that $83,400 is the right level to buy, or that a specific candle pattern is your trigger. The bias dashboard is a conditions filter. Entry is a separate decision that requires your own analysis of price structure.

It lags sudden events. The CoinGecko price data updates every few minutes at the daily interval. The Kraken funding rate updates more frequently but is still a lagging indicator of positioning — it reflects what happened over the last funding period, not what's happening right now. A sudden CPI print or exchange outage will move the market before the dashboard reflects the new conditions.

It measures BTC, not altcoins. Every input is Bitcoin-specific. The bias score says nothing useful about Ethereum or any other asset. Derivatives market structure, funding rates, and VWAP position all differ across assets. Applying a BTC bias reading to an altcoin trade is a category error.

The regime detection can lag transitions. The regime is determined from a 7-day vs 14-day price average comparison. At the early stage of a regime change — when a ranging market begins to trend, or a trend begins to break — the tool will still be using the old regime weights. The component scores may be changing, but the weights won't shift until the averages diverge enough to cross the threshold. During these transition periods, I weight the evidence panel more heavily and the bias score less so.

How to actually use it

My workflow is consistent. I check the bias dashboard before sizing any position — not before finding a setup, but before converting a setup into a position size.

  1. Read the bias score first. −2 or worse means I'm not looking for longs. A +1 or better means long setups are in play. At 0, I'm flat and patient.
  2. Check the regime label. If the tool says "ranging," I weight the Price Acceptance component heavily in my interpretation and ignore the momentum readings. If it says "trending up," the Demand and Momentum components are driving the score and I trust them more.
  3. Check the ATR. This directly sets my stop-loss distance and therefore my position size. I don't skip this step.
  4. Read the strategy permission table. This translates the bias score into an explicit recommendation for my specific trade type — long swing, long day trade, scalp. The table is the check against wishful thinking.
  5. Cross-reference with the Signal Aggregator. The BTC Bias score feeds into the Signal Aggregator as one of five indicators. If the aggregator's combined score disagrees with the bias dashboard, I know there's a conflict between the macro structure (EMA200 regime, risk score) and the derivatives picture. That disagreement is itself useful information.

The most common misuse I see: using the evidence panel score instead of the bias score. The evidence panel total can be +3 or +4 even when the bias score is 0 or negative, because the evidence panel is unweighted and unregimed. A raw evidence total means much less than the bias score without the regime adjustment applied. Always use the bias score, not the evidence total, for trading decisions.

Related Tools & Reading