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