Single source of truth for how the bot works. Click any section to expand.
Regime Router — assigns a strategy based on trend strength (ADX)
On each closed 4h bar the bot reads ADX and routes to the matching validated strategy. Chop (ADX < 20) → SIT OUT (no edge; hold cash). Moderate (ADX 20–35) → Pullback. Strong (ADX > 35) → Turtle_vol. New tiers are a one-line REGIME_MAP change.
Pullback — buys dips in uptrends, sells rallies in downtrends
The consistent tier. Fires in moderate trends (ADX 20–35) when price is on the right side of the 200-EMA, EMA 9/21 confirm direction, and RSI shows a pullback (<48 long / >52 short). Backtest +70% at real maker fee. Hold up to 18 bars (72h). Exits 2.0×ATR stop / 4.0×ATR target.
Turtle_vol — volume-confirmed breakout for strong trends
The magnitude tier. Fires in strong trends (ADX > 35) on a 20-bar Donchian breakout with volume ≥ 2.5× average and ATR ≥ 1.8%. Lumpy by design — small stops paid for by occasional big trailing winners. Backtest +195% at real maker fee. Hold up to 34 bars (136h, a stable plateau).
Chop = Sit Out — no validated edge in choppy markets
When ADX < 20 there's no reliable edge. Multiple fade/mean-reversion strategies were tested and failed out-of-sample (most recently chop-funding-fade, -93% in a trending July). Holding cash is the correct, disciplined choice.
Stop-Loss & Take-Profit — 2.0×ATR stop, 4.0×ATR target (1:2)
Stops/targets scale to each coin's volatility (ATR). Stop = 2.0×ATR (cap 5%), target = 4.0×ATR (cap 10%) — a consistent 1:2 risk/reward, identical live and in backtest. (A stale per-coin tier cascade that used to override these was removed — live now matches the validated result.)
Trailing Stop — activates at 80% to target, 15% buffer
Once price travels 80% toward take-profit, a trailing stop follows the best price achieved, staying 15% of the range behind. Locks in most of a move while letting winners run past target — the source of turtle's biggest wins. Tightening it was tested and rejected (clipped the magnitude winners).
Minimum Stop Floor — never stop inside the cost+noise band
Stops never sit closer than 0.8%, because round-trip cost (~0.52%) plus noise would trigger them instantly. If ATR is tiny the stop widens to the floor and the target scales up to keep 1:2.
Max-Hold Timeout — per-strategy time limit
Turtle_vol holds up to 34 bars (136h, ~5.7 days) — chosen inside a stable plateau. Pullback holds up to 18 bars (72h, 3 days) — its own sweep peaks there. Still open at the limit → close at market (TIMEOUT, can be win or loss).
Position Sizing — fixed risk fraction per trade
Each trade is sized so the stop distance is a controlled fraction of live balance (balance.json). Wider stop → smaller position, so per-trade risk stays consistent across coins.
Exposure Cap — total open exposure ≤ 3× balance
Sum of open positions can't exceed 3× balance (MAX_LEVERAGE 3.0). New trades refused past the cap — concurrency governed by real risk, not a trade count.
Circuit Breaker — halts trading after severe drawdown
If losses breach the drawdown limit, the breaker trips and blocks new trades until reset — a backstop against a cascading bad day.
Bar Guard — one trade per coin per 4h bar
Stops a coin re-firing the same signal within one 4h bar. Persisted to disk so a restart can't forget it (a past restart once let a stopped-out coin re-enter the same bar).
Confidence ≥ 72% — minimum conviction
Signals below MIN_CONFIDENCE (72) are skipped and logged (with price) for the "would they have won?" research.
ADX ≥ 25 — minimum trend strength
Below MIN_ADX (25) the market's too weak/choppy for the trend strategies. Also logged for research.
1hr Trend Confirmation — trade with the higher timeframe
A long is blocked if the 1hr trend is bearish (and vice-versa) — trades must align with the higher-timeframe direction.
Signals — live per-coin scan
Each coin's current signal (LONG/SHORT/HOLD), ADX, confidence, plus the fired/skipped feed.
Portfolio — positions & performance
Open positions with unrealized P&L, balance, peak, exposure, and per-tier attribution (pullback vs turtle_vol).
Market — macro context
Fear & Greed and the economic calendar. Display-only — the bot doesn't trade macro directly.
Insights — roadmap, attribution, trainer
The self-maintaining roadmap with progress bar, regime mix, per-tier performance, and ML trainer controls.
Go Live — readiness gate
The four go-live criteria and current status. Live trading unlocks only when all pass.
The Gauntlet — the 4-stage test for every new strategy
(1) Predictive — does the signal exist? (2) Confound — real or a proxy? (3) Filter/downsize — survives honest costs? (4) Walk-forward — holds across months / out-of-sample? Pass all four → earns live plumbing. Shelving sub-threshold signals is the moat.
Honest Costs — every backtest pays real fees + spread
Tests charge the real 0.16% maker fee plus per-coin measured spread (~0.52% round-trip). A strategy only counts if profitable AFTER these.
Total Return > Win Rate — dollars, not hit rate
Turtle wins ~40% of trades but profits because its winners are large. Every change that raised win rate but lowered total return was rejected — a demonstrated win-rate trap.
Shelved Dimensions — signals that failed the gauntlet
Order-book imbalance, session/time-of-day, funding-as-filter, BTC-beta, and chop-funding-fade were all tested and shelved. The graveyard is what makes the surviving tiers trustworthy.
14 days paper trading — minimum track record
Enough runtime to see behavior across conditions.
10+ paper trades — minimum sample
Counts only clean 4h-era trades (from 2026-07-11), not the old 5-min history.
45% win-rate floor — a soft gate
Deliberately low — the edge is R:R-based, not hit-rate-based. Wobbles at small samples.
Net profitable — the REAL gate
The sturdiest criterion: is the clean-era record actually making money?
ADX — trend strength (not direction)
Low = choppy; high = strong trend. Drives the regime router. Note: the bot uses a responsive period-DX calculation (A/B-validated as the better regime filter vs textbook smoothed ADX). It can read 100 in cleanly one-sided conditions — cosmetic, not a bug, and it does not affect routing.
ATR — recent volatility
Sizes stops/targets to each coin's volatility. Turtle also needs ATR ≥ 1.8% to fire.
Donchian Channel — highest high / lowest low over N bars
Turtle breaks out when price exceeds the 20-bar Donchian high (long) or low (short).
Funding Rate — perp crowd positioning
Positive = crowded long, negative = crowded short. Tested as a fade signal — shelved (not robust out-of-sample).
Maker / Taker — fee types
Maker (adds liquidity) = lower fee; taker = higher. Backtests use the real 0.16% maker fee.
RSI — overbought/oversold
Pullback uses an RSI dip (<48) in an uptrend as the entry trigger.