Skip to content

Unlock Watch

An event-driven strategy that trades scheduled token unlock events by exploiting predictable pre-event drift and post-event momentum patterns.

Visual Overview

Key Concept: Trade predictable patterns around token unlock events – fade overextension pre-event or chase momentum post-event.

Strategy Logic

Overview

Monitors scheduled token unlock events and trades based on historical reaction patterns. Can fade pre-unlock drift when price is overextended into resistance, or chase post-unlock momentum if price breaks structure with volume. Uses playbook-driven approach based on historical unlock behavior.

Entry Conditions

  • Scheduled token unlock event identified (from calendar)
  • Historical pattern analysis shows consistent reaction
  • Sufficient liquidity (bid-ask spread < 100 bps around event)
  • Position sizing respects max loss per event threshold

Pre-Event Fade Setup:

  • Price overextended into HTF resistance (1.0-1.5 ATR above support)
  • Volume declining into event (distribution pattern)
  • Sentiment overly bullish (contrarian signal)

Post-Event Momentum Setup:

  • Price breaks structure with volume surge (> 80th percentile)
  • Surprise element: Unlock smaller than expected or absorbed quickly
  • Clear direction established within 2 hours of event

Position Sizing

  • Conservative: 1-2% of portfolio per event
  • Maximum 20% allocation per position
  • Maximum leverage: 2x
  • Hard max loss per event: 3-5% of position

Exit Conditions

  • Pre-event fade: Target hit or event occurs
  • Post-event momentum: Tight trailing stop hit
  • Liquidity collapses: Bid-ask spread exceeds 100 bps
  • Max loss per event reached
  • Event outcome differs from historical pattern (no reaction within 2 hours)
  • Surprise announcement: Unexpected protocol change or delay

Risk Management

Stop Loss

  • Pre-event fade: 1.5-2.0 ATR from entry
  • Post-event momentum: Tight trailing stop (0.5-1.0 ATR)
  • Max loss per event: 3-5% of position size

Take Profit

  • Pre-event fade: Support level or 1.0-1.5 ATR
  • Post-event momentum: Trail with tight stop, no fixed target

Position Management

  • Pre-place stop entries for post-event momentum
  • Cancel orders if no trigger within 2 hours
  • Scale out 50% at 1R, trail remaining 50%
  • Quick exit if liquidity deteriorates

Execution Strategy

  • Pre-event: Limit orders at resistance levels
  • Post-event: Stop entries or market orders on breakout
  • Exit: Taker orders on stops or targets

Performance Expectations

  • Win Rate: 50-60%
  • Average Hold Time: 3-12 hours (minimum 180 minutes)
  • Profit Factor: 1.6-2.2
  • Max Drawdown: 12-18%
  • Expected Switching Cost: 30 bps per trade
  • Best Regimes: Event-risk (designed for this regime)

Configuration

Strategy parameters:

toml
[strategy.unlock-watch]
enabled = true
max_allocation = 0.20
max_leverage = 2.0
risk_per_trade = 0.015  # 1.5% risk
max_loss_per_event = 0.04  # 4% max loss

# Pre-event fade parameters
pre_drift_atr_threshold = 1.2  # 1.2 ATR overextension
fade_stop_atr = 1.5

# Post-event momentum parameters
surprise_volume_percentile = 80
momentum_trail_atr = 0.75
max_wait_hours = 2

# Liquidity filters
max_spread_bps = 100
min_daily_volume = 1000000  # $1M minimum

# Event calendar
unlock_events = [
    { token = "TOKEN1", date = "2024-02-15", amount = "10M", historical_pattern = "fade" },
    { token = "TOKEN2", date = "2024-02-20", amount = "5M", historical_pattern = "momentum" }
]

Technical Parameters

Pre-Event Analysis

  • Overextension: 1.0-1.5 ATR above support
  • Volume: Declining into event
  • Resistance: HTF levels identified

