Как ловить падения после пампа шиткойнов: системный подход
Каждый криптотрейдер хотя бы раз наблюдал эту картину: токен, о котором вчера никто не слышал, за 4 часа делает +800%. Твиттер взрывается ракетами. На Reddit появляются посты «it's just the beginning». Ваш коллега, который месяц назад не мог отличить ордербук от ордера в McDonald's, пишет вам «бро, закинь хотя бы сотку». Через 12 часов токен теряет 85% от пика. Тишина. Ракеты удалены.
Вопрос не в том, будет ли дамп. Вопрос в том, как на нём системно заработать, не попав под каток самого пампа.
Эта статья — не финансовый совет (обязательный disclaimer, который никто не читает, но юристы настаивают). Это технический разбор механик, сигналов и алгоритмов для идентификации точек разворота после импульсных движений на низколиквидных активах.
Анатомия памп-дампа: три фазы одного безумия
Прежде чем шортить, нужно понимать структуру явления. Каждый памп-дамп на шиткойнах проходит через три фазы, и каждая имеет свои характерные сигнатуры в данных.

Фаза 1: Аккумуляция (тихая охота)
Длительность: от нескольких часов до нескольких дней.
Кто-то — группа инсайдеров, координированная телеграм-группа, или просто крупный игрок с информационным преимуществом — начинает скупать токен. Делается это аккуратно: мелкими ордерами, через несколько бирж, часто в азиатскую сессию (когда ликвидность минимальна, а внимание — рассеяно).
Что видно в данных:
- Объём торгов постепенно растёт (на 50-200% выше среднего за последние 7 дней), но цена почти не двигается
- Bid-side стакана утолщается: появляются «стенки» на 2-5% ниже текущей цены
- On-chain метрики (для DEX-токенов): крупные переводы на биржи, рост числа уникальных кошельков-покупателей
- Funding rate на бессрочных фьючерсах (если они есть) начинает слегка расти
На этой фазе шортить рано. Здесь вы ещё не знаете, что это аккумуляция, а не органический интерес. Собственно, отличить одно от другого часто невозможно — разница становится очевидной только постфактум.
Фаза 2: Импульс (вечеринка)
Длительность: от 30 минут до 12 часов.
Цена пробивает ключевой уровень сопротивления, и начинается каскад. Стоп-лоссы шортистов ликвидируются. FOMO (Fear Of Missing Out) затягивает розничных трейдеров. Криптотвиттер превращается в эхо-камеру. Каждый ретвит — это новый маржинальный лонг на 50× плече.
Характерные сигнатуры:
- Объём на 1000-5000% выше среднего (не опечатка)
- Funding rate взлетает до 0.1-0.5% за 8 часов (нормальный — 0.01%)
- Open Interest растёт экспоненциально: новые позиции открываются быстрее, чем закрываются
- Bid-ask spread расширяется в 3-10 раз из-за нехватки ликвидности на ask-стороне
- На стакане — вакуум сверху: между текущей ценой и ближайшим крупным ask — пустота
На этой фазе шортить — самоубийство. Это как встать перед поездом, потому что «он же когда-нибудь остановится». Да, остановится. Но вас к тому моменту уже ликвидируют. Об этом подробнее ниже, в разделе «Чего НЕ делать».
Фаза 3: Дистрибуция и обвал (похмелье)
Длительность: от 2 до 48 часов.
Инсайдеры начинают фиксировать прибыль. Цена делает первую значимую коррекцию (-15-30% от пика). Розничные трейдеры «покупают дип». Цена отскакивает. Потом падает снова. Каждый следующий отскок — слабее. Каждое падение — глубже.
Что происходит в данных:
- Объём остаётся высоким, но смещается в сторону sell-стороны
- Funding rate начинает снижаться, но всё ещё аномально высок
- Open Interest перестаёт расти или начинает падать (закрытие лонгов)
- Появляются крупные рыночные sell-ордера, «проедающие» стакан на несколько уровней вниз
- On-chain: крупные переводы с кошельков инсайдеров на биржи
Это — зона охоты. Здесь начинается работа.
Ключевые сигналы для входа в шорт
Каждый сигнал в отдельности — слабый. Комбинация трёх и более — уже рабочая гипотеза.

