Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/tripolskypetr/pump-anomaly/llms.txt

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

DEFAULT_GRID in src/train.ts is deliberately asset-agnostic — a small, balanced search space that works for any coin. The per-asset grids in the config/ folder specialize the search space to how each coin actually pumps. They do not bypass the statistical gates: fit still runs time-series K-fold, 1-SE selection, and certification within whatever ranges the grid defines. What they do is make the search look in the right place, rather than spending compute on horizons or stop widths that never win for a given asset.

The Unifying Principle

Pump speed → everything else follows.
1

Faster asset → shorter horizons

staleMinutes controls the position life-cap (the empirical impact horizon). Memecoins spike and collapse in minutes; BTC moves develop over days.
2

Shorter horizons → tighter stops

A 45-minute window cannot afford a 5% hard stop — the position exits at life-cap before the stop matters. Fast assets get tight hardStop (0.7–2.0%) and tight trailingTake.
3

Tighter stops → shorter cascade windows

Liquidation cascades on memecoins complete in 8–15 minutes. Measuring them over a 60-minute cascadeWindowMinutes smears out the signal. Shorter windows for faster assets.
4

Faster regime drift → shorter stationarity

Channel behavior around HYPE changes in days; around BTC it drifts over months. stationarityWindowMs is shortened for fast assets so the author matrix stays current.
5

More noise → looser matrix

Memecoins have many spam channels and sibling families. Lower jaccardThreshold and lagPeakThreshold values let the detector catch bursts through the noise rather than waiting for a pristine signal.
6

More noise → more aggressive squeeze handling

Stop-hunts via liquidation cascades are frequent on memecoins. squeezePolicy: ["none","tighten","veto","invert"] is kept for memes; invert is dropped for majors where it wins less often.

Asset Grid Summary

Full table from config/README.md. staleMinutes and hardStop show the range spanned by the gridfit picks within it.
AssetPump speedstaleMinuteshardStop %cascadeWindowNoiseMatrix strictness
FartcoinVery fast25m – 4h0.65–2.08–40mVery highLow
HYPEVery fast30m – 4h0.7–2.08–40mHighLow
Solana (SOL)Fast45m – 8h0.8–2.510–40mHighLow–Med
TRXMedium1.5h – 15h1.0–3.018–110mMediumMedium
TONMedium-fast1h – 12h1.0–3.015–90mMediumMedium
DOGEMedium1.5h – 16h1.1–3.220–120mMedium+Medium+
BNBMedium3h – 24h1.2–3.525–160mMediumMedium+
Ethereum (ETH)Slow2h – 24h1.2–3.520–90mLowHigh
Ripple (XRP)Medium-slow3h – 24h1.3–4.030–180mLow–MedHigh
Litecoin (LTC)Medium-slow4h – 30h1.3–3.835–220mLow–MedHigh
Zcash (ZEC)Medium-slow4h – 28h1.4–4.230–200mLow–MedHigh
Stellar (XLM)Medium-slow4h – 30h1.4–4.040–240mLowHigh
Chainlink (LINK)Medium-slow5h – 32h1.4–4.035–240mLow–MedHigh
Polkadot (DOT)Medium-slow5h – 36h1.5–4.240–260mLow–MedHigh
Bitcoin (BTC)Slow6h – 48h+1.8–5.045–300mLowVery high

Reading the Grid Parameters

