Graded whale signals API Business
Every Deep Blue Alpha whale signal since April 2026 with 1/7/30-day % change and ETH over the same window, graded on closing prices. /api/v1/signals, /signals/summary, backtests by key.
Home › API docs › Graded whale signals · Updated 2026-10-26
Business keys can read every whale signal Deep Blue Alpha has fired since April 2026, each with the coin’s % change 1, 7 and 30 days later and ETH’s change over the same window, graded on closing prices (never peaks). GET /api/v1/signals returns the rows, GET /api/v1/signals/summary aggregates them, and POST /api/backtest/run runs a backtest with a Business key. Past results do not predict future results; this is not investment advice.
Endpoints
Base URL https://deepbluealpha.io · JSON over HTTPS · Ethereum mainnet only.
X-API-Key header. Whale-plan keys get 403.POST /api/backtest/run: 30 runs per hour per account.Parameters
| Name | Type | Default | Description |
|---|---|---|---|
start, end | date | last 30 days | YYYY-MM-DD; a bare end date includes that whole day. Maximum window 400 days. |
signal_type | string | all | Comma-separated signal type names, e.g. WHALE_CLUSTER,CONSENSUS. |
token | string | all | One token symbol. |
graded_only | boolean | false | /signals: only rows with a 7-day result. |
limit, after_id | integer | 500, 0 | /signals: up to 1,000 rows per page; pass next_after_id as after_id (null on the last page). |
Example request (curl)
curl -s -H "X-API-Key: $DBA_API_KEY" \
"https://deepbluealpha.io/api/v1/signals/summary?start=2026-07-01&end=2026-09-30"
curl -s -X POST -H "X-API-Key: $DBA_API_KEY" -H "Content-Type: application/json" \
-d '{"start":"2026-08-01","end":"2026-09-30","signal_types":[]}' \
https://deepbluealpha.io/api/backtest/run
Python example
import os, requests
BASE = "https://deepbluealpha.io/api/v1"
HEADERS = {"X-API-Key": os.environ["DBA_API_KEY"]} # dba_...
rows, after = [], 0
while True:
r = requests.get(f"{BASE}/signals", headers=HEADERS, timeout=30, params={
"start": "2026-07-01", "end": "2026-09-30", "graded_only": "true",
"limit": 1000, "after_id": after})
r.raise_for_status()
d = r.json()["data"]
rows += d["signals"]
if not d["next_after_id"]:
break
after = d["next_after_id"]
print(len(rows), "graded signals")
Sample response EXAMPLE VALUES
{
"data": {
"signals": [
{
"signal_id": "sg_12345",
"fired_at_utc": "2026-09-01T08:00:00Z",
"signal_type": "WHALE_CLUSTER",
"token": "LINK",
"token_address": "0x5149…86ca",
"entry_price_usd": 10.0,
"ret_1d_pct": 1.0, "ret_7d_pct": 2.0, "ret_30d_pct": -3.0,
"eth_1d_pct": 0.5, "eth_7d_pct": 1.0, "eth_30d_pct": -1.0,
"vs_eth_7d_pct": 1.0,
"verdict_7d": "WIN",
"complete": true
}
],
"next_after_id": null,
"window": { "start": "2026-09-01T00:00:00", "end": "2026-10-01T00:00:00" },
"note": "Graded on closing prices ... Past results do not predict future results. Not investment advice."
},
"meta": { "tier": "whale", "endpoint": "/api/v1/signals",
"generated_at": "2026-10-01T12:00:00+00:00", "plan": "business" }
}
Field names and structure are the real ones; the numbers, hashes and addresses are placeholders, not live data.
Fields
| Field | Meaning |
|---|---|
ret_1d_pct / ret_7d_pct / ret_30d_pct | Coin’s % change from entry (median price within 2 hours of the signal) to the median price around +1d / +7d / +30d. null = not matured or no price data. |
eth_*_pct / vs_eth_7d_pct | ETH over the same window, and the coin minus ETH at 7 days. |
verdict_7d | BIG_WIN above +10%, WIN above +1%, FLAT above −1%, else LOSS. |
summary: n, hit_rate_pct, beat_eth_rate_pct, … | /signals/summary per signal type and overall: count, share above +1% at 7 days, verdict counts, average and median 7-day result, share that beat ETH. |
Notes and limits
- The same rows ship daily as
dba_graded_signals.csv.gzin the Business data files. - Backtest body:
startandend(required, at most 365 days apart, not in the future) andsignal_types(optional list; empty runs every type; unknown names return 400). - Signals describe on-chain events. They are retrospective data for research, not trade instructions.
Errors
401— Missing, invalid or revoked API key.403— Not a Business key.429— Daily limit or the 30 backtests/hour limit reached.400— Bad dates, window over 400 days, or unknown signal type.
FAQ
How are Deep Blue Alpha whale signals graded?
On closing prices, never peaks: entry is the median price within 2 hours of the signal and the outcome is the median price around 1, 7 and 30 days later, alongside ETH over the same window. Past results do not predict future results.
More endpoint docs
Guides: best Ethereum whale tracking APIs compared · real-time whale tracking for a trading bot · whale webhook APIs · methodology · OpenAPI 3.0 spec · Business plan