BEAT ALGORITHM — REAL-TIME EXECUTION FLOW
6 ML Models + 5 Rule Systems | +3,015 SOL (345% of Beat) | January 2026 | v2 Sizing (9-class) + Exit threshold 0.45
ML Model
Rule System
Action
Decision Gate
Data Input
PHASE 0 — DATA INGESTION
GEYSER gRPC STREAM
Yellowstone — every pump.fun trade
sol_amount, token_amount, trader, buy/sell
buyer_pre_sol, compute_units, priority_fee
ACCUMULATOR ENGINE
O(1) per trade — updates per-token state
Counters: buy_count, sell_count, holder_count, volume_sol
Rolling: buy_ratio_5/10, momentum_score, fomo_score, tpm_10
Geyser: avg_buyer_bal, pct_versioned, avg_cu, avg_cpi_depth
PHASE 1 — FILTER (once per token at frame 8)
MODEL 0: FILTER
XGBoost · 300 trees · 30 features
AUC 1.000
"Is this token worth watching at all?"
Top: vol_acceleration (34%) · price_chg_10 · tpm_10
score >= 0.50?
REJECT (ignore forever)
NO
99.9% of all pump.fun tokens
YES
99.7% of Beat tokens pass
PHASE 2 — ENTRY (every frame on watchlist tokens)
MODEL 1: ENTRY
XGBoost · 400 trees · 27 features
AUC 0.826
"Should I buy this token RIGHT NOW?"
Top: sell_streak (36%) · buy_streak · unique_traders
score >= 0.50?
KEEP WATCHING
NO
next frame
YES
PHASE 3 — REGIME + SIZING (once at entry)
RULE: REGIME CLASSIFIER
Rule-based · hourly
HOT / WARM / COLD
HOT: grad_rate >= 0.55% & vol > 35K
COLD: grad_rate < 0.30% | vol < 15K
MODEL 2: SIZING
XGBoost 9-class v2 · 500 trees · 70 features
81% train · 24% exact match vs Beat
"How much SOL to deploy?"
Top: sol_deployed (6.6%) · open_positions · buy_ratio_5
EXECUTE BUY
9 tiers: 1x(0.20) 2x(0.40) 2.5x(0.49) 3x(0.59) 4x(0.79)
5x(0.94) 6x(1.19) 9x(1.78) 12.5x(2.47) SOL
Slip: <0.4→4.78% | 0.4-1.0→2.52% | >1.0→1.86%
PHASE 4 — HOLD / MONITOR (every frame while holding)
RUNNER MODEL
XGBoost · 400 trees · 58 features
AUC 0.799
"Will price rise 10%+ in next 50 frames?"
Top: sol_to_migration · creator_rebuy_count · trades_in_slot
runner_score feeds as input feature
MODEL 5: EXIT
XGBoost · 400 trees · 64 features
AUC 0.860
"Should I sell RIGHT NOW?"
Top: unrealized_pnl_ratio (7.2%) · tpm_10 · runner_score (1.5%)
EXIT DECISION CHAIN (priority order)
1. STALENESS CHECK
time_since_prev >= 30 seconds?
YES
FORCE SELL
-617 SOL (20% WR, 46% wrong)
NO
2. TIMEOUT CHECK
frames_since_entry >= 200?
YES
FORCE SELL / DEAD
Beat P99 = 163 frames
NO
3. GRADUATION HOLD
curve >= 80% AND velocity > 0 AND sell_score < 0.5?
YES
HOLD THROUGH
ride to Raydium migration
NO
4. SELL SIGNAL
sell_score >= 0.45?
YES
SELL ALL
NO
5. HOLD
next frame
PHASE 5a — RE-ENTRY (after selling, watch for recovery)
RULES 6-9: RE-ENTRY CHAIN
Regime-driven thresholds · up to 4 buys
HOT: 1% recovery, runner >= 0.30, max 4 buys
WARM: 2% recovery, runner >= 0.40, max 3 buys
COLD: 3% recovery, runner >= 0.50, max 2 buys
2nd buy = Medium (0.79 SOL) · 3rd+ = Large (1.19 SOL)
price recovered X% AND runner >= min?
YES
RE-ENTER (buy again)
back to Hold/Monitor (Phase 4)
NO
max buys reached?
YES
DONE (move on)
Re-entries: +772 SOL from 28,802 trades (40% win)
PHASE 5b — POST-MIGRATION (after token graduates to Raydium)
graduated to Raydium
MODEL 11: POST-MIG ENTRY
XGBoost · 30 features
AUC 0.602 (weak)
RULE: POST-MIG SIZING
Fixed rule
0.97 SOL (Beat's median)
RULE: POST-MIG EXIT
Sell all at market immediately
92% via PUMP_AMM · 0.81 SOL median
SELL ON RAYDIUM
Post-migration: +70 SOL (weak — pump.fun features can't predict Raydium)
BACKGROUND SERVICES (always running)
REGIME CLASSIFIER
Runs hourly
graduation_rate + volume -> HOT/WARM/COLD
PORTFOLIO TRACKER
Runs continuously
open_positions, sol_deployed, win_rate
ACCUMULATOR ENGINE
Runs every trade
O(1) updates, feeds ALL models
RESULT: +3,015 SOL | 45,335 trades | 47.9% win rate | 7.8 SOL max drawdown