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"
# 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

GET
/api/v1/wallets/scored

Paginated list of scored wallets with enriched metrics. Supports filtering by score, PnL, sell count, and sorting.

GET
/api/v1/wallets/{address}/score

Full score and all 21 metrics for a specific wallet address.

GET
/api/v1/wallets/stream

Server-Sent Events stream of new wallet scores and discovery pipeline events in real time.

Request Parameters

GET /api/v1/wallets/scored

ParameterTypeRequiredDefaultDescription
min_scorenumberOptional0Minimum enriched_score (0-1)
min_sell_countintegerOptional10Minimum number of SELL trades
min_pnl_solnumberOptional0Minimum total_pnl_sol
sort_bystringOptionalenriched_scoreSort field: enriched_score, win_rate, total_pnl_sol, sell_count
orderstringOptionaldescSort order: asc or desc
limitintegerOptional20Results per page (max 100)
offsetintegerOptional0Pagination offset

GET /api/v1/wallets/{address}/score

ParameterTypeRequiredDefaultDescription
addressstringRequiredSolana wallet address (base58, 32-44 characters)

Response Schema

TypeScript Interface
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
}
Example Response
{
  "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

ParameterTypeRequiredDefaultDescription
Signal tier$99/moOptional60 req/minFull access to all Wallet Scores endpoints
Analytics tier$249/moOptional120 req/minWallet Scores + PnL Analytics
Backtest tier$499/moOptional120 req/minAll 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 Access

Frequently 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.