Skip to content
karim.semaan(open to work)
WorkExperienceAboutSkillsContactResume ↓
← All work
Sol-Sniper preview
ML / Data ScienceProtected2026

Sol-Sniper

AI Solana trading bot (MCP)

Runs the full loop in shadow (paper) mode today: discovered tokens are scored by a walk-forward-validated LightGBM pump model (AUC 0.82), vetted by a staged Claude-vision agent pipeline, and executed behind a circuit breaker and preflight gates.

discovery to guarded execution · 5 stagesShadow mode · synthetic walkthrough
Candidate · $NOVAPUPsynthetic token
ticker
$NOVAPUP
source
Pump.fun graduation
age
26 min
market cap
$48.2K
liquidity
$21.3K
liq / mcap
0.44

Fictional candidate, invented for this walkthrough. Its fields mirror the 5 pre-entry features the model card publishes: log_market_cap, log_liquidity, liq_to_mcap, has_liq_data, mcap_bucket.

Step a fictional token through the five stages the real system runs on every candidate.

Synthetic walkthrough: $NOVAPUP is a fictional token and every stage number is invented, not output from the private trading stack. Only the validation panel is real, copied verbatim from the model card. Execution runs in shadow (paper) mode; no real funds move.

Synthetic token and stage numbers; the system runs in shadow (paper) mode. The fold-AUC validation panel is real, published verbatim from the model card.

Protected work

A live trading system, so execution strategy, RPC keys, and on-chain wiring are kept private, and it runs in shadow (paper) mode. Glad to walk through the ML and architecture.

Request access

Sol-Sniper is an autonomous Solana meme-coin trading system, running in shadow (paper) mode today. Discovered tokens are scored by a LightGBM pump-probability model validated walk-forward (AUC 0.82 on 7,188 samples), vetted by a staged Claude agent pipeline, and executed behind a fail-closed safety stack. It ships as a local MCP server (22 tools) with a FastAPI + WebSocket dashboard, backed by 1,072 tests.

Discovery fuses Telegram signals (Telethon), Pump.fun graduations, and a Playwright scraper that reads DexScreener when its API is blocked. Each candidate passes a deterministic 0-100 scorer plus the LightGBM model, with a model card that publishes the feature list and a leakage audit banning post-entry outcome features. Survivors are vetted by the agent pipeline (Scout, Chart Analyzer, Analyst, Portfolio); the Chart Analyzer sends chart screenshots to the Claude vision API.

Execution routes through Jupiter (Ultra API, V6 fallback) and PumpPortal, behind the fail-closed safety stack: a circuit breaker that trips on repeated RPC and data-feed failures, policy guardrails with audit logging, a preflight gate on live mode, RPC rotation with cooldown and backoff, and a backtest engine that replays the scan log.

  • Python
  • LightGBM
  • scikit-learn
  • MCP
  • Claude API (vision)
  • FastAPI
  • WebSockets
  • Playwright
  • Solana (solders)
  • Jupiter Swap API

Architecture · discovery → ML scoring → agent decision → guarded execution

  1. 01

    Token discovery

    Telegram signals, Pump.fun graduations, and a Playwright DexScreener scraper surface candidate tokens.

  2. 02

    ML scoring

    A deterministic scorer + a walk-forward-validated LightGBM pump-probability model (AUC 0.82) rank each candidate.

  3. 03

    Claude agent pipeline

    A staged pipeline (Scout → Chart Analyzer → Analyst → Portfolio) sends chart screenshots to the Claude vision API for pattern analysis.

  4. 04

    Risk guardrails

    A circuit breaker, policy guardrails, preflight gates, RPC key rotation, and a backtest engine gate every decision.

  5. 05

    On-chain execution

    Trades execute via Jupiter / Pump.fun, in shadow (paper) mode by default.

  6. 06

    MCP server

    Packaged as a local MCP server (22 tools) with a FastAPI + WebSocket dashboard.

Pump model AUC
0.82 (walk-forward)
Per-fold AUC spread
0.665 / 0.679 / 0.974 / 0.972
Training samples
7,188
MCP tools
22

Where the numbers come from

  • ›Pump model AUC 0.82: the mean of four walk-forward fold AUCs…

    Pump model AUC 0.82: the mean of four walk-forward fold AUCs (0.665, 0.679, 0.974, 0.972) recorded in the private repo's model card (LightGBM, trained 2026-02-20, on 7,188 labeled tokens: 3,388 positive / 3,800 negative). The fold table is published verbatim in the validation panel on this case study, with nothing else from the trading stack.

Bar chart of validation AUC for each of the four walk-forward folds of the LightGBM pump-probability model: 0.665, 0.679, 0.974 and 0.972, with a dashed line at the 0.823 fold mean and a dotted chance line at 0.50
Walk-forward fold AUCs, published verbatim from the private repo's model card (trained 2026-02-20). The card's 0.82 is the mean of the four folds shown.

What I'd improve

The pump model is honest but thin: it trades on five liquidity and market-cap features, and its walk-forward AUCs swing from 0.67 on early folds to 0.97 on later ones, which reads as regime sensitivity, not a solved problem. Next: richer pre-entry features, fold-stable validation before trusting the headline 0.82, and a long measured shadow run before any live capital, since paper fills price neither slippage nor adversarial MEV.

Private · request access
Want something like this? Get in touch →

Measured:30/30 chatbot evals·20-case Bastion eval·Serving·Calibration Lab

© 2026 Karim SemaanBuilt with Next.js, Tailwind & Supabase.LinkedIn ↗︎GitHub ↗︎