Each axis in a TrainGrid controls a different aspect of the model. Here is what each one means and why it varies by asset:
The life-cap on a position in 1-minute candles. A signal that hasn’t exited via trailing take, hard stop, or staleness after staleMinutes closes at the last candle’s price (realized pnl can be negative). This is the empirical impact horizon of the post — how long the signal’s market effect actually lasts. Training searches this axis to find the horizon where the edge is real, not the one that looks best in hindsight.
hardStop is the maximum loss as a percentage of entry price. trailingTake is the trailing pullback threshold from peak PnL (once currentProfit ≥ stalenessSinceProfit). Tight values protect against large losses on volatile assets; wide values give room for pullbacks on deep-but-smooth major-coin moves. Training labels use path-aware replay — a wick into the hard stop is an honest loss, not a near-miss.
The window over which squeezePressure (fraction of volume moving against the position) is measured. This is independent of staleMinutes — a squeeze is a fast event (minutes), and measuring it over a 24-hour window smears it out completely. On memecoins this window is 8–40 minutes; on BTC it extends to 45–300 minutes. Historically this axis was conflated with the holding horizon; they are now separate grid axes.
These three axes control the authorship-matrix detector. jaccardThreshold is the minimum Jaccard overlap between two channels’ ticker mentions for a coarse screen to pass. lagPeakThreshold is how sharp the cross-correlation peak must be for a “follows” edge. windowK multiplies the self-tuned lag τ to set the burst-detection window. Lower values = looser, catches more bursts in noisy environments. Higher values = stricter, requires a cleaner multi-channel signal.
The lookback window for computing τ (characteristic lag) and the author matrix. On a long horizon these statistics get corrupted — channels appear and go quiet, sibling pairs break up, a January correlation has nothing to do with May. A finite stationarity window drops stale connections. Shorter for fast-changing meme ecosystems (days), longer for stable major-coin channels (months).
The trained response when squeezePressure exceeds squeezeThreshold:
  • none — normal entry.
  • tighten — tighten the trailing take (returned already tightened by 0.5×); exit before the reversal.
  • veto — don’t enter; the signal is filtered out entirely.
  • invert — enter against the post (the stop-hunt strategy): channel posted short → cascade squeezes upward → enter long. The direction is already flipped in the returned signal.
Memecoins keep invert because liquidation-cascade inversions work there. Majors typically drop it; the BTC_GRID uses ["none", "tighten", "veto"].

Using a Per-Asset Grid

The per-asset grid files define a grid constant and the intended fit() options. Wire in your own history and getCandles:
import { PumpMatrix } from "pump-anomaly";
import { SOLANA_GRID } from "./config/solana-grid.mjs";

const model = await PumpMatrix.fit(history, getCandles, {
  grid: SOLANA_GRID,
  folds: 4,
  shrinkageK: 6,
  mode: "auto",
  viability: { minSharedEvents: 4, minPeakShare: 0.55 },
});

if (!model.certification.certified) {
  console.warn("not certified:", model.certification.reasons);
}
For BTC the grid and options are more conservative:
import { BTC_GRID } from "./config/btc-grid.mjs";

const model = await PumpMatrix.fit(history, getCandles, {
  grid: BTC_GRID,
  folds: 5,
  shrinkageK: 6,
  mode: "auto",
  maxBurstWindowMs: 48 * 60 * 60 * 1000, // 48-hour burst ceiling
  viability: {
    minSharedEvents: 5,
    minPeakShare: 0.62,
    minStrongEdges: 2,
  },
});

Memecoins vs Majors

Memecoins (Fartcoin, HYPE, SOL)

Short staleMinutes (25m–8h), tight hardStop (0.65–2.5%), short cascadeWindowMinutes (8–40m), short stationarityWindowMs (days), loose matrix (low jaccardThreshold/lagPeakThreshold to catch bursts through noise), invert kept (liquidation-cascade reversals are frequent and profitable), high shrinkageK (7–8, fat outlier protection), refit every 3–7 days.

Majors (BTC, ETH, XRP, LTC, XLM, LINK, DOT)

Long staleMinutes (2h–48h+), wide hardStop (1.2–5.0%), long cascadeWindowMinutes (20–300m), long stationarityWindowMs (weeks–months), strict matrix (high thresholds, minSharedEvents 4–5, minStrongEdges 2), invert dropped (["none","tighten","veto"] only), lower shrinkageK (5–6), refit every 2–8 weeks.
The mid-tier assets (TRX, TON, DOGE, BNB) balance the two extremes. TON is Telegram-native — many channels, high synchrony, faster regime drift than ETH. DOGE is social-media driven with powerful but longer pumps and deeper pullbacks than pure memes.
These grids are informed starting points, not backtested optimal values. The grid only defines what the search may try — fit still picks the winner by time-series K-fold and the 1-SE rule, and model.certification decides whether the result is tradeable. A grid tuned to an asset’s regime makes the search look in the right place; it does not bypass the statistical gates.

Build docs developers (and LLMs) love