Bearish Breakdown Predictor

Bitcoin Elite Breakdown Filter

Detect early signs of capitulation before the sell-off intensifies. Our model identifies the signature volatility and momentum patterns of institutional-grade liquidations.

Avg. Short Reliability

73.1% Precision

Detecting high-conviction sell pressure

Multi-horizon forecasts (1H, 2H, 4H, 8H)

73.1% precision in capitulation detection

Institutional-grade noise filtration

No-repaint sell-side signatures

Jump to:

Statistical Baseline

Historical performance averages across key forecast horizons.

Certified Walk-Forward AVG
Horizon Avg. Accuracy Avg. Precision Alpha Strength
8-Hour (H8) 73.3% 74.2% High Risk Warning
4-Hour (H4) 72.0% 73.1% Strong Short
2-Hour (H2) 69.4% 71.7% Scalp Warning
1-Hour (H1) 71.5% 71.7% Immediate Alpha

Probability Intelligence

Bearish breakdowns are often more severe and sudden than upside rallies. Our model specializes in detecting the "liquidity vacuum" and momentum acceleration that precedes a break of key support.

Technical Target:

Predicts a breach of the current 14-period low minus an ATR-based noise buffer. This ensures the indicator captures significant structural failures rather than simple wick-grabs.

Key Features

  • Probabilistic forecasting of bearish breakdowns
  • Downside liquidity-vacuum detection
  • Volatility-adjusted failure analysis
  • Real-time institutional-grade data streaming

How it works

The model evaluates a wide range of market-structure signals to forecast structural breakdowns with professional-grade precision.

1

Structural Feature Analysis

The model monitors for liquidity vacuums and momentum acceleration that occur when price nears key historical support levels.

2

Multi-Horizon Alignment

Failure probability is scored across 1h, 2h, 4h, and 8h windows. Convergence across horizons signals high-conviction capitulation risk.

3

Dynamic Noise Filtration

Targets are set below ATR-adjusted support levels, ensuring signals only fire for structural breaches, not simple wicks.

Everything is computed strictly from historical bars. No repainting, no lookahead, no cheating.

Signal decoding

šŸ”“ High Breakdown Risk

Probability ≄ 0.70 signals imminent structural failure with high institutional liquidation odds.

🟔 Building Pressure

Probability 0.40 - 0.70 flags range weakness and potential energy accumulation for a dump.

⚪ Support Holding

Probability < 0.40 indicates stable market structure where the downside edge is limited.

Built for serious traders

  • Detect early signs of capitulation before the sell-off.
  • Avoid weak or low-quality breakdown setups.
  • Manage exposure and tighten stops when risk rises.

How to use it

  1. 1Enter short when breakdown probability spikes.
  2. 2Filter bad shorts using multi-horizon momentum.
  3. 3Optimize sizing based on liquidity vacuum strength.

Deploy inside TrendSpider

Paste the script into a TrendSpider custom JavaScript indicator, replace the placeholder API key with your credential, and save. The indicator displays probability lines for all four horizons (1H, 2H, 4H, 8H) in the lower panel.

  • Open TrendSpider, create a new JavaScript indicator, and clear the default template.
  • Paste the snippet, swap YOUR_API_KEY_HERE for your key, then click Save.
  • Add the indicator to your chart in lower panel mode to see probability lines and zones.
TrendSpider
// === Setup ===
describe_indicator('BTC Break-Down Probability', 'lower', { shortName: 'BTC_break_down' });

// === Helpers ===
function isoToUnix(iso) {
  const m = iso.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?(Z|[+\-]\d{2}:\d{2})$/);
  if (!m) return null;
  const [, Y, M, D, h, mi, s='0', tz] = m;
  const utcMs = Date.UTC(+Y, +M-1, +D, +h, +mi, +s);
  if (tz === 'Z') return Math.floor(utcMs/1000);
  const sign = tz[0] === '+' ? 1 : -1;
  const offH = +tz.slice(1,3), offM = +tz.slice(4,6);
  return Math.floor((utcMs - sign*((offH*60+offM)*60*1000))/1000);
}
const toStart = (u, sec) => Math.floor(u/sec)*sec;
function detectResolutionSec(){ return time.length<2 ? 60 : (time[1]-time[0]); }

