Labels & Taxonomy
Every active wallet is classified in real time across four axes plus a set of behavioral and identity badges — all statistically derived from closed-position outcomes, not keyword matching. The full label set is 45+ fields.
The four axes
| Axis | Values |
|---|---|
trader_type | SCALPER · DAY_TRADER · SWING_TRADER · POSITION_TRADER |
performance_level | PROFITABLE · BREAK_EVEN · UNPROFITABLE · UNRATED · BANNED |
size_class | SHRIMP · FISH · SHARK · WHALE |
exit_style | FULL_EXITER · DCA_OUT · PARTIAL_TAKER · MIXED |
Badges
Trade badges (behavior-derived): RUNNER_KEEPER · CONFIDENCE_SIZER · STOP_LOSS_USER · CONSISTENT_WINNER · BAG_HOLDER · LOSS_CUTTER · LOTTO_PLAYER · DIAMOND_HANDS · PAPER_HANDS · ELITE_TRADER · VETERAN_WINNER
Identity badges (infrastructure-derived): HFT_BOT · FLASH_BOT · ARB_BOT · WASH_TRADER · TOOL_* · FRESH_FUNDED_6H · FUNDED_BY_FARM · DEX_SPECIALIST_* · TOKEN_CONCENTRATED · ROOT_CEX · ROOT_DEX_AUTH
The label object
Alongside the axes and badges, the payload carries the metrics behind the classification and the wallet’s tooling/funding fingerprint.
| Field | Type | Description |
|---|---|---|
trader_type · performance_level · size_class · exit_style | string | The four axes |
automation_label | string | ORGANIC … automation classification |
bot_share | number | Fraction of trades placed by bots (0–1) |
primary_terminal · primary_tool | string | Dominant trading frontend |
primary_tool_pct | number | Share of trades via the primary tool |
primary_dex · primary_dex_pct | string · number | Dominant venue and its share |
funded_by_farm | boolean | Funded by a farm distributor |
root_source · provenance_hops | string · number | Funding origin (Provenance) |
total_trades · win_rate_pct · total_pnl | number | Activity summary |
sharpe_ratio · profit_factor | number | Risk-adjusted metrics |
trade_badges · identity_badges | string[] | Badge sets above |
REST
L2 GET /v1/wallet/{address}/labels
curl -H "Authorization: Bearer $API_KEY" \
"https://api.conyr.ai/v1/wallet/7xKXtg.../labels"{
"wallet": "7xKXtg...",
"trader_type": "DAY_TRADER",
"performance_level": "PROFITABLE",
"size_class": "SHARK",
"exit_style": "DCA_OUT",
"automation_label": "ORGANIC",
"bot_share": 0.05,
"primary_terminal": "photon", "primary_tool": "photon", "primary_tool_pct": 0.85,
"primary_dex": "raydium", "primary_dex_pct": 0.72,
"funded_by_farm": false, "root_source": "Binance", "provenance_hops": 3,
"total_trades": 342, "win_rate_pct": 63.0, "total_pnl": 12450.32,
"sharpe_ratio": 1.8, "profit_factor": 2.1,
"trade_badges": ["CONSISTENT_WINNER", "RUNNER_KEEPER", "STOP_LOSS_USER"],
"identity_badges": ["ROOT_CEX", "TOOL_PHOTON"]
}Stream
L2 Channel wallet:{address}:labels
The full label payload, re-published whenever a wallet’s classification changes. Deduplicated via a composite state hash (only fires on a real change) and rate-limited to a 30s minimum interval per wallet.
ws.send(JSON.stringify({ op: "subscribe", channels: ["wallet:7xKXtg...:labels"] }));Labels recompute continuously as positions close — no nightly batch. win_rate_pct here is the per-exit rate; for the position-correct skill read see Wallet Quality. Cached 60s on REST.