How the Bot Works
Everything you need to know about how signals are generated, scored by our ML pipeline, and turned into real or paper trades — clearly explained.
End-to-End Bot Flow
Here's the complete path from a raw on-chain event to an open trade position:
Signal Sources
Two independent engines watch Solana in real time. TokenPricePoller watches price & volume for thousands of tokens via Jupiter + DexScreener. WalletAlertPoller monitors whale and shark wallets directly on-chain via Helius RPC.
ML Scoring Pipeline 4 layers
Every raw candidate passes through four scoring layers before it can be emitted as an alert. Each layer adjusts the signal's confidence_score.
Emit Gate
Three minimum score thresholds must all pass. Signals that don't clear all three are silently dropped — they never reach your bot.
Your Bot Worker
Each Pro user gets an isolated bot worker process. It polls emitted alerts every ~8 seconds and applies your personal config — strategy, direction mode, allowed signal types, timeframe, confidence gates. Signals that don't match your config are skipped.
Trade Entry
Signals that pass all gates open a new position. In paper mode, this is a simulated position in your personal state file with no real money. In live mode, a real Jupiter swap is executed from your bot wallet via Azure Key Vault.
Exit & P&L Feedback
Positions are monitored on each tick for stoploss, take-profit, max hold time, or manual close. When a position closes, the realised P&L is fed back into the ML scoring pipeline — future signals of the same type get adjusted accordingly.
Paper vs Live Mode
📄 Paper Mode (default)
- → Simulated positions, no real money at risk
- → Stoploss, take-profit, and max hold enforced in simulation
- → Full P&L tracking with identical logic to live mode
- → Best for testing strategies before going live
⚡ Live Mode
- → Real swaps executed via Jupiter on your bot wallet
- → Wallet keys stored securely in Azure Key Vault (RBAC-gated)
- → Higher confidence gate required (configurable)
- → Accountability gate must pass before live trades open
Risk Controls
| Control | What it does |
|---|---|
| Stoploss % | Position is closed if price drops this % below entry |
| Take Profit % | Position is closed if price rises this % above entry |
| Max Open Trades | Bot won't open new positions if this count is reached |
| Daily Loss Cap | No new live trades if daily realised losses exceed this USD amount |
| Daily Trade Cap | Limits how many live trades can open in a 24h window |
| Max Hold Hours (paper) | Paper positions auto-close after this many hours if no SL/TP hit |
| Hold Toggle | Lock an individual position — bot won't auto-close it until you remove the hold |
Alert Flow & Strategies
Where Signals Come From
Two completely independent engines run in parallel. They use different external data sources and produce different signal types.
TokenPricePoller
Jupiter APIs + DexScreener
Builds a dynamic watchlist of tokens from three sources, then polls DexScreener for price and volume data:
- 🔵 Jupiter Verified — registry of verified tokens with holder count + organic score filter
- 🔵 Jupiter Trending — real-time trending tokens by volume momentum
- 🔵 Pool Liquidity — tokens from our tracked liquidity pools with TVL ≥ $200k
WalletAlertPoller
Helius RPC (on-chain only)
Monitors a curated list of whale and shark wallets directly on-chain. No third-party price APIs — pure transaction parsing via Helius RPC:
- 🟢 getSignaturesForAddress — fetches new tx signatures for each tracked wallet
- 🟢 getTransaction — parses swap program IDs (Raydium, Orca, Meteora, Jupiter…)
- 🟢 Reputation tiers — whale, shark, smart money (affects base confidence)
All 5 Signal Types at a Glance
| Signal | Direction | Source | Best for |
|---|---|---|---|
| price_surge | Long ↑ | TokenPricePoller | Breakout momentum plays |
| price_drop | Short ↓ | TokenPricePoller | Shorting overextended tokens |
| volume_spike | Long ↑ | TokenPricePoller | Early trend detection before price moves |
| smart_buy | Long ↑ | WalletAlertPoller | Following high-conviction whale accumulation |
| smart_sell | Short ↓ | WalletAlertPoller | Exit or short when smart money distributes |
ML Scoring Pipeline
Before any signal is emitted, it passes through 4 scoring layers. Each layer reads the current confidence_score, adjusts it, and writes it back. The pipeline is fully transparent — every adjustment is logged on the alert payload.
Initial Confidence Score — Formula-Based
A deterministic score is set based on signal strength, liquidity, and volume ratios. This gives every signal a starting score before any historical data is applied.
Wallet signals: seeded from wallet tier + trade size in USD
Historical Reinforcement — Learn from Past Outcomes
If there are at least 15 historical outcomes for this signal type, the score is nudged up or down based on how well past signals of the same type have actually performed.
clamped to ±max_delta; resolved by signal type → direction → global
👆 If a signal type like smart_buy has 80% precision on recent fills, it gets a meaningful upward nudge. If it has been underperforming, it gets penalised.
Contextual Thompson Sampling Bandit Core ML
The main ML layer. Uses a multi-armed bandit with a Beta distribution posterior per context bucket. Context is built from 8 dimensions: signal type, source, tier, direction, risk level, liquidity size, trade size.
For each unique context combination, the bandit maintains a record of historical outcomes. It performs Thompson Sampling — drawing a random sample from the Beta distribution — and blends it with the posterior mean to balance exploration with exploitation.
delta = (sampled_prob − 0.5) × 26 + avg_reward × 8 + pnl × 0.12 + move × 0.08
This means the bot naturally favours signal contexts that have historically produced good outcomes, and explores less-proven contexts cautiously.
Execution Policy Scoring — Fill Quality Score
A second, independent bandit pass produces execution_confidence_score — calibrated specifically to whether signals have led to good executed fills, not just directional accuracy. This score is evaluated separately from the main confidence score.
The weighting between posterior accuracy, fill reward, P&L history, and risk penalty is tuned by your Execution Policy Preset (Conservative / Balanced / Aggressive).
Emit Gate — The Final Filter
After all four scoring layers, the signal must clear three thresholds or it's dropped entirely. This is your first line of defence against low-quality signals.
≥ 50
Confidence Score
Overall ML pipeline output
≥ 58
Execution Confidence
Fill quality score (Layer 4)
≥ 62
Token Quality
Minimum token health score
These defaults can be adjusted — but raising them means fewer, higher-conviction signals. Lowering them means more signals with higher noise.
Strategy Presets
Strategies are named bundles of default settings. Picking a strategy doesn't lock you in — you can override any individual field on top. Strategies change which signals are active, risk parameters, confidence gates, and the execution policy preset.
Balanced
Default All 5 signalsWell-rounded all-rounder. Uses every signal type, moderate SL/TP, medium confidence threshold. Good starting point for most traders.
Momentum
price_surge + volume_spikeFocuses on trend breakouts — large price moves and volume spikes. Uses wider take-profit to capture extended runs. Not suitable in choppy, low-volatility markets.
Smart Money Mirror
smart_buy + smart_sellOnly acts on whale and shark wallet signals. Lower frequency, higher conviction. Requires a 65% confidence gate, so only the strongest on-chain wallet movements generate trades.
Scalp
All signals — tight rangesHigh-frequency scalping with tight stoploss and take-profit. Uses all signal types and a lower confidence gate for more frequent entries. Suited for active, volatile markets — higher trade volume means the ML feedback loop adapts faster.
AI Curated Plan
Fully AI-driven Pro · OvermindThe bot's strategy is defined entirely by a live AI-generated plan built from the current alert stream. Signal filtering, direction bias, watchlist tokens, TP/SL targets, and position sizing are all supplied by the plan — not by manual checkbox configuration.
The plan is generated by GPT-4.1 on Pro (refreshed every 24 h) and GPT-5.4 on Overmind (refreshed every 1 h). High-risk or low-confidence plans automatically receive a second verification pass. You can trigger an immediate refresh any time with the Force Refresh button in the AI Plan panel.
Execution Policy Presets
The execution policy controls how the Layer 4 ML scoring bandit is tuned. Conservative requires more evidence before trusting a signal. Aggressive reacts faster to recent winners.
| Preset | Min samples needed | Posterior weight | Reward weight | High-risk penalty |
|---|---|---|---|---|
| Conservative | 28 fills | High (0.65) | Low (0.35) | Heavy (4.5) |
| Balanced | 15 fills | Medium (0.50) | Medium (0.50) | Moderate (3.0) |
| Aggressive | 8 fills | Low (0.30) | High (0.70) | Light (1.5) |
Until the minimum sample count is reached, the bandit layer is bypassed — raw formula scores are used. This means a fresh bot starts conservatively and adapts over time.
Self-Calibration — How the Bot Gets Better Over Time
When a position closes, the realised outcome (P&L, return %, exit reason) is fed back into the ML pipeline. This is the core feedback loop that makes the bot adaptive:
Trade closes → P&L recorded against the original alert_id
Outcome added to accountability record — precision %, median move %, reward score
Layer 2 reinforcement uses updated precision to adjust future signals of the same type
Layer 3 bandit updates the Beta(α, β) posteriors for the signal's context bucket
Future signals of the same context automatically score higher or lower — no manual retraining needed
💡 Practical implication: The more trades your bot runs, the better it calibrates to your specific market conditions and strategy. Paper mode is the ideal place to build up history before switching to live.
AI Trading Plan — Pro & Overmind
The AI Trading Plan replaces manual signal selection with a fully AI-driven strategy generated directly from the live alert stream. When the AI Curated Plan strategy is selected, the bot's behaviour is governed entirely by the plan output.
Pro — GPT-4.1
- → Plan refreshed every 24 hours
- → 30 plans per calendar month
- → Manual force-refresh available any time
- → High-risk plans receive automatic second-pass review
Overmind — GPT-5.4
- → Plan refreshed every 1 hour automatically
- → Unlimited plans — always current
- → Manual force-refresh available any time
- → Higher-tier model with deeper on-chain context
What the Plan Controls
| Field | Description |
|---|---|
| Bias | Directional read: bullish, bearish, neutral, cautious. Defaults to long-only when no explicit direction is present. |
| Watchlist | Tokens the plan considers tradeable this session. Only signals for watchlist tokens can open new positions. |
| Entry Signals | Per-token entry triggers with direction and on-chain conditions that must be present. |
| TP / SL | Take-profit targets and stoploss rules as % moves or price conditions. Applied to all positions opened under this plan. |
| Position Sizing | Recommended risk % per trade and max aggregate exposure. |
| Risk Rating | Plan-level risk: low / medium / high / extreme. Extreme rating with no watchlist tokens pauses new entries as a safety guard. |
| Invalidators | Three hard conditions that void the plan immediately if observed on-chain. |
How to Use It
- Select AI Curated Plan from the Strategy dropdown in Bot Configuration.
- The AI Plan panel will show the current active plan — bias, watchlist, risk rating, and when it was last generated.
- Click Force Refresh at any time to generate a fresh plan immediately, bypassing the scheduled cadence.
- The bot worker reads the plan on every tick (~8 s). New entries are only opened for tokens on the plan's watchlist with a matching direction bias.
- You can still override individual config fields (e.g., tighten stoploss) — plan values are starting defaults, not hard locks.
Ready to start? Head back to the Bot Portal to configure your instance.
← Back to Bot Portal