// === Settings (UI) ===
const API_KEY = 'YOUR_API_KEY_HERE';
const LIMIT   = 10000;

const SHOW_H1  = Number(input('Show h1 (0/1)', 1, [0,1])) === 1;
const SHOW_H2  = Number(input('Show h2 (0/1)', 1, [0,1])) === 1;
const SHOW_H4  = Number(input('Show h4 (0/1)', 1, [0,1])) === 1;
const SHOW_H8  = Number(input('Show h8 (0/1)', 1, [0,1])) === 1;

const TH_SHORT_1 = Number(input('SHORT h1 (0..1)', 0.60, { min:0, max:1, step:0.01 }));
const TH_SHORT_2 = Number(input('SHORT h2 (0..1)', 0.60, { min:0, max:1, step:0.01 }));
const TH_SHORT_4 = Number(input('SHORT h4 (0..1)', 0.60, { min:0, max:1, step:0.01 }));
const TH_SHORT_8 = Number(input('SHORT h8 (0..1)', 0.60, { min:0, max:1, step:0.01 }));

const TH_EXIT_1  = Number(input('EXIT h1 (0..1)',  0.10, { min:0, max:1, step:0.01 }));
const TH_EXIT_2  = Number(input('EXIT h2 (0..1)',  0.10, { min:0, max:1, step:0.01 }));
const TH_EXIT_4  = Number(input('EXIT h4 (0..1)',  0.10, { min:0, max:1, step:0.01 }));
const TH_EXIT_8  = Number(input('EXIT h8 (0..1)',  0.10, { min:0, max:1, step:0.01 }));

const PALETTE = ['aqua','#00e676','orange','violet','#2196f3','#ff9800','#9c27b0','#26a69a'];
const COL_1_IDX = Number(input('Color h1 preset', 4, { min:0, max:PALETTE.length-1, step:1 }));
const COL_2_IDX = Number(input('Color h2 preset', 6, { min:0, max:PALETTE.length-1, step:1 }));
const COL_4_IDX = Number(input('Color h4 preset', 2, { min:0, max:PALETTE.length-1, step:1 }));
const COL_8_IDX = Number(input('Color h8 preset', 3, { min:0, max:PALETTE.length-1, step:1 }));
const COLOR = { 1: PALETTE[COL_1_IDX], 2: PALETTE[COL_2_IDX], 4: PALETTE[COL_4_IDX], 8: PALETTE[COL_8_IDX] };

const SHADE_ZONES = Number(input('Shade zones (0/1)', 1, [0,1])) === 1;

// === Fetch ===
const headers = { 'Authorization': `Bearer ${API_KEY}` };
function endpointFor(h){
  const map = {
    1: 'btc-break-1h-down-h1',
    2: 'btc-break-1h-down-h2',
    4: 'btc-break-1h-down-h4',
    8: 'btc-break-1h-down-h8',
  };
  return map[h];
}
async function fetchRows(h){
  const url = `https://ts.marbell.com/${endpointFor(h)}?limit=${LIMIT}&expand=false`;
  const resp = await request.http(url, 300, headers);
  assert(!resp.error, `Error fetching BTC break-down (h=${h}): ${resp.error}`);
  assert(Array.isArray(resp), `Unexpected response format for h=${h}`);
  return resp;
}

// === Indexing ===
const resSec = detectResolutionSec();
const idxByUnix = {}; for (let i=0;i<time.length;i++) idxByUnix[time[i]] = i;

// === Containers per horizon ===
function makeSeries(){ return Array(close.length).fill(null); }
const prob   = { 1: makeSeries(), 2: makeSeries(), 4: makeSeries(), 8: makeSeries() };
const aboveS = { 1: makeSeries(), 2: makeSeries(), 4: makeSeries(), 8: makeSeries() };
const belowX = { 1: makeSeries(), 2: makeSeries(), 4: makeSeries(), 8: makeSeries() };

const TH_SHORT = { 1:TH_SHORT_1, 2:TH_SHORT_2, 4:TH_SHORT_4, 8:TH_SHORT_8 };
const TH_EXIT  = { 1:TH_EXIT_1,  2:TH_EXIT_2,  4:TH_EXIT_4,  8:TH_EXIT_8  };

