Wallet Scores API
The Stratium Wallet Scores API provides programmatic access to enriched Solana wallet quality metrics, including a composite enriched_score (0-1), profit_factor, max_drawdown_pct, consistency_score, and 17 additional trading performance indicators computed from on-chain FIFO P&L analysis across 30+ DEX programs.
Quick Start
# Get the score for a specific wallet
curl "https://api.stratiumsol.com/v1/wallets/7xKXLkq...9bPq/score" \
-H "X-API-Key: sk_live_your_key"
# List top scored wallets
curl "https://api.stratiumsol.com/v1/wallets/scored?min_score=0.7&limit=20" \
-H "X-API-Key: sk_live_your_key"const API_KEY = process.env.STRATIUM_API_KEY!;
const BASE = "https://api.stratiumsol.com/v1";
// Single wallet score
const score = await fetch(`${BASE}/wallets/${walletAddress}/score`, {
headers: { "X-API-Key": API_KEY },
}).then((r) => r.json());
console.log(score.data.enriched_score); // 0.847
// Top scored wallets
const top = await fetch(`${BASE}/wallets/scored?min_score=0.7&limit=20`, {
headers: { "X-API-Key": API_KEY },
}).then((r) => r.json());
for (const wallet of top.data) {
console.log(`${wallet.wallet_address}: ${wallet.enriched_score}`);
}import os
import requests
API_KEY = os.environ["STRATIUM_API_KEY"]
BASE = "https://api.stratiumsol.com/v1"
HEADERS = {"X-API-Key": API_KEY}
# Single wallet score
score = requests.get(f"{BASE}/wallets/{wallet_address}/score", headers=HEADERS).json()
print(score["data"]["enriched_score"]) # 0.847
# Top scored wallets
top = requests.get(f"{BASE}/wallets/scored", params={"min_score": 0.7, "limit": 20}, headers=HEADERS).json()
for wallet in top["data"]:
print(f"{wallet['wallet_address']}: {wallet['enriched_score']}")# Get the score for a specific wallet
curl "https://api.stratiumsol.com/v1/wallets/7xKXLkq...9bPq/score" \
-H "X-API-Key: sk_live_your_key"
# List top scored wallets
curl "https://api.stratiumsol.com/v1/wallets/scored?min_score=0.7&limit=20" \
-H "X-API-Key: sk_live_your_key"const API_KEY = process.env.STRATIUM_API_KEY!;
const BASE = "https://api.stratiumsol.com/v1";
// Single wallet score
const score = await fetch(`${BASE}/wallets/${walletAddress}/score`, {
headers: { "X-API-Key": API_KEY },
}).then((r) => r.json());
console.log(score.data.enriched_score); // 0.847
// Top scored wallets
const top = await fetch(`${BASE}/wallets/scored?min_score=0.7&limit=20`, {
headers: { "X-API-Key": API_KEY },
}).then((r) => r.json());
for (const wallet of top.data) {
console.log(`${wallet.wallet_address}: ${wallet.enriched_score}`);
}import os
import requests
API_KEY = os.environ["STRATIUM_API_KEY"]
BASE = "https://api.stratiumsol.com/v1"
HEADERS = {"X-API-Key": API_KEY}
# Single wallet score
score = requests.get(f"{BASE}/wallets/{wallet_address}/score", headers=HEADERS).json()
print(score["data"]["enriched_score"]) # 0.847
# Top scored wallets
top = requests.get(f"{BASE}/wallets/scored", params={"min_score": 0.7, "limit": 20}, headers=HEADERS).json()
for wallet in top["data"]:
print(f"{wallet['wallet_address']}: {wallet['enriched_score']}")Endpoints
/api/v1/wallets/scoredPaginated list of scored wallets with enriched metrics. Supports filtering by score, PnL, sell count, and sorting.
/api/v1/wallets/{address}/scoreFull score and all 21 metrics for a specific wallet address.
/api/v1/wallets/streamServer-Sent Events stream of new wallet scores and discovery pipeline events in real time.
Request Parameters
GET /api/v1/wallets/scored
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
min_score | number | Optional | 0 | Minimum enriched_score (0-1) |
min_sell_count | integer | Optional | 10 | Minimum number of SELL trades |
min_pnl_sol | number | Optional | 0 | Minimum total_pnl_sol |
sort_by | string | Optional | enriched_score | Sort field: enriched_score, win_rate, total_pnl_sol, sell_count |
order | string | Optional | desc | Sort order: asc or desc |
limit | integer | Optional | 20 | Results per page (max 100) |
offset | integer | Optional | 0 | Pagination offset |
GET /api/v1/wallets/{address}/score
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
address | string | Required | — | Solana wallet address (base58, 32-44 characters) |
Response Schema
interface WalletScore {
wallet_address: string; // Solana wallet address
enriched_score: number; // Composite quality score (0-1)
win_rate: number; // % of SELL trades profitable
total_pnl_sol: number; // Total realized PnL in SOL
sell_count: number; // Total SELL trades analyzed
win_count: number; // Profitable SELL trades
avg_pnl_percent: number; // Average PnL per trade (%)
avg_holding_time_sec: number; // Average holding time in seconds
best_trade_pnl_sol: number; // Largest single-trade PnL
profit_factor: number; // Gross profit / gross loss
max_drawdown_pct: number; // Worst peak-to-trough decline (%)
consistency_score: number; // Performance consistency (0-1)
sharpe_per_trade: number; // Risk-adjusted return per trade
concentration_top_token_pct: number; // % PnL from top token
concentration_top_token: string; // Mint of top PnL token
median_hold_time_sec: number; // Median holding time
sizing_cv: number; // Trade size coefficient of variation
noise_flags: string[]; // Quality flags: high_frequency,
// single_token, small_trades,
// round_trip, young_wallet
discovery_source: string; // How wallet was discovered
review_status: string; // scored | promoted
updated_at: string; // ISO 8601 timestamp
}{
"success": true,
"data": {
"wallet_address": "7xKXLkqR2gNJmV4wHs7s3N9bPq",
"enriched_score": 0.847,
"win_rate": 72.4,
"total_pnl_sol": 142.8,
"sell_count": 156,
"win_count": 113,
"avg_pnl_percent": 18.4,
"avg_holding_time_sec": 3240,
"best_trade_pnl_sol": 28.6,
"profit_factor": 3.21,
"max_drawdown_pct": 12.5,
"consistency_score": 0.89,
"sharpe_per_trade": 0.42,
"concentration_top_token_pct": 15.2,
"concentration_top_token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"median_hold_time_sec": 2100,
"sizing_cv": 0.34,
"noise_flags": [],
"discovery_source": "program_observer",
"review_status": "scored",
"updated_at": "2026-04-14T08:30:00Z"
},
"timestamp": "2026-04-14T12:00:00Z"
}interface WalletScore {
wallet_address: string; // Solana wallet address
enriched_score: number; // Composite quality score (0-1)
win_rate: number; // % of SELL trades profitable
total_pnl_sol: number; // Total realized PnL in SOL
sell_count: number; // Total SELL trades analyzed
win_count: number; // Profitable SELL trades
avg_pnl_percent: number; // Average PnL per trade (%)
avg_holding_time_sec: number; // Average holding time in seconds
best_trade_pnl_sol: number; // Largest single-trade PnL
profit_factor: number; // Gross profit / gross loss
max_drawdown_pct: number; // Worst peak-to-trough decline (%)
consistency_score: number; // Performance consistency (0-1)
sharpe_per_trade: number; // Risk-adjusted return per trade
concentration_top_token_pct: number; // % PnL from top token
concentration_top_token: string; // Mint of top PnL token
median_hold_time_sec: number; // Median holding time
sizing_cv: number; // Trade size coefficient of variation
noise_flags: string[]; // Quality flags: high_frequency,
// single_token, small_trades,
// round_trip, young_wallet
discovery_source: string; // How wallet was discovered
review_status: string; // scored | promoted
updated_at: string; // ISO 8601 timestamp
}{
"success": true,
"data": {
"wallet_address": "7xKXLkqR2gNJmV4wHs7s3N9bPq",
"enriched_score": 0.847,
"win_rate": 72.4,
"total_pnl_sol": 142.8,
"sell_count": 156,
"win_count": 113,
"avg_pnl_percent": 18.4,
"avg_holding_time_sec": 3240,
"best_trade_pnl_sol": 28.6,
"profit_factor": 3.21,
"max_drawdown_pct": 12.5,
"consistency_score": 0.89,
"sharpe_per_trade": 0.42,
"concentration_top_token_pct": 15.2,
"concentration_top_token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"median_hold_time_sec": 2100,
"sizing_cv": 0.34,
"noise_flags": [],
"discovery_source": "program_observer",
"review_status": "scored",
"updated_at": "2026-04-14T08:30:00Z"
},
"timestamp": "2026-04-14T12:00:00Z"
}Rate Limits
Pricing Tiers
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Signal tier | $99/mo | Optional | 60 req/min | Full access to all Wallet Scores endpoints |
Analytics tier | $249/mo | Optional | 120 req/min | Wallet Scores + PnL Analytics |
Backtest tier | $499/mo | Optional | 120 req/min | All endpoints |
Starting from. Pricing details finalized at launch.
Use Cases
Trading bot integration
Filter wallets by enriched_score and win_rate to dynamically select copy-trading targets. Automatically pause copying when a wallet's score drops below threshold.
Portfolio risk screening
Use max_drawdown_pct, profit_factor, and consistency_score to assess whether a wallet's risk profile matches your fund's mandate before allocating capital.
Alpha discovery pipeline
Subscribe to the SSE stream to receive real-time notifications when new wallets pass scoring. Build custom second-stage filters on top of Stratium's 9-layer pipeline.
Research and analytics
Analyze the distribution of noise_flags, concentration metrics, and holding time patterns across scored wallets to identify emerging on-chain trading strategies.
Start Building with Wallet Scores
The API is in private beta. Request access to integrate enriched wallet intelligence into your application.
Request API AccessFrequently Asked Questions
What is enriched_score and how is it calculated?
The enriched_score is a composite quality metric ranging from 0 to 1, computed from win rate, profit factor, consistency, drawdown severity, trade sizing variance, and holding time distribution. Higher scores indicate wallets with more reliable, consistent trading performance. The exact weighting is proprietary and updated periodically as the scoring model improves.
Which wallets are available through the Wallet Scores API?
Only wallets that have been discovered and scored by Stratium's Alpha Forge pipeline are available. Wallets must pass observation thresholds (minimum sell count), complete historical backfill, and survive a 3-tier quality triage. Approximately hundreds of scored wallets are available at any time, with new wallets being discovered daily.
What do the noise_flags mean?
Noise flags indicate potential quality concerns: high_frequency (excessive trade volume suggesting bots), single_token (concentrated in one token), small_trades (average trade size below threshold), round_trip (median holding time under 2 seconds), and young_wallet (wallet age under 14 days). Wallets with round_trip or single_token flags are typically auto-rejected.
How often are wallet scores updated?
Scores are recomputed after each scoring run, triggered when a wallet accumulates enough new on-chain activity to pass the observation threshold. For active wallets, this can happen multiple times per day. The updated_at field in the response indicates when the score was last computed.
Can I request scoring for a specific wallet?
Not directly through the API. Wallet discovery is handled by Stratium's automated pipeline, which monitors DEX activity across Jupiter, Pump.fun, Raydium, and 20+ other programs. If a wallet meets the observation threshold and quality filters, it will be automatically scored and available through the API.