Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/0xW1re/solvedocs/llms.txt

Use this file to discover all available pages before exploring further.

The Genesis Watcher is a separate sub-pipeline dedicated to the first 60 seconds of a token’s life. Standard ML signals fire when a tracked wallet buys — they are, by definition, reactive. Genesis signals are different: they attempt to predict a token’s outcome from its launch dynamics, before any tracked wallet has touched it. A token’s first minute is a chaotic mix of bots, insiders, random retail, and occasionally genuine organic interest. The genesis models are trained to distinguish the patterns that survive from the ones that die.

How it works

1

Observation window opens on create

When a create event arrives from the Pump.fun program, the Genesis Watcher immediately opens an observation window for that token. Every trade event for that token for the next 60 seconds is accumulated in memory. The system handles up to 500 active tokens simultaneously before the oldest windows begin to be evicted.
2

Early check at 30 seconds

At 30 seconds, an early check runs. If the token shows signs of being already dead — no buys, curve not moving — the observation is aborted immediately. If the token shows exceptionally high conviction early, a signal can be emitted before the full 60 seconds elapse.
3

Full scoring at 60 seconds

At 60 seconds, the full 75-feature vector is assembled and run through the genesis ONNX models. If the score exceeds the strategy threshold, a genesis_signal is published to the trade:signals Redis channel for the live trader to consume.
Every 10 seconds during active observation windows, the watcher performs a batch DB lookup to resolve which current buyers are in the wallet database. This populates the buyer quality features. A Redis cache (wcache:<wallet>) with a 5-minute TTL minimises redundant queries during burst periods.

The 75-feature genesis vector

Genesis features are fundamentally different from standard features — they describe the token and its launch context, not a specific wallet. This is also why genesis uses 75 features while the standard signal model uses 68: the genesis context requires additional token-level and buyer-flow dimensions that have no equivalent in the standard pipeline.
Feature groupCountWhat it captures
Creator history10Graduation rate, rug rate, risk score, serial velocity, avg insider pct, avg bot pct, days since last token, whether the creator has ever graduated a token
Token metadata7Name length, symbol length, presence of numbers in name, all-caps name, metadata URI presence, hour of day and day of week at creation
Buyer flow dynamics14Buy/sell counts and unique buyers at 30s and 60s, SOL volume, avg/median/max/stddev of buy sizes, time to first buy, avg time between buys, timing stddev, pct of buys within 2s of each other
Price action10Curve SOL at 30s and 60s, curve pct, price change pct, max price multiple within 60s, price momentum 30s→60s, sell ratio, net SOL flow, time to first sell
Creator behaviour4Whether the creator bought their own token, creator buy SOL amount, whether the creator sold within 60s and how much
Advanced derived11Buy concentration (HHI), organic timing score, buyer diversity, momentum ratio, buys per unique buyer, pct round-number buy sizes, curve SOL acceleration, largest single buyer’s share, sell/buy size ratio
Buyer quality12Pct buyers in wallet DB, pct in tracked wallet set, pct classified as bots, pct fresh wallets, avg and max buyer graduation rates, avg win rate and tokens traded, wallet age, top-3 buyers’ avg graduation rate, avg concurrent buys per buyer, pct buying multiple tokens simultaneously
Market context3Tokens created in the last hour, rolling graduation rate over the last 2 hours, market regime (encoded: 0=bear, 1=transition, 2=bull_normal, 3=euphoria)

Genesis signal vs standard signal

Standard signals fire when a tracked wallet buys a token. They require a wallet the system already knows — which means the wallet has a scored history, and the system can attach confidence to the signal based on that history. Genesis signals require no tracked wallet at all. They fire based purely on what the token itself is doing in its first minute. This makes genesis the only mechanism in Alpha Leak that can surface a completely new token before any known alpha wallet has touched it. The tradeoff: genesis signals carry higher uncertainty per individual signal, which is why genesis strategies use tighter score thresholds and the dead-probability veto.

Genesis strategies

The genesis models support multiple strategy configurations, each targeting a different outcome.
StrategyTargetScore thresholdTake profitHold limit
genesis_3x_30m3× in 30 minutes90%30 min
genesis_5x_2h5× in 2 hours80%2 hr
genesis_2x_5m2× in 5 minutes90%5 min
genesis_3x_1h3× in 1 hour90%60 min
The watcher evaluates each enabled strategy in priority order and emits the highest-priority signal that exceeds its threshold. A token generates at most one genesis signal per observation window.
The dead-probability score (is_dead_5m) acts as a veto: if the model predicts the token is likely dead within 5 minutes, the genesis signal is suppressed regardless of the target model’s score.

Signal payload

The genesis signal published to Redis includes the full feature dictionary for logging and post-hoc analysis. The live trader uses selectedStrategy to look up the correct take-profit, stop-loss, and hold-time configuration.
{
  "type": "genesis_signal",
  "data": {
    "tokenMint": "...",
    "symbol": "TOKEN",
    "creator": "...",
    "selectedStrategy": "genesis_3x_30m",
    "genesisScore": 0.93,
    "deadProb": 0.04,
    "aliveProb": 0.88,
    "predPeak": 4.2,
    "entryPrice": 0.000001234,
    "features": { }
  }
}
On the live SSE feed, genesis signals arrive as data.type === 'genesis_signal' events. You can read the score directly from data.data.genesisScore:
es.addEventListener('signal', (event) => {
  const data = JSON.parse(event.data);

  if (data.type === 'genesis_signal') {
    console.log('Genesis:', data.data.symbol, `score: ${data.data.genesisScore}`);
    console.log('Strategy:', data.data.selectedStrategy);
    console.log('Predicted peak:', data.data.predPeak, '×');
  }
});

Build docs developers (and LLMs) love