Post-Event Analysis

  • Volume Surge: > 80th percentile
  • Structure Break: Clear breakout with follow-through
  • Reaction Time: Within 2 hours of unlock

Risk Metrics

  • Pre-Event Stop: 1.5-2.0 ATR
  • Post-Event Trail: 0.5-1.0 ATR
  • Max Loss: 3-5% per event
  • Risk/Reward: Minimum 1.5:1

Regime Compatibility

Compatible Regimes

  • Event-risk: Designed specifically for scheduled events

Avoid Regimes

  • None (strategy is event-specific, not regime-dependent)

Example Trade

Setup: TOKEN unlock scheduled, pre-event fade opportunity

  • Unlock Date: February 15, 2024, 12:00 UTC
  • Unlock Amount: 10M tokens (5% of supply)
  • Historical Pattern: Price typically dips 3-5% into unlock, recovers after
  • Current Price: $12.50 (at resistance, +$1.80 from support = 1.5 ATR)
  • Volume: Declining over last 3 days
  • Entry: Short at $12.45 (2 hours before unlock)
  • ATR: $1.20
  • Stop Loss: $14.25 (1.5 ATR = $1.80)
  • Target: $10.80 (support level)
  • Outcome: Price dipped to $11.20 at unlock time, recovered to $11.80 by end of day. Exited at $11.50 for +$0.95 profit (+7.6%)

Monitoring

Key metrics to track:

  • Unlock calendar and event timing
  • Historical unlock patterns per token
  • Pre-event price action and volume
  • Post-event reaction speed and magnitude
  • Liquidity conditions around events
  • Surprise factors (delays, changes)
  • Win rate by event type

Risk Warnings

  • Event Risk: Unlocks can be delayed or changed unexpectedly
  • Liquidity Risk: Thin markets around events can cause slippage
  • Pattern Risk: Historical patterns may not repeat
  • Surprise Risk: Unexpected protocol changes can invalidate thesis
  • Execution Risk: Fast-moving markets can gap through stops
  • Concentration: Limited to tokens with scheduled unlocks
  • Complexity: Requires event calendar maintenance and pattern analysis

Backtest Outline

python
# Pseudocode for backtesting
unlock_calendar = load_unlock_events()

for event in unlock_calendar:
    token = event.token
    unlock_time = event.datetime
    historical_pattern = analyze_historical_unlocks(token)
    
    # Pre-event fade setup
    pre_event_time = unlock_time - timedelta(hours=2)
    if current_time == pre_event_time:
        price = get_price(token)
        atr = calculate_atr(token)
        support = identify_support(token)
        
        if price > support + 1.2 * atr and volume_declining():
            # Overextended into resistance → Fade
            enter_short(token)
            set_stop_loss(price + 1.5 * atr)
            set_target(support)
            set_time_stop(unlock_time + timedelta(hours=4))
    
    # Post-event momentum setup
    post_event_time = unlock_time + timedelta(minutes=30)
    if current_time >= post_event_time and current_time <= unlock_time + timedelta(hours=2):
        if price_breaks_structure() and volume > 80th_percentile:
            # Surprise momentum → Chase with tight stop
            if breakout_direction == "up":
                enter_long(token)
                set_trailing_stop(0.75 * atr)
            else:
                enter_short(token)
                set_trailing_stop(0.75 * atr)
    
    # Exit management
    if liquidity_collapses():
        exit_position()
    elif max_loss_reached():
        exit_position()
    elif no_reaction_within_2_hours():
        exit_position()
    elif surprise_announcement():
        exit_position()

Why This Suits Small Capital + LLM Latency

  • Few events: Only trades scheduled unlocks (low frequency)
  • Playbook-driven: Clear rules based on historical patterns
  • No microsecond reactions: Events unfold over hours
  • Pre-planned: Can set up positions in advance
  • Clear invalidation: Easy to identify when thesis is wrong
  • Tolerates latency: Minutes-scale response time acceptable