Home>Blog>Why Wallet Age Beats Recent PnL for Copy Trading Filters
Why Wallet Age Beats Recent PnL for Copy Trading Filters

Why Wallet Age Beats Recent PnL for Copy Trading Filters

By CMM Team - 04-Jul-2026

Why Wallet Age Beats Recent PnL for Copy Trading Filters

The wallet topped the 7-day Hyperliquid leaderboard with six figures in realized profits. You added it to your copy trading watchlist and mirrored the next three trades. All three lost. The wallet dropped off the leaderboard entirely by the following week.

This is the most common failure mode in on-chain copy trading, and it has nothing to do with execution speed or slippage. The problem is the filter itself. A 7-day PnL leaderboard shows you who won recently. It tells you nothing about who wins consistently, because the wallets that blew up last week are already gone from the list. You are selecting from a pool that has already been pruned by survivorship bias, which means the signal you think you are reading is mostly noise.

Wallet age, measured as cumulative all-time PnL across many months of trading, is a more reliable foundation for copy trading filters. It does not replace recency checks. But it changes the order of operations: you start with track record depth, then confirm with recent activity, instead of the other way around.

This guide explains why that ordering matters, how survivorship bias corrupts short-window leaderboards, and how to build an age-first filtering workflow using HyperTracker's cohort data on Hyperliquid.

The survivorship bias hiding in your leaderboard

Every 7-day PnL leaderboard is a snapshot of survivors. The wallets that lost money, got liquidated, or stopped trading during that window do not appear. You only see the ones that made it through, which creates a distorted picture of what "good" looks like.

Imagine a thousand wallets start trading on Monday. By Friday, two hundred have been liquidated or stopped trading after heavy losses. Of the remaining eight hundred, the top fifty by PnL look impressive. But those fifty are not necessarily skilled. They are the ones whose directional bets happened to align with how the market moved that week. Some of them used excessive leverage on a single asset and got lucky. Others caught one large move and closed the position at the right moment by chance.

When you filter from a 7-day leaderboard, you are implicitly saying: "Show me the people who survived this week." That is a useful data point, but it is a weak one. The base rate of a wallet appearing on a weekly leaderboard through skill rather than variance is low, because the sample size of one week of trading is too small to distinguish signal from noise.

Survivor Bias Funnel

The fix is to change what you filter from. Start with cumulative track record and confirm it is still active. Recent performance alone offers too little data to distinguish skill from variance.

What wallet age actually measures

In the context of copy trading filters, "wallet age" is not literally how old the address is. It is a proxy for track record depth: how many months or cycles of trading history the wallet has accumulated, and what the cumulative result of all that activity looks like.

A wallet with six months of perp trading history and $500K in all-time realized PnL tells you something different than a wallet with two weeks of history and $50K in PnL. The first wallet has traded through pullbacks, through funding rate regime shifts, through low-volatility periods where breakout strategies fail, and through high-volatility periods where mean-reversion strategies fail. The second wallet has traded through one market environment. You have no idea how it will perform when conditions change.

Why cumulative PnL matters more than recent PnL for the initial filter

Cumulative all-time PnL is harder to fake with variance. A wallet sitting at +$1M in all-time perp profits has generated that number across hundreds or thousands of trades over many months. The probability that pure luck produced $1M in cumulative profit is extremely low, because variance cuts both ways across large sample sizes. Winning streaks revert. Losing streaks revert. What remains is the edge, if any.

A wallet sitting at +$50K in 7-day PnL might have gotten there from three leveraged trades that all went in the same direction as the market. The probability of that outcome from luck alone is meaningfully high, because three trades is not a statistically significant sample.

This is the core argument for age-first filtering: cumulative track record is a better prior for skill estimation, because it integrates across enough trades and enough market regimes to dilute the contribution of luck.

HyperTracker's PnL cohorts as an age proxy

HyperTracker classifies every wallet on Hyperliquid into one of 16 behavioral cohorts. Eight are based on account size (Shrimp at $0 to $250 through Leviathan at $5M+), and eight are based on all-time PnL performance. The PnL cohorts are the ones that matter for age-first copy trading filters:

