Scoring Formulas
Exact thresholds and weights from the production calculator (v3.8, computed on Railway)
Overview
The system uses four pillars, each scoring from −10 (extremely bearish) to +10 (extremely bullish). Each pillar is computed from weighted sub-components and normalized to the −10/+10 range. The final regime score combines the weighted average with a directional bonus that amplifies conviction when multiple pillars confirm a bearish trend.
Directional Bonus
When trend is bearish (< −2) and confirmed by negative derivatives and/or volatility, the directional bonus adds up to −4.0 additional pressure. This prevents the system from staying in NEUTRAL/CAUTIOUS-BEAR when trend, derivatives, and volatility all agree on weakness. The bonus only fires downward (never adds bullish pressure).
Trend
weight: 37.5%Price structure, moving averages, and trend quality. Measures whether BTC is in an uptrend or downtrend, and how healthy the trend is.
SMA alignment (20/50/200), distance from key averages, and SMA slope. Price above SMA50/200 is bullish. SMA20 above SMA50 (golden cross setup) adds points. 20-day slope of SMA50 measures trend momentum.
Consistency of up-days (20d window), return alignment (20d and 60d returns in same direction), pullback depth relative to ATR, and breakout retention (new highs that hold for 3+ days).
How well price holds key levels: ratio of days above SMA50, position within 20-day range (close location value), and pullback severity relative to ATR.
Liquidity
weight: 27.5%Four signals measure capital flows into and out of Bitcoin. ETF flows are the dominant signal (60% combined weight). Missing components are excluded and remaining weights are renormalized.
Sum of the last 3 trading days of spot Bitcoin ETF net flows. Dominant ETFs: IBIT, FBTC, GBTC, ARKB, BITB. Weekends/holidays use the most recent 3 trading days.
| 3-day Net Flow (USD M) | Raw Score | Signal |
|---|---|---|
| > $1,000M | ++10 | Exceptional institutional demand |
| > $500M | ++7 | Very strong inflows |
| > $200M | ++4 | Strong inflows |
| > $50M | ++1 | Moderate inflows |
| > −$50M | 0 | Neutral (flat flows) |
| > −$200M | −3 | Moderate outflows |
| > −$500M | −6 | Heavy outflows |
| ≤ −$500M | −10 | Exceptional outflows / distribution |
Measures whether ETF flows are improving or deteriorating. Positive = flows accelerating. Capped at 0 when 3-day average flow is still negative (deceleration of outflows is not bullish).
| Acceleration (USD M/day) | Raw Score | Signal |
|---|---|---|
| > $100M | ++10 | Rapid flow acceleration |
| > $50M | ++6 | Strong acceleration |
| > $15M | ++2 | Moderate acceleration |
| > −$15M | 0 | Stable flows |
| > −$50M | −3 | Moderate deceleration |
| > −$100M | −6 | Strong deceleration |
| ≤ −$100M | −10 | Rapid outflow acceleration |
Rising stablecoin supply signals new capital entering the crypto ecosystem (bullish).
| 7-day Supply Change | Raw Score | Signal |
|---|---|---|
| > +3% | ++10 | Strong inflow |
| > +1.5% | ++6 | Moderate inflow |
| > +0.5% | ++3 | Slight inflow |
| > −0.5% | 0 | Flat / neutral |
| > −1.5% | −3 | Slight contraction |
| > −3% | −6 | Moderate contraction |
| ≤ −3% | −10 | Heavy outflow |
7-day change in total BTC held on exchanges, as a percentage of current balance. Negative = outflow (accumulation, bullish). Positive = inflow (distribution, bearish). Thresholds from P5/P25/P50/P75/P95 of historical distribution.
| 7d Balance Change (%) | Raw Score | Signal |
|---|---|---|
| < −1.5% | ++10 | Heavy accumulation (below P5) |
| < −0.75% | ++6 | Strong accumulation (below P25) |
| < −0.3% | ++3 | Moderate accumulation |
| < +0.1% | 0 | Neutral |
| < +0.5% | −3 | Moderate distribution (above P75) |
| < +1.0% | −6 | Strong distribution |
| ≥ +1.0% | −10 | Heavy distribution (above P95) |
Derivatives
weight: 20%Two signals measure positioning health in perpetual futures markets. Funding rate scoring is gated by the current trend direction: the same funding rate can be bullish in a downtrend (contrarian squeeze setup) but bearish in an uptrend (overleveraged longs).
The funding rate is converted to a z-score against a 90-day rolling window, then scored differently based on the current trend pillar value. This makes the signal adaptive: negative funding in a bear trend is contrarian-bullish, while positive funding in a bear trend is very bearish (crowded longs in a downtrend). If 3-day average direction disagrees with z-score direction, the score is dampened to 75%.
| Funding Z-Score | Raw Score | Logic |
|---|---|---|
| z > +2 | −3 | Overheated longs in uptrend |
| z > +1 | 0 | Normal bull positioning |
| z < −2 | ++10 | Extreme shorts in uptrend: squeeze setup |
| z < −1 | ++7 | Contrarian shorts: bullish |
| else | 0 | Neutral |
| Funding Z-Score | Raw Score | Logic |
|---|---|---|
| z > +2 | −10 | Crowded longs in downtrend: very bearish |
| z > +1 | −7 | Elevated longs in downtrend |
| z < −2 | ++7 | Extreme negative funding: contrarian bullish |
| z < −1 | ++3 | Shorts paying: mild contrarian bullish |
| else | 0 | Neutral |
| Funding Z-Score | Raw Score | Logic |
|---|---|---|
| z ≤ −2 | ++10 | Extreme negative: squeeze potential |
| z < −1.5 | ++7 | Strong negative funding |
| z < −1 | ++5 | Moderate negative funding |
| −1 ≤ z ≤ +1 | 0 | Normal range |
| z < +1.5 | −5 | Mildly elevated positive funding |
| z < +2 | −7 | Elevated positive funding |
| z ≥ +2 | −10 | Extreme positive: reversal risk |
Combines 1-day OI change with 1-day price change to detect healthy vs. unhealthy positioning. Price up + OI up = bullish conviction. Price down + OI up = shorts building or longs trapped (bearish). Also factors in 7-day OI trend (40% of OI score). Uses USD-denominated OI (close_oi × btcPrice) for cleaner capital-at-risk signal (v3.8 improvement).
| Price × OI Interaction | Score Range | Signal |
|---|---|---|
| Price ↑ + OI ↑ | +2 to +10 | Bullish conviction: new money entering longs |
| Price ↑ + OI ↓ | +1 to +5 | Short squeeze or profit-taking: mildly bullish |
| Price ↓ + OI ↑ | −2 to −10 | Bearish: shorts building or longs trapped |
| Price ↓ + OI ↓ | −1 to −5 | Capitulation / forced selling: mildly bearish |
| Flat price or OI | 0 | No significant interaction |
1-day interaction (60%) + 7-day OI trend (40%). Price movement threshold: ±0.3%. OI threshold: ±0.5%.
Volatility
weight: 15%Uses 7-day and 30-day realized volatility (annualized log returns) to measure market stress. Healthy trends need moderate volatility. Both extreme compression and elevated vol are negative signals. A trend interaction modifier adjusts the score based on whether vol is rising/falling in bull/bear markets.
U-shaped scoring: the sweet spot is 35-50% annualized vol (healthy for trends). Both extremes score negatively. Below 25% signals coiled compression; above 95% signals crisis.
| 7d Realized Vol (ann.) | Raw Score | Signal |
|---|---|---|
| < 25% | −5 | Extreme compression: breakout incoming |
| 25 − 35% | 0 | Low: neutral |
| 35 − 50% | ++5 | Healthy: sweet spot for trending |
| 50 − 70% | 0 | Normal: neutral |
| 70 − 95% | −5 | Elevated: stress building |
| ≥ 95% | −10 | Crisis-level volatility |
Compares short-term vol to medium-term vol. A rising ratio means vol is spiking (bearish). A falling ratio means vol is compressing (generally bullish, suggests stability).
| 7d / 30d Vol Ratio | Raw Score | Signal |
|---|---|---|
| > 1.8 | −10 | Sharp vol spike |
| > 1.5 | −7 | Significant vol expansion |
| > 1.2 | −3 | Moderate vol increase |
| 0.85 − 1.2 | ++5 | Stable vol: healthy |
| 0.7 − 0.85 | ++7 | Vol compressing: bullish |
| < 0.7 | ++3 | Extreme compression: uncertain |
Stress Detection
Before computing the final score, the system checks how many pillars are in bearish territory. This determines the stress state shown alongside the regime.
| Condition | Threshold |
|---|---|
| Trend | < −2 |
| Liquidity | < 0 |
| Derivatives | < −2 |
| Volatility | < −2 |
Final Score & Regime Classification
Each pillar score is in the −10 to +10 range. The final score is also −10 to +10.
| 0-100 Score | −10/+10 Equivalent | Regime | Description |
|---|---|---|---|
| ≥ 70 | ≥ +4.0 | RISK-ON | Strong bull conditions across all pillars |
| ≥ 58 | ≥ +1.6 | CAUTIOUS-BULL | Bullish but with some weakening signals |
| ≥ 42 | ≥ −1.6 | NEUTRAL | Mixed or indeterminate conditions |
| ≥ 30 | ≥ −4.0 | CAUTIOUS-BEAR | Bearish but not fully collapsed |
| < 30 | < −4.0 | RISK-OFF | Strong bear conditions across all pillars |
Allocation Curve
Each regime maps to an exposure multiplier: RISK-ON 1.75x, CAUTIOUS-BULL 1.00x, NEUTRAL 0.50x, CAUTIOUS-BEAR 0.10-0.30x (depending on subtype), RISK-OFF 0.00x. CAUTIOUS-BEAR is split into two subtypes: "risk" (general caution) gets 0.10x, and "dir" (strong directional evidence, trend < −4) gets 0.30x.