Pump and Dump Detection
Pump & Dump exposes a composite 0-10 score per coin built from derivatives positioning, holder concentration, liquidity quality, DEX flow, and price behavior. The pattern often signals artificial markup, distribution, or dump risk.
The signal is gated: a coin only qualifies when sufficient market coverage and multiple manipulation-risk signals align. Exact weights and thresholds are proprietary to reduce gaming.
The score updates every 30 minutes.
Get pump and dump data
Returns coins ranked by their composite pump-and-dump divergence score, descending.
Query parameters
- Name
limit- Type
- integer
- Description
Maximum number of coins to return.
1to500. Default100.
- Name
min_score- Type
- number
- Description
Filter to coins scoring at or above this threshold.
0to10. Default0.
- Name
phase- Type
- string
- Description
Filter to one phase:
setup,markup,distribution,dump, ordumping.
Response fields
- Name
coins- Type
- array
- Description
Array of scored coins, sorted by
scoredescending.
- Name
coins[].coin_id- Type
- string
- Description
Canonical coin slug.
- Name
coins[].symbol- Type
- string
- Description
Ticker symbol.
- Name
coins[].name- Type
- string
- Description
Display name.
- Name
coins[].score- Type
- number
- Description
Composite manipulation risk score from
0to10. Higher means stronger alignment across derivatives, market structure, holder, liquidity, and flow signals. If optional inputs are missing, the score is a conservative lower bound rather than a measured neutral reading.
- Name
coins[].signal_coverage_pct- Type
- integer
- Description
Weighted input completeness from
0to100across funding, price, derivatives, on-chain, and short-history groups.
- Name
coins[].signal_coverage_status- Type
- string
- Description
full,partial, orlimited. Compare scores only with their coverage in view.
- Name
coins[].incomplete_signal_groups- Type
- string[]
- Description
Signal families with one or more unavailable inputs.
- Name
coins[].score_interpretation- Type
- string
- Description
fully-observedorlower-bound-partial-inputs.
- Name
coins[].avg_funding_72h- Type
- number
- Description
Average funding rate across exchanges over the trailing 72 hours, expressed as a decimal.
- Name
coins[].funding_magnitude- Type
- number
- Description
Sub-score
[0, 1]reflecting the absolute size of negative funding (1.0 = -0.05%/8h or stronger).
- Name
coins[].pump_magnitude- Type
- number
- Description
Sub-score
[0, 1]reflecting the size of the 7-day price move on a log scale (100% pump ≈ 0.67, saturates at large pumps).
- Name
coins[].divergence_persistence- Type
- number
- Description
Sub-score
[0, 1]reflecting consecutive days funding has stayed negative.
- Name
coins[].derivatives_pressure- Type
- number
- Description
Sub-score
[0, 1]summarizing funding, OI, basis, CVD, liquidation, and cross-venue positioning pressure.
- Name
coins[].holder_concentration- Type
- number
- Description
Sub-score
[0, 1]summarizing top-holder, insider, dev, sniper, bundler, and holder-count concentration.
- Name
coins[].coordination_risk- Type
- number
- Description
Sub-score
[0, 1]summarizing camouflage-resistant wallet fragmentation, old-wallet flow, churn, and short-window holder changes.
- Name
coins[].market_structure_risk- Type
- number
- Description
Sub-score
[0, 1]summarizing holder concentration, liquidity fragility, flow imbalance, and contract/security context.
- Name
coins[].dump_pressure- Type
- number
- Description
Sub-score
[0, 1]summarizing active downside pressure from market and derivatives signals.
- Name
coins[].manipulation_phase- Type
- string
- Description
Current phase label: one of
setup,markup,distribution,coordination,dump-risk, orwatch.
- Name
coins[].price_funding_divergence- Type
- number
- Description
Deprecated. Alias of
pump_magnitude. Will be removed after a deprecation window. New consumers should usepump_magnitudedirectly.
- Name
coins[].consecutive_negative_days- Type
- integer
- Description
Number of consecutive trading days with negative average funding.
- Name
coins[].price_change_24h- Type
- number
- Description
Trailing 24h price change as a percentage.
- Name
coins[].price_change_7d- Type
- number
- Description
Trailing 7d price change as a percentage. Used as market context alongside holder, liquidity, flow, and derivatives signals.
- Name
coins[].top10_holders_pct- Type
- number | null
- Description
Share of supply held by the top 10 holders when on-chain data is available.
- Name
coins[].oi_change_24h- Type
- number | null
- Description
24h open-interest change as a decimal, when futures data is available.
- Name
coins[].cvd_trend_24h- Type
- number | null
- Description
24h taker-flow/CVD imbalance as a decimal, when exchange-reported taker-buy volume is available.
- Name
coins[].basis_rate_avg- Type
- number | null
- Description
Average perp basis as a decimal, when spot/index and futures price context is available.
- Name
coins[].volume_to_liquidity_24h- Type
- number | null
- Description
24h DEX volume divided by available liquidity. High values can indicate fragile churn.
- Name
coins[].old_wallet_swap_pct_1d- Type
- number | null
- Description
Percentage of recent DEX swap activity attributed to older wallets when available.
- Name
coins[].holders_change_pct- Type
- number | null
- Description
Holder-count change since the previous successful scoring run, expressed as a decimal.
- Name
coins[].top10_holders_pct_change- Type
- number | null
- Description
Change in top-10 holder share since the previous successful scoring run, expressed in percentage points.
- Name
coins[].signal_start_date- Type
- string
- Description
ISO 8601 timestamp of when the divergence began.
- Name
coins[].updated_at- Type
- string
- Description
ISO 8601 timestamp of the most recent score recomputation.
- Name
count- Type
- integer
- Description
Number of rows in
coins.
- Name
data_as_of- Type
- string | null
- Description
Latest
updated_attimestamp represented by the returned rows, in ISO 8601 format.nullwhen no valid score timestamp is available.
- Name
stale- Type
- boolean
- Description
truewhendata_as_ofis missing, invalid, or more than 45 minutes old.
- Name
freshness_sla_seconds- Type
- integer
- Description
Maximum supported score age in seconds. Currently
2700(45 minutes).
- Name
description- Type
- string
- Description
Plain-language summary of the signal for client display.
- Name
signal- Type
- object
- Description
Methodology metadata:
methodology,gate,update_frequency, and the list ofexchangesmonitored.
Request
curl -G https://www.sharpe.ai/api/v1/pump-dump/data \
-H "Authorization: Bearer sk_live_your_key_here" \
-d limit=20 \
-d min_score=4
Response
{
"data": {
"coins": [
{
"coin_id": "example-token",
"symbol": "EXMP",
"name": "Example Token",
"score": 7.6,
"signal_coverage_pct": 71,
"signal_coverage_status": "partial",
"incomplete_signal_groups": ["derivatives", "history"],
"score_interpretation": "lower-bound-partial-inputs",
"avg_funding_72h": -0.00021,
"funding_magnitude": 0.74,
"pump_magnitude": 0.78,
"divergence_persistence": 0.71,
"derivatives_pressure": 0.66,
"holder_concentration": 0.92,
"market_structure_risk": 0.84,
"dump_pressure": 0.52,
"manipulation_phase": "distribution",
"price_funding_divergence": 0.78,
"consecutive_negative_days": 5,
"price_change_24h": 4.81,
"price_change_7d": 18.2,
"signal_start_date": "2026-04-21T00:00:00Z",
"updated_at": "2026-04-26T07:00:00Z"
}
],
"count": 1,
"data_as_of": "2026-04-26T07:00:00Z",
"stale": false,
"freshness_sla_seconds": 2700,
"description": "Pump and dump risk scores based on derivatives positioning, holder concentration, liquidity quality, and DEX flow.",
"signal": {
"methodology": "Composite 0-10 risk score built from derivatives positioning, market structure, holder concentration, liquidity fragility, and flow imbalance. Exact weighting is proprietary to reduce gaming.",
"gate": "Requires sufficient cross-exchange futures coverage plus at least one strong manipulation-risk setup, markup, distribution, or dump-risk condition.",
"update_frequency": "every 30 minutes",
"exchanges": [
"Binance", "Bybit", "OKX", "Gate.io", "Bitget", "Hyperliquid",
"Deribit", "BitMEX", "HTX", "BingX", "CoinEx", "KuCoin", "MEXC"
]
}
},
"meta": {
"request_id": "req_pumpdump_xyz789",
"timestamp": "2026-04-26T07:00:05Z",
"elapsed_ms": 12
}
}
The response header X-Sharpe-Data-State is ok or stale using the same 45-minute SLA. Stale rows remain available with HTTP 200, but clients should treat them as historical context rather than a current trading signal. Database or query failures use the normal explicit API error envelope.
How the score is built
The score is a composite risk model capped at 10. It uses multiple signal families:
- Derivatives pressure: funding, open interest, basis, true taker-flow/CVD, and liquidation context.
- Holder concentration: top-holder, insider, dev, sniper, bundler, and holder-count context.
- Liquidity and flow quality: liquidity depth, volume-to-liquidity churn, buy/sell imbalance, and old-wallet activity.
- Phase detection: setup, markup, distribution, and dump-risk behavior.
We publish the signal families and validation process, but not the exact formula, weights, or thresholds. That keeps the leaderboard harder to game while still making the approach understandable to users.
Unavailable optional inputs contribute no risk. This intentionally keeps a partial-input score conservative, but it also means the number is a lower bound rather than directly comparable with a fully observed row. Always inspect signal_coverage_pct, signal_coverage_status, and incomplete_signal_groups alongside score.