| Cohort | All-Time PnL Range | Copy Trading Signal | | --- | --- | --- | | Money Printer | Above +$1M | Strongest track record. Highest confidence filter. | | Smart Money | +$100K to +$1M | Solid multi-cycle performance. Worth following with confirmation. | | Consistent Grinder | +$10K to +$100K | Profitable, but smaller sample. Use cautiously. | | Humble Earner | $0 to +$10K | Marginal profitability. Insufficient signal for copying. | | Exit Liquidity | -$10K to $0 | Negative edge demonstrated. Do not copy. | | Semi-Rekt | -$100K to -$10K | Do not copy. | | Full Rekt | -$1M to -$100K | Do not copy. | | Giga-Rekt | Below -$1M | Do not copy. |

Our cohort classification acts as a pre-filter. Before you look at any recent performance data, you can eliminate every wallet below Consistent Grinder from your copy trading candidate pool. This is a structural advantage over leaderboard-first approaches, because it removes wallets with demonstrated negative edge before they can enter your pipeline through a lucky week.

Wallet Age Vs Recency

Recency still matters, just not first

Age-first filtering does not mean ignoring recent performance. It means changing the order. You use cumulative PnL cohort as the first gate, then use recent performance as the second gate to confirm that the edge is still active.

A Money Printer wallet with $2M in all-time PnL but a -$80K month deserves a different treatment than a Money Printer wallet with $2M in all-time PnL and a +$150K month. Both pass the first filter. Only the second passes the recency confirmation.

The age-first workflow

  1. Filter by PnL cohort. Keep Money Printer and Smart Money wallets. Optionally include Consistent Grinder with smaller allocation weights. Drop everything below.
  2. Check wallet age. Using HyperTracker's historical position data (which goes back to April 2025), verify that the wallet has been actively trading for multiple months. A wallet that appeared last week with $200K in PnL from a single large trade is not the same as a wallet that accumulated $200K over six months of consistent activity.
  3. Confirm recent performance. Check that recent realized PnL (for example, over the past 30 days) is positive. A veteran wallet in an active drawdown is a watchlist candidate. You can revisit it when the drawdown ends.
  4. Validate trade count. Require enough closed trades over the wallet's lifetime that the PnL figure carries statistical weight. A wallet with ten trades and $500K in profit might have gotten there from one outsized position. A wallet with three hundred trades and $500K in profit has demonstrated repeatable edge.

Each step narrows the candidate pool. By the time you reach step four, you are working with wallets that have demonstrated sustained profitability across multiple market regimes, are currently active and performing, and have enough trade volume to make the PnL figure statistically meaningful.

Filtering Workflow

Building the filter with the HyperTracker API

The practical implementation uses two HyperTracker API endpoints. The first is the leaderboard endpoint, which ranks wallets by all-time PnL. The second is the individual wallet endpoint, which gives you the detailed trade history needed to assess age and consistency.

import requests

API_BASE = "https://ht-api.coinmarketman.com/api/external"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

# Step 1: Get the all-time PnL leaderboard
leaderboard = requests.get(
    f"{API_BASE}/leaderboard",
    headers=headers,
    params={"period": "allTime", "limit": 100}
).json()

# Step 2: For each candidate, check trade history depth
candidates = []
for wallet in leaderboard["traders"]:
    address = wallet["address"]

    # Get earliest positions to estimate wallet age
    positions = requests.get(
        f"{API_BASE}/positions",
        headers=headers,
        params={
            "address[]": address,
            "start": "2025-04-15T00:00:00.000Z"
        }
    ).json()

    # Get closed trades for trade count
    fills = requests.get(
        f"{API_BASE}/fills",
        headers=headers,
        params={
            "address[]": address,
            "start": "2025-07-31T00:00:00.000Z"
        }
    ).json()

    trade_count = len(fills.get("fills", []))
    has_history = len(positions.get("positions", [])) > 0

    # Example threshold (adjust based on your strategy)
    if has_history and trade_count > 50:
        candidates.append({
            "address": address,
            "alltime_pnl": wallet["pnl"],
            "trade_count": trade_count,
            "earliest_data": "2025-04" if has_history else "recent"
        })