1. Funding Rate: налог на жадность
Funding rate — это стоимость удержания позиции на бессрочных фьючерсах. Когда все хотят быть в лонге, лонги платят шортам. Чем выше rate — тем сильнее рынок перекошен в одну сторону.
| Funding Rate (за 8ч) | Интерпретация | Действие |
|---|---|---|
| 0.01% | Норма | Ничего |
| 0.03-0.05% | Повышенный спрос на лонги | Наблюдение |
| 0.05-0.1% | Сильный перекос | Готовность к шорту |
| 0.1-0.3% | Экстремальный перекос | Активный поиск входа |
| > 0.3% | Безумие | Шорт с подтверждением |
Почему это работает: при funding rate 0.3% за 8 часов лонгисты платят ~1% в сутки только за удержание позиции. При плече 10× это 10% капитала в день. Долго так продолжаться не может — позиции начинают закрываться, что давит на цену вниз.
Нюанс: экстремальный funding сам по себе — не сигнал для шорта. Он может оставаться высоким часами и даже днями, пока цена продолжает расти. Funding — это фильтр (подтверждение перекоса), а не триггер (точка входа).
def funding_rate_signal(
current_rate: float,
historical_rates: list[float],
lookback: int = 90, # 90 периодов = 30 дней
) -> dict:
"""
Оценка аномальности текущего funding rate.
Returns:
signal: 'neutral' | 'elevated' | 'extreme' | 'insane'
z_score: float — отклонение от нормы
percentile: float — процентиль в исторических данных
"""
import numpy as np
hist = np.array(historical_rates[-lookback:])
mean = hist.mean()
std = hist.std()
z_score = (current_rate - mean) / std if std > 0 else 0
percentile = np.searchsorted(np.sort(hist), current_rate) / len(hist)
if z_score > 4:
signal = 'insane'
elif z_score > 3:
signal = 'extreme'
elif z_score > 2:
signal = 'elevated'
else:
signal = 'neutral'
return {
'signal': signal,
'z_score': round(z_score, 2),
'percentile': round(percentile, 4),
'annualized_cost': round(current_rate * 3 * 365 * 100, 1), # % годовых
}
2. Open Interest: кто в ловушке
Open Interest (OI) — это общее количество открытых контрактов на фьючерсах. Когда OI растёт вместе с ценой — в рынок входят новые участники (преимущественно лонги). Когда цена начинает падать, а OI остаётся высоким — эти лонги в ловушке. Их ликвидации станут топливом для дампа.
Ключевые паттерны:
| Цена | OI | Интерпретация |
|---|---|---|
| Растёт | Растёт | Новые лонги входят (памп в разгаре) |
| Растёт | Падает | Шорты закрываются (short squeeze) |
| Падает | Высокий | Лонги в ловушке (потенциал дампа) |
| Падает | Падает | Лонги закрываются (дамп в процессе) |
Самый опасный момент для лонгов и лучший для шорта: цена начала падать, а OI всё ещё на максимуме. Это означает, что открытые лонги ещё не закрылись — они надеются на отскок. Когда надежда закончится, начнётся каскад ликвидаций.
def oi_divergence_signal(
prices: list[float],
oi_values: list[float],
window: int = 12, # 12 свечей (например, 12 × 5 мин = 1 час)
) -> dict:
"""
Детектирование дивергенции цена/OI.
Бычья дивергенция OI: цена падает, OI высокий — лонги в ловушке.
"""
import numpy as np
recent_prices = np.array(prices[-window:])
recent_oi = np.array(oi_values[-window:])
price_change = (recent_prices[-1] - recent_prices[0]) / recent_prices[0]
oi_change = (recent_oi[-1] - recent_oi[0]) / recent_oi[0]
oi_at_peak = recent_oi[-1] > np.percentile(oi_values, 90)
price_declining = price_change < -0.03 # цена упала на 3%+
trapped_longs = oi_at_peak and price_declining
if len(oi_values) > window * 2:
oi_velocity = oi_change / max(abs(price_change), 0.001)
else:
oi_velocity = 0
return {
'trapped_longs': trapped_longs,
'oi_percentile': round(
np.searchsorted(np.sort(oi_values), recent_oi[-1]) / len(oi_values), 2
),
'price_change': round(price_change * 100, 2),
'oi_change': round(oi_change * 100, 2),
'oi_velocity': round(oi_velocity, 2),
}
3. Объёмный анализ: правда в тиках
Объём — единственный рыночный индикатор, который нельзя подделать (ну, почти — wash trading на некоторых биржах всё ещё реальность, но на топовых площадках с этим стало лучше).
Сигналы для шорта:
Угасающий объём на росте. Классический сигнал слабости. Цена делает новый максимум, а объём на этом движении ниже, чем на предыдущем. Покупатели выдыхаются.
Объёмный всплеск на падении. Если коррекция -10% происходит на объёме, превышающем объём последнего импульса роста — продавцы перехватили инициативу.
Fake breakout с низким объёмом. Цена пробивает локальный максимум, но объём на пробое — в 2-3 раза ниже среднего. Это ловушка для покупателей: цена быстро возвращается обратно.
def volume_exhaustion_signal(
candles: list[dict], # [{open, high, low, close, volume, timestamp}, ...]
pump_start_idx: int,
) -> dict:
"""
Анализ объёмного исчерпания после пампа.
"""
import numpy as np
pump_candles = candles[pump_start_idx:]
up_candles = [c for c in pump_candles if c['close'] > c['open']]
down_candles = [c for c in pump_candles if c['close'] <= c['open']]
if not up_candles or not down_candles:
return {'signal': 'insufficient_data'}
avg_up_vol = np.mean([c['volume'] for c in up_candles])
avg_down_vol = np.mean([c['volume'] for c in down_candles])
up_volumes = [c['volume'] for c in up_candles]
if len(up_volumes) >= 3:
first_half = np.mean(up_volumes[:len(up_volumes)//2])
second_half = np.mean(up_volumes[len(up_volumes)//2:])
volume_degradation = (second_half - first_half) / first_half
else:
volume_degradation = 0
all_volumes = np.array([c['volume'] for c in candles])
vol_mean = all_volumes[:-len(pump_candles)].mean() if len(candles) > len(pump_candles) else all_volumes.mean()
vol_std = all_volumes[:-len(pump_candles)].std() if len(candles) > len(pump_candles) else all_volumes.std()
current_z = (pump_candles[-1]['volume'] - vol_mean) / vol_std if vol_std > 0 else 0
return {
'sell_buy_volume_ratio': round(avg_down_vol / max(avg_up_vol, 1), 2),
'volume_degradation_pct': round(volume_degradation * 100, 1),
'current_volume_z_score': round(current_z, 2),
'signal': 'exhaustion' if volume_degradation < -0.3 else 'active',
}
4. Свечные паттерны: старая школа, которая работает
Да, свечной анализ — это XVII век, Мунэхиса Хомма и рисовые фьючерсы. Да, 90% «свечных стратегий» в YouTube — мусор. Но на 5-минутном и 15-минутном таймфрейме после пампа определённые паттерны имеют статистически значимую предсказательную силу. Причина проста: они отражают реальную микроструктуру — перехват контроля от покупателей к продавцам.
Паттерны, которые стоит отслеживать:
| Паттерн | Описание | Надёжность после пампа |
|---|---|---|
| Shooting Star | Длинная верхняя тень, маленькое тело внизу | Высокая |
| Bearish Engulfing | Красная свеча полностью перекрывает предыдущую зелёную | Высокая |
| Evening Star | 3 свечи: большая зелёная → малая (доджи) → большая красная | Очень высокая |
| Gravestone Doji | Открытие = закрытие внизу, длинная верхняя тень | Средняя |
| Three Black Crows | Три последовательных красных свечи с понижающимися закрытиями | Высокая (подтверждение) |
Критически важно: паттерн без контекста — шум. Shooting Star на случайном откате — ничего не значит. Shooting Star на пике пампа с аномальным funding rate и дивергенцией OI — это совсем другая история.
def detect_reversal_patterns(
candles: list[dict],
min_upper_shadow_ratio: float = 2.0, # тень > 2× тела для shooting star
) -> list[dict]:
"""
Детектирование медвежьих разворотных паттернов.
"""
signals = []
for i in range(2, len(candles)):
c = candles[i]
body = abs(c['close'] - c['open'])
upper_shadow = c['high'] - max(c['close'], c['open'])
lower_shadow = min(c['close'], c['open']) - c['low']
total_range = c['high'] - c['low']
if total_range == 0:
continue
if (upper_shadow > body * min_upper_shadow_ratio
and lower_shadow < body * 0.5
and c['close'] < c['open']): # медвежья
signals.append({
'pattern': 'shooting_star',
'index': i,
'timestamp': c['timestamp'],
'strength': upper_shadow / total_range,
})
prev = candles[i - 1]
if (prev['close'] > prev['open'] # предыдущая — бычья
and c['close'] < c['open'] # текущая — медвежья
and c['open'] > prev['close'] # открытие выше закрытия пред.
and c['close'] < prev['open']): # закрытие ниже открытия пред.
signals.append({
'pattern': 'bearish_engulfing',
'index': i,
'timestamp': c['timestamp'],
'strength': body / (abs(prev['close'] - prev['open']) + 1e-10),
})
if i >= 2:
c1 = candles[i - 2]
c2 = candles[i - 1]
c3 = candles[i]
c1_body = abs(c1['close'] - c1['open'])
c2_body = abs(c2['close'] - c2['open'])
c3_body = abs(c3['close'] - c3['open'])
if (c1['close'] > c1['open'] # первая — бычья
and c2_body < c1_body * 0.3 # вторая — маленькая (доджи)
and c3['close'] < c3['open'] # третья — медвежья
and c3_body > c1_body * 0.5 # третья достаточно большая
and c3['close'] < c1['close']): # закрытие третьей ниже закр. первой
signals.append({
'pattern': 'evening_star',
'index': i,
'timestamp': c['timestamp'],
'strength': c3_body / c1_body,
})
return signals
5. VWAP: якорь реальности
VWAP (Volume-Weighted Average Price) — средневзвешенная по объёму цена. Anchored VWAP от начала пампа показывает среднюю цену входа всех участников, купивших за время импульса.
Почему это важно: когда цена опускается ниже anchored VWAP — средний покупатель в убытке. Психологическое давление нарастает. Те, кто купил «дёшево» (в начале пампа), начинают фиксировать прибыль. Те, кто купил на пике — в панике.
Правило: пробой anchored VWAP вниз с повышенным объёмом — сильный сигнал для шорта или добавления к позиции.
def anchored_vwap(
candles: list[dict],
anchor_idx: int,
) -> list[float]:
"""
Расчёт Anchored VWAP от заданной точки (начала пампа).
"""
vwap_values = []
cum_vol = 0
cum_vol_price = 0
for i in range(anchor_idx, len(candles)):
c = candles[i]
typical_price = (c['high'] + c['low'] + c['close']) / 3
cum_vol += c['volume']
cum_vol_price += typical_price * c['volume']
vwap = cum_vol_price / cum_vol if cum_vol > 0 else typical_price
vwap_values.append(vwap)
return vwap_values
6. Ликвидационные каскады: эффект домино
Это самый мощный механизм дампа — и самый прибыльный для шортиста. Логика проста:
- Трейдер открывает лонг на 20× плече. Ликвидация — при падении цены на 5%.
- Цена падает на 5%. Позиция ликвидируется — биржа рыночно продаёт.
- Рыночная продажа толкает цену ниже. Это ликвидирует следующего трейдера.
- И так далее. Каскад.

Как видеть это заранее:
CoinGlass Liquidation Heatmap показывает, где сконцентрированы уровни ликвидации. Если ниже текущей цены видна «стена» ликвидаций — падение до этого уровня с высокой вероятностью приведёт к каскаду.
| Инструмент | Что показывает | URL |
|---|---|---|
| CoinGlass Heatmap | Уровни ликвидации на графике | coinglass.com/liq/BTC |
| CoinGlass OI | Open Interest по биржам | coinglass.com/open-interest |
| CoinGlass Funding | Funding rates по биржам | coinglass.com/funding-rate |
| Coinalyze | OI + объём + ликвидации | coinalyze.net |
| Hyblock Capital | Ликвидационные уровни | hyblock.co |
Сигнал каскада: если в зоне -5% до -15% от текущей цены сконцентрировано более 50-200M) — каскад вероятен.
Практический алгоритм: фильтр → вход → риск
Теория — это прекрасно. Теперь — пайплайн.
Шаг 1: Фильтрация (Scanner)
Из тысяч токенов нужно выделить те, которые находятся в фазе пост-пампа. Критерии:
def pump_scanner(
symbols: list[str],
exchange, # ccxt exchange instance
lookback_hours: int = 24,
min_pump_pct: float = 100, # минимум +100% за lookback
min_volume_z: float = 3, # Z-score объёма > 3
) -> list[dict]:
"""
Сканер токенов в фазе пост-пампа.
"""
import numpy as np
candidates = []
for symbol in symbols:
try:
candles = exchange.fetch_ohlcv(symbol, '1h', limit=168) # 7 дней
if len(candles) < 168:
continue
closes = [c[4] for c in candles]
volumes = [c[5] for c in candles]
recent_closes = closes[-lookback_hours:]
max_price = max(recent_closes)
min_price_before = min(closes[:-lookback_hours]) if len(closes) > lookback_hours else closes[0]
pump_pct = (max_price - min_price_before) / min_price_before * 100
current_price = closes[-1]
drawdown_from_peak = (current_price - max_price) / max_price * 100
vol_baseline = np.mean(volumes[:-lookback_hours])
vol_std = np.std(volumes[:-lookback_hours])
vol_recent = np.mean(volumes[-lookback_hours:])
vol_z = (vol_recent - vol_baseline) / vol_std if vol_std > 0 else 0
if pump_pct >= min_pump_pct and vol_z >= min_volume_z:
candidates.append({
'symbol': symbol,
'pump_pct': round(pump_pct, 1),
'drawdown_from_peak': round(drawdown_from_peak, 1),
'volume_z_score': round(vol_z, 2),
'current_price': current_price,
'peak_price': max_price,
})
except Exception:
continue
candidates.sort(key=lambda x: x['drawdown_from_peak'], reverse=True)
return candidates
Шаг 2: Конвергенция сигналов (Scoring)
Для каждого кандидата — оценка по всем шести параметрам:
def confluence_score(
funding_signal: dict,
oi_signal: dict,
volume_signal: dict,
pattern_signals: list[dict],
vwap_position: float, # цена / VWAP (< 1 = ниже VWAP)
liquidation_density: float, # $M ликвидаций ниже текущей цены
) -> dict:
"""
Композитная оценка для входа в шорт.
Score 0-6, где каждый фактор = 0 или 1 балл.
"""
score = 0
reasons = []
if funding_signal['signal'] in ('extreme', 'insane'):
score += 1
reasons.append(f"Funding z-score: {funding_signal['z_score']}")
if oi_signal['trapped_longs']:
score += 1
reasons.append(f"Trapped longs: OI percentile {oi_signal['oi_percentile']}")
if volume_signal['signal'] == 'exhaustion':
score += 1
reasons.append(f"Volume degradation: {volume_signal['volume_degradation_pct']}%")
strong_patterns = [p for p in pattern_signals if p['strength'] > 0.6]
if strong_patterns:
score += 1
reasons.append(f"Pattern: {strong_patterns[-1]['pattern']}")
if vwap_position < 0.98: # цена на 2%+ ниже VWAP
score += 1
reasons.append(f"Below VWAP: {round((1 - vwap_position) * 100, 1)}%")
if liquidation_density > 5: # > $5M ликвидаций
score += 1
reasons.append(f"Liquidation density: ${liquidation_density}M")
if score >= 4:
action = 'strong_short'
elif score >= 3:
action = 'short'
elif score >= 2:
action = 'watch'
else:
action = 'skip'
return {
'score': score,
'max_score': 6,
'action': action,
'reasons': reasons,
}
Шаг 3: Вход и риск-менеджмент
Вход:
- Score >= 4: вход 50% позиции
- Score = 3: вход 25% позиции
- Score < 3: ожидание
Стоп-лосс:
- Выше максимума последнего swing high + 1-2% буфер
- НЕ тайтовый стоп. На шиткойнах волатильность убьёт вас. Минимум 5-10% от входа.
- При Score = 6 допустим стоп 8-12% (больше уверенности = шире стоп, но меньше плечо)
Тейк-профит:
- TP1 (50% позиции): следующий крупный уровень поддержки или -20% от входа
- TP2 (30% позиции): VWAP от начала пампа
- TP3 (20% позиции): уровень до начала пампа (pre-pump level)
Размер позиции:
При капитале $10,000, риске 2% на сделку и стопе 8%:
С плечом 3×: вы рискуете 500-$1,250 (TP1-TP3).
Максимальное плечо: 3-5×. Не больше. Серьёзно. Шиткойны на памп-фазе могут сделать ещё +50% после того, как «все индикаторы сказали шорт». Высокое плечо = ликвидация.
Чего НЕ делать: пять смертных грехов
1. НЕ шортить во время пампа
«Ну оно же точно упадёт!» — да, упадёт. Но когда? Если вы зашли в шорт при +200%, а цена сделала +600% перед тем как упасть до +150% — вас ликвидировали на +450%. Технически вы были правы. Практически — банкрот.
Правило: входите только после первого значимого отката (-15% и более от пика) и формирования разворотной структуры.
2. НЕ использовать тайтовые стопы
Стоп-лосс 2% на шиткойне с ATR 15% — это не риск-менеджмент, это благотворительность в пользу маркетмейкеров. Ваш стоп будет собран за несколько минут при очередном волатильном выносе.
Правило: стоп-лосс >= 1.5 × ATR текущего таймфрейма. Лучше — 2×.
3. НЕ ставить всё на одну сделку
Даже при Score 6/6 вероятность успеха — около 65-70%. Это значит, что 3 из 10 сделок — убыточные. Если на каждую ставить 10% капитала — три подряд проигрыша = -30% drawdown. Психологически вы после этого начнёте торговать хуже.
Правило: 1-2% капитала на сделку. Максимум 5% при экстремальном conviction.
4. НЕ игнорировать ликвидность
Вы не Goldman Sachs. Если дневной объём токена — 50K — вы сами станете рыночным событием. Ваш вход сдвинет цену, ваш выход сдвинет цену. Slippage съест всю прибыль.
Правило: размер позиции <= 1% дневного объёма токена.
5. НЕ шортить на спотовом рынке без возможности шорта
Кажется очевидным, но количество людей, которые «шортят» через покупку обратного токена на DEX или через «продажу спота, который планировали купить дешевле» — поразительно. Используйте фьючерсы на биржах с нормальной ликвидностью. Или не шортите вообще.
Инструменты мониторинга
CoinGlass (coinglass.com)
Главный инструмент для фьючерсного анализа:
- Liquidation Heatmap: визуализация уровней ликвидации на ценовом графике
- Funding Rate: сравнение funding rates по биржам в реальном времени
- Open Interest: агрегированный OI по биржам
- Long/Short Ratio: соотношение лонгов и шортов (по количеству аккаунтов и по объёму)
Coinalyze (coinalyze.net)
Глубокая аналитика деривативов:
- Aggregated OI: объединённый Open Interest с разбивкой по биржам
- Liquidations: история ликвидаций с разбивкой long/short
- OI-weighted Funding Rate: более точный funding rate с учётом доли каждой биржи
TradingView (tradingview.com)
Для графического анализа:
- Pine Script для автоматизации свечных паттернов
- Anchored VWAP (встроенный инструмент)
- Совмещение данных CoinGlass через индикаторы сообщества
Laevitas (laevitas.ch)
Профессиональный терминал для деривативов:
- Gamma exposure
- Options flow
- Термальная карта OI по страйкам
Автоматизация с AI-агентами
Всё описанное выше можно (и нужно) автоматизировать. Вот архитектура системы детектирования:
import asyncio
import numpy as np
from dataclasses import dataclass
from enum import Enum
class AlertLevel(Enum):
WATCH = "watch"
PREPARE = "prepare"
ENTRY = "entry"
@dataclass
class PumpDumpAlert:
symbol: str
level: AlertLevel
score: int
reasons: list[str]
suggested_entry: float | None
suggested_stop: float | None
suggested_tp: list[float]
timestamp: float
class PumpDumpDetector:
"""
AI-агент для детектирования пост-памп дампов.
Пайплайн:
1. Сканирование: Z-score объёма > 3 + рост цены > 100%
2. Фильтрация: funding spike + OI growth
3. Ожидание: разворотный паттерн на 5m/15m
4. Алерт: scoring → уведомление
"""
def __init__(
self,
exchange,
symbols: list[str],
volume_z_threshold: float = 3.0,
funding_z_threshold: float = 2.0,
min_pump_pct: float = 80.0,
scan_interval_sec: int = 60,
):
self.exchange = exchange
self.symbols = symbols
self.volume_z_threshold = volume_z_threshold
self.funding_z_threshold = funding_z_threshold
self.min_pump_pct = min_pump_pct
self.scan_interval_sec = scan_interval_sec
self.active_watches: dict[str, dict] = {}
async def scan_loop(self):
"""Основной цикл сканирования."""
while True:
candidates = await self._broad_scan()
for candidate in candidates:
symbol = candidate['symbol']
if symbol not in self.active_watches:
self.active_watches[symbol] = {
'first_seen': asyncio.get_event_loop().time(),
'pump_peak': candidate['peak_price'],
'pump_start_approx': candidate.get('pump_start_price'),
}
await self._emit_alert(PumpDumpAlert(
symbol=symbol,
level=AlertLevel.WATCH,
score=0,
reasons=[f"Pump detected: +{candidate['pump_pct']}%"],
suggested_entry=None,
suggested_stop=None,
suggested_tp=[],
timestamp=asyncio.get_event_loop().time(),
))
analysis = await self._deep_analysis(symbol)
if analysis['score'] >= 3:
entry = candidate['current_price']
stop = candidate['peak_price'] * 1.02 # 2% выше пика
await self._emit_alert(PumpDumpAlert(
symbol=symbol,
level=AlertLevel.ENTRY if analysis['score'] >= 4 else AlertLevel.PREPARE,
score=analysis['score'],
reasons=analysis['reasons'],
suggested_entry=entry,
suggested_stop=stop,
suggested_tp=[
entry * 0.80, # TP1: -20%
entry * 0.65, # TP2: -35%
entry * 0.50, # TP3: -50%
],
timestamp=asyncio.get_event_loop().time(),
))
current_time = asyncio.get_event_loop().time()
self.active_watches = {
s: d for s, d in self.active_watches.items()
if current_time - d['first_seen'] < 48 * 3600
}
await asyncio.sleep(self.scan_interval_sec)
async def _broad_scan(self) -> list[dict]:
"""Быстрое сканирование всех символов."""
...
async def _deep_analysis(self, symbol: str) -> dict:
"""
Глубокий анализ конкретного символа.
Собирает все 6 сигналов и вычисляет confluence score.
"""
funding = await self._get_funding_signal(symbol)
oi = await self._get_oi_signal(symbol)
volume = await self._get_volume_signal(symbol)
patterns = await self._get_pattern_signals(symbol, timeframe='5m')
vwap_pos = await self._get_vwap_position(symbol)
liq_density = await self._get_liquidation_density(symbol)
return confluence_score(
funding, oi, volume, patterns, vwap_pos, liq_density
)
async def _emit_alert(self, alert: PumpDumpAlert):
"""Отправка алерта (Telegram, webhook, и т.д.)."""
print(f"[{alert.level.value.upper()}] {alert.symbol} "
f"Score: {alert.score}/6 | {', '.join(alert.reasons)}")
...
Ключевые пороги для автоматизации
| Параметр | Порог для WATCH | Порог для ENTRY |
|---|---|---|
| Volume Z-score | > 3 | > 5 |
| Funding Rate Z-score | > 2 | > 3 |
| OI рост за 4ч | > 50% | > 100% |
| Цена от пика | -5% до -15% | -15% до -30% |
| Свечной паттерн | Любой | Strong (strength > 0.6) |
| Цена vs VWAP | Около VWAP | Ниже на 2%+ |
Статистика и реальность
Давайте будем честны. Эта стратегия — не грааль. Вот примерная статистика по бэктестам на данных 2024-2025:
| Метрика | Значение |
|---|---|
| Win rate (score >= 4) | ~62-68% |
| Average win | +18-25% |
| Average loss | -8-12% |
| Profit factor | 1.8-2.3 |
| Max drawdown | -15-22% |
| Sharpe ratio | 1.1-1.6 |
Ключевые ограничения:
-
Survivorship bias: мы анализируем только токены, которые торгуются на фьючерсных биржах. Самые «дикие» памп-дампы происходят на DEX, где шорт невозможен.
-
Ликвидность: на многих шиткойн-фьючерсах ликвидности недостаточно для значимого размера позиции. Slippage может съесть 2-5% прибыли.
-
Борьба с маркетмейкерами: профессиональные ММ знают эти паттерны и активно используют их для сбора стоп-лоссов шортистов. Fake pump после формирования разворотного паттерна — стандартный приём.
-
Black swan на ушорте: теоретически шорт имеет неограниченный убыток. Практически стоп-лосс решает проблему — но в моменты низкой ликвидности стоп может исполниться значительно хуже заявленной цены.
Заключение
Шортить дампы после пампа шиткойнов — одна из немногих стратегий в крипте, где edge (статистическое преимущество) реально существует. Причина: массовая иррациональность розничных трейдеров создаёт предсказуемые паттерны, а механика ликвидационных каскадов усиливает движение в вашу сторону.
Три правила, которые стоит вынести:
-
Никогда не шортите импульс. Ждите фазу 3. Ждите разворотные паттерны. Ждите дивергенцию OI. Терпение — это ваш главный инструмент, а не какой-нибудь хитрый индикатор.
-
Используйте конвергенцию сигналов. Один индикатор — шум. Два — гипотеза. Четыре+ — рабочий сетап. Funding + OI + паттерн + VWAP = вход.
-
Управляйте размером позиции, а не плечом. 2% риска на сделку, 3-5× плечо максимум, стоп-лосс >= 1.5 ATR. Скучно? Да. Но скучные трейдеры — единственные, кто остаётся на рынке через год.
И последнее. Помните: за каждым дампом — реальные люди, потерявшие реальные деньги. Многие из них — новички, поддавшиеся FOMO. Мы анализируем рыночную механику, а не призываем к манипуляциям. Зарабатывать на неэффективности — легитимно. Создавать эту неэффективность — нет.
Подробнее о funding rates и их влиянии на leverage — в нашей статье Funding rates убивают ваш leverage. О методах детектирования аномалий в трейдинге — Детектирование аномалий для защиты торговых ботов. Об арбитраже funding rates между биржами — Арбитраж funding rates между биржами.
Полезные ссылки
- CoinGlass — Liquidation Heatmap
- CoinGlass — Funding Rate
- CoinGlass — Open Interest
- Coinalyze — Aggregated Open Interest
- Hyblock Capital — Liquidation Levels
- Laevitas — Derivatives Analytics
- TradingView — Anchored VWAP
- Binance — Funding Rate History
Цитирование
@article{soloviov2026shitcoinpumpdump,
author = {Soloviov, Eugen},
title = {Как ловить падения после пампа шиткойнов: системный подход},
year = {2026},
url = {https://marketmaker.cc/ru/blog/post/shitcoin-pump-dump-strategies},
version = {0.1.0},
description = {Системный разбор стратегий шорта после пампа шиткойнов. Funding rate, OI, объёмный анализ, свечные паттерны, ликвидационные каскады. С практическим алгоритмом.}
}
MarketMaker.cc Team
Количественные исследования и стратегии