// === TF helpers ===
const isLowerTF  = (intervalSec) => resSec < intervalSec;
const isEqualTF  = (intervalSec) => resSec === intervalSec;
const isHigherTF = (intervalSec) => resSec > intervalSec;

// === Load & map ===
const TO_SHOW = [
  ...(SHOW_H1 ? [1] : []),
  ...(SHOW_H2 ? [2] : []),
  ...(SHOW_H4 ? [4] : []),
  ...(SHOW_H8 ? [8] : []),
];

for (const H of TO_SHOW) {
  const rows = await fetchRows(H);
  for (const r of rows) {
    const u = isoToUnix(r.timestamp);
    if (u == null) continue;

    const intervalSec = 3600;
    const uStart = toStart(u, intervalSec);
    const p = Number(r.probability);
    if (!isFinite(p)) continue;

    const writeAt = (idx) => {
      if (idx === undefined) return;
      prob[H][idx] = p;
      if (SHADE_ZONES){
        if (p >= TH_SHORT[H])      { aboveS[H][idx] = p; belowX[H][idx] = null; }
        else if (p <= TH_EXIT[H])  { belowX[H][idx] = p; aboveS[H][idx] = null; }
        else { aboveS[H][idx] = null; belowX[H][idx] = null; }
      }
    };

    if (isLowerTF(intervalSec)) {
      const pointsPerInterval = Math.max(1, Math.floor(intervalSec / resSec));
      for (let k=0;k<pointsPerInterval;k++){
        writeAt(idxByUnix[uStart + k*resSec]);
      }
    } else if (isEqualTF(intervalSec)) {
      writeAt(idxByUnix[uStart]);
    } else {
      if (uStart % resSec === 0) writeAt(idxByUnix[uStart]);
    }
  }
}

// === Static guides ===
const h0 = Array(close.length).fill(0);
const h1 = Array(close.length).fill(1);
plot(h0, '0', '#808080');
plot(h1, '1', '#808080');

function label(th, H, kind){ return `${kind} h${H} ${kind==='SHORT'?'≄':'≤'} ${Math.round(th*100)}%`; }

for (const H of TO_SHOW) {
  plot(prob[H], `P↓ (h${H})`, COLOR[H]);

  const hShort = Array(close.length).fill(TH_SHORT[H]);
  const hExit  = Array(close.length).fill(TH_EXIT[H]);
  plot(hShort, label(TH_SHORT[H], H, 'SHORT'), '#ff0000');
  plot(hExit,  label(TH_EXIT[H],  H, 'EXIT'),  '#00ff00');

  if (SHADE_ZONES){
    plot(aboveS[H], `Zone SHORT h${H}`, '#ff0000');
    plot(belowX[H], `Zone EXIT h${H}`,  '#00ff00');
  }
}

Anticipate breakdowns before they happen

BTC Break-Down Probability gives you a probabilistic edge on downside moves, helping you enter shorts with confidence and avoid false breakdowns.

šŸš€ Get Started in 3 Minutes

Follow these simple steps to start receiving AI-powered breakdown signals for Bitcoin.

1

Create Free Account

Sign up with Google or TikTok in one click. No credit card required to explore.

  • āœ“Instant access to dashboard
  • āœ“View sample signals
  • āœ“Explore all indicators
2

Subscribe to Indicator

Choose your plan and get instant access. Secure payment via Stripe.

  • āœ“CHF 49/month
  • āœ“Cancel anytime • No hidden fees
3

Start Trading Smarter

Access live signals via dashboard, API, or TrendSpider integration.

  • āœ“Real-time dashboard
  • āœ“REST API for automation
  • āœ“TrendSpider charts
Get access now

šŸ”’ Secure checkout powered by Stripe • šŸ’³ All major cards accepted

73.1%

Short Precision

71.5%

H1 Alpha Strength

48h

Lookback Sensitivity

100%

Verified No-Repaint

Disclaimer

The Signals provided by Marbell AG are for informational and educational purposes only and are not investment advice or a recommendation to buy or sell any financial instrument. The Signals are non-personalised and do not consider your objectives, financial situation, or risk tolerance. Past or simulated performance is not indicative of future results. Marbell AG does not execute trades or provide portfolio management or copy-trading services.