print(f"Filtered {len(candidates)} candidates from {len(leaderboard['traders'])} leaderboard entries")

The code above pulls the all-time leaderboard, then checks each candidate for historical depth. Wallets with no trading activity going back to the earliest available data window, and wallets with fewer than fifty closed trades, are filtered out. What remains is the subset of leaderboard wallets that have both cumulative profitability and the trading history to support it.

Adding the recency confirmation

# Step 3: Confirm recent performance
from datetime import datetime, timedelta

recent_start = (datetime.utcnow() - timedelta(days=30)).strftime(
    "%Y-%m-%dT00:00:00.000Z"
)

confirmed = []
for c in candidates:
    recent_fills = requests.get(
        f"{API_BASE}/fills",
        headers=headers,
        params={
            "address[]": c["address"],
            "start": recent_start
        }
    ).json()

    recent_pnl = sum(
        float(f.get("closedPnl", 0))
        for f in recent_fills.get("fills", [])
    )

    if recent_pnl > 0:
        c["recent_30d_pnl"] = recent_pnl
        confirmed.append(c)

print(f"{len(confirmed)} wallets passed all filters")

After this step, you have a list of wallets that cleared three gates: cumulative all-time PnL leaderboard rank (skill signal), historical trading depth (age signal), and positive 30-day realized PnL (recency signal). These are your copy trading candidates.

When to override the age filter

No filter is absolute. There are situations where a younger wallet deserves consideration despite a shorter track record.

Wallet migrations. Experienced traders sometimes create new wallets. A wallet that appeared two months ago but trades with the precision and sizing patterns of a veteran might be a migration from an older address. Our data from the cohort system will classify it based on cumulative PnL on that address, but the PnL figure will be lower than the trader's true track record because it only captures activity since the migration.

Market regime shifts. Some wallets are dormant during ranging markets and only activate during strong trends. A wallet that has been inactive for three months but has $800K in all-time PnL from prior active periods is not a dead wallet. It is a selective trader. When it reactivates, the all-time PnL cohort still applies, even though recent PnL was zero during the dormant period.

New to Hyperliquid, experienced elsewhere. A trader who migrates from a centralized exchange to Hyperliquid will start with a fresh wallet and zero on-chain history. The age filter will exclude them initially, which is correct behavior. You cannot verify their CEX track record on-chain. Once they have accumulated enough Hyperliquid-specific history, they will naturally graduate into the appropriate PnL cohort.

Build Your Age-First Wallet Filter

HyperTracker's API gives you all-time PnL leaderboards, per-wallet trade history going back to April 2025, and cohort classification for every active Hyperliquid wallet. Query the leaderboard, check historical depth, and confirm recency before adding a wallet to your copy trading pipeline.

Start Building with the Free Tier

The checklist for age-first copy trading filters

  1. Start with the all-time leaderboard. Pull wallets ranked by cumulative PnL. This is your initial candidate pool.
  2. Apply the cohort gate. Keep Money Printer and Smart Money cohorts. Consider Consistent Grinder with reduced weight. Drop negative PnL cohorts entirely.
  3. Verify historical depth. Confirm the wallet has been trading for multiple months, with enough trade volume that the PnL figure is statistically meaningful.
  4. Confirm recent PnL is positive. Check a recent window (e.g., 30 days). Veterans in active drawdowns go to a watchlist. They re-enter the candidate pool when the drawdown ends.
  5. Monitor continuously. A wallet that passes all four filters today can fail them next month. Re-run the filter weekly and rotate out wallets that drop below the recency threshold.

Age first. Recency second. That is the ordering that protects you from survivorship bias, separates luck from skill, and builds a copy trading pipeline that survives more than one good week.