Insider Selling
Insider Selling exposes a composite 0-10 pressure score per coin built from 72-hour funding rate magnitude, persistence, and consecutive negative funding days across 13 perpetual futures exchanges. High scores indicate sustained, market-wide short positioning that often precedes drawdowns.
The signal updates every 30 minutes and is gated to coins where the score is strictly greater than zero, so an empty list means no qualifying pressure right now.
Get insider selling data
Returns coins ranked by their composite insider selling pressure 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.
Response fields
- Name
coins- Type
- array
- Description
Array of scored coins, sorted by
scoredescending.
- Name
coins[].coin_id- Type
- string
- Description
CoinGecko-style slug.
- Name
coins[].symbol- Type
- string
- Description
Ticker symbol.
- Name
coins[].name- Type
- string
- Description
Display name.
- Name
coins[].score- Type
- number
- Description
Composite pressure score from
0to10. Higher means more sustained short positioning.
- Name
coins[].avg_funding_72h- Type
- number
- Description
Average funding rate across exchanges over the trailing 72 hours, expressed as a decimal (e.g.
-0.00012is -0.012%).
- Name
coins[].funding_magnitude- Type
- number
- Description
Sub-score reflecting the absolute size of negative funding.
- Name
coins[].funding_persistence- Type
- number
- Description
Sub-score reflecting how consistently the funding stays negative.
- 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.
- Name
coins[].signal_start_date- Type
- string
- Description
ISO 8601 timestamp of when the negative funding streak 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
description- Type
- string
- Description
Plain-language summary of the signal for client display.
- Name
signal- Type
- object
- Description
Methodology metadata:
methodology,update_frequency, and the list ofexchangesmonitored.
Request
curl -G https://www.sharpe.ai/api/v1/insider-selling/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": 8.4,
"avg_funding_72h": -0.00018,
"funding_magnitude": 7.9,
"funding_persistence": 8.8,
"consecutive_negative_days": 12,
"price_change_24h": -3.21,
"price_change_7d": -11.4,
"signal_start_date": "2026-04-14T00:00:00Z",
"updated_at": "2026-04-26T07:00:00Z"
}
],
"count": 1,
"description": "Insider selling pressure scores based on persistent negative funding rates across 13 perpetual futures exchanges.",
"signal": {
"methodology": "Composite score (0-10) based on funding rate magnitude and persistence. Higher scores indicate stronger evidence of systematic short positioning.",
"update_frequency": "every 30 minutes",
"exchanges": [
"Binance", "Bybit", "OKX", "Gate.io", "Bitget", "Hyperliquid",
"Deribit", "BitMEX", "HTX", "BingX", "CoinEx", "KuCoin", "MEXC"
]
}
},
"meta": {
"request_id": "req_insider_abc123",
"timestamp": "2026-04-26T07:00:05Z"
}
}
How the score is built
The score is a weighted blend of two components, both normalized to a 0-10 scale:
- Magnitude — how negative the trailing 72h average funding rate is across exchanges. A coin paying -0.05% every 8 hours scores higher than one at -0.005%.
- Persistence — how many consecutive trading days the average funding has stayed negative. A 14-day streak scores higher than a 2-day blip.
Coins with score == 0 are filtered out of the response, so the coins array is always meaningfully populated when returned.