HeyTraders Documentation

Smart Money Following (Wallet Tracking)

Copy-trade strategies that follow specific wallet addresses on Hyperliquid.

Requirements:

  • timeframe: "tick" (mandatory for copy trading latency)
  • wallet_addresses: ["0x..."] in strategy config
  • Hyperliquid perpetual universe (e.g., HYPERLIQUID:BTC/USDC:USDC)

Basic Copy Trade

Follow a whale wallet — buy when they buy, sell when they sell.

WHALE = "0xABC123..."

if wallet_filled(WHALE):
    side = wallet_side(WHALE)
    if side == "BUY":
        emit(True, entry(context['ticker'], 'LONG', Weight(0.5)))
    elif side == "SELL":
        emit(True, exit_position(context['ticker']))

Config:

{
  "universe": ["HYPERLIQUID:BTC/USDC:USDC"],
  "timeframe": "tick",
  "wallet_addresses": ["0xABC123..."],
  "mode": "isolated"
}

Proportional Size Copy

Match position size proportionally to the whale's trade.

WHALE = "0xABC123..."
MAX_SIZE = 1.0  # max 1 BTC

if wallet_filled(WHALE):
    side = wallet_side(WHALE)
    whale_size = wallet_size(WHALE)
    my_size = min(whale_size * 0.1, MAX_SIZE)  # 10% of whale, capped

    if side == "BUY":
        emit(True, entry(context['ticker'], 'LONG', Quantity(my_size)))
    elif side == "SELL":
        emit(True, entry(context['ticker'], 'SHORT', Quantity(my_size)))

Copy with RSI Filter

Only follow the whale when RSI confirms the direction.

WHALE = "0xABC123..."
data = get_data(context['ticker'], "1m")
rsi_val = rsi(data.close, 14)[-1]

if wallet_filled(WHALE):
    side = wallet_side(WHALE)
    if side == "BUY" and rsi_val < 70:
        emit(True, entry(context['ticker'], 'LONG', Weight(0.5),
             stop_loss=PercentFromEntry(-0.03)))
    elif side == "SELL" and rsi_val > 30:
        emit(True, exit_position(context['ticker']))

Multi-Wallet Consensus

Only trade when multiple tracked wallets agree.

WHALE_A = "0xAAA..."
WHALE_B = "0xBBB..."

a_buy = wallet_filled(WHALE_A) and wallet_side(WHALE_A) == "BUY"
b_buy = wallet_filled(WHALE_B) and wallet_side(WHALE_B) == "BUY"
a_sell = wallet_filled(WHALE_A) and wallet_side(WHALE_A) == "SELL"
b_sell = wallet_filled(WHALE_B) and wallet_side(WHALE_B) == "SELL"

if a_buy and b_buy:
    emit(True, entry(context['ticker'], 'LONG', Weight(0.8)))
elif a_sell or b_sell:
    emit(True, exit_position(context['ticker']))

Config:

{
  "universe": ["HYPERLIQUID:ETH/USDC:USDC"],
  "timeframe": "tick",
  "wallet_addresses": ["0xAAA...", "0xBBB..."]
}