Wallet Signals
Unified entry point for tracking wallets and extracting directional signals. Combines wallet scoring, position analysis, trade flow, and behavioral profiling into a single actionable signal per wallet per market.Track Wallet
Given a wallet, compute signals for every market it holds.
Consensus
Aggregate top holders into a weighted directional signal.
Auto-Discover
Find high-signal wallets in a target market automatically.
Quick Start
Mode 1: Track a Wallet
Mode 2: Market Consensus
Mode 3: Auto-Discover
Pipeline Integration
Signal Math
Each per-wallet signal is a 4-component decomposition:Direction D(w,m)
Net position direction from wallet positions. YES positions contribute +1, NO contributes -1, size-weighted.Conviction C(w,m)
Position size in this market relative to the wallet’s average position across all markets.Recency R(w,m)
Exponential decay from the most recent trade, using the Rustdecay_weight() function.
Momentum M(w,m)
Volume-weighted buy ratio shift between the recent half and older half of trades.Composition
composite_score from score_wallet(). Negative Q inverts the signal (fade bad wallets).
Consensus Aggregation
For multi-wallet consensus:- Fetch top 20 holders via
get_top_holders() - Score each wallet via
score_wallet()(cached 5 min) - Filter by
|composite_score| >= min_wallet_quality - Compute
WalletMarketSignalfor each - Weight:
|quality| * sqrt(position_size) * recency - Weighted average of signals
- Agreement =
1 - CV(signals)(coefficient of variation) - Confidence interval from IQR of individual signals
Pipeline Mode
Thewallet_tracker() factory creates a pipeline function that:
- Refreshes signals every N cycles (default: 20)
- EMA-smooths signal between refreshes
- Detects regime changes and emits
WalletRegimeChangeevents - Supports both explicit wallet lists and auto-discovery
Injected Context Parameters
| Parameter | Type | Description |
|---|---|---|
wallet_tracker_signal | WalletMarketSignal | Best signal for current market |
wallet_tracker_consensus | ConsensusSignal | Multi-wallet consensus (if available) |
wallet_tracker_edge_bps | float | Signed edge in basis points |
wallet_tracker_regime_changes | list[WalletRegimeChange] | Regime flips detected this cycle |
Oracle Integration
The wallet tracker can optionally feed into the Oracle as a 7th signal:wallet_consensus signal weight defaults to 0.0 (disabled). You must explicitly set a non-zero weight and pass include_wallet_signal=True.
Configuration Reference
Types Reference
WalletMarketSignal
| Field | Type | Description |
|---|---|---|
wallet | str | Wallet address |
market_id | str | Market condition ID |
signal | float | Composite signal [0.01, 0.99] |
direction | float | Position direction D(w,m) |
conviction | float | Relative sizing C(w,m) |
recency | float | Decay weight R(w,m) |
momentum | float | Trade direction shift M(w,m) |
wallet_quality | float | Composite score [-1, 1] |
confidence | float | Signal confidence [0, 1] |
confidence_low | float | Lower bound |
confidence_high | float | Upper bound |
trade_count | int | Trades in this market |
position_size_usdc | float | Position value in USDC |
regime | str | bullish / bearish / neutral / flipping |
edge_bps | float | Edge vs market price |
is_actionable | bool | Passes all thresholds |
ConsensusSignal
| Field | Type | Description |
|---|---|---|
market_id | str | Market condition ID |
signal | float | Weighted consensus [0.01, 0.99] |
confidence | float | Aggregate confidence |
agreement | float | Wallet agreement [0, 1] |
n_wallets | int | Contributing wallets |
edge_bps | float | Consensus edge |
wallet_signals | list[WalletMarketSignal] | Individual signals |
best_wallet | str | Highest-confidence wallet |
is_actionable | bool | Passes thresholds |
WalletRegimeChange
| Field | Type | Description |
|---|---|---|
wallet | str | Wallet address |
market_id | str | Market condition ID |
old_regime | str | Previous regime |
new_regime | str | New regime |
confidence | float | Detection confidence |