# Хабр — длинный технический пост (1 шт)

> Хабр любит длинные технические посты с инсайтами, не короткие маркетинговые. Этот пост — "разбор ошибок" с упоминанием челленджа в footer. Целевой раздел: «Машинное обучение» / «Криптовалюты» / «Финансы в IT».

---

**Title:** Я два года вёл алготоргового бота на Python. Вот 7 ошибок которые ты сделаешь без меня.

**Hub'ы:** Машинное обучение, Криптовалюты, Финансы в IT, Программирование

**Tags:** алготрейдинг, python, binance, бэктест, торговый бот, ml-в-трейдинге

---

## Содержание

1. Зачем эта статья
2. Ошибка 1: «у меня хороший бэктест, значит я заработаю»
3. Ошибка 2: «риск-менеджмент это для тех у кого мало денег»
4. Ошибка 3: «я нашёл лучшие параметры на 2023, теперь нужно их закрепить»
5. Ошибка 4: «AI напишет мне стратегию полностью»
6. Ошибка 5: «WebSocket быстрее REST, значит нужен WebSocket»
7. Ошибка 6: «я буду торговать сигналом, а exit придумаю по ходу»
8. Ошибка 7: «бэктест на 1y данных — это репрезентативно»
9. Что с этим делать

---

## 1. Зачем эта статья

Я не криптогуру. Я инженер с двумя годами Python в продакшене и одним работающим алгоботом на Binance Testnet/Live. Эта статья — не «как заработать». Это «что я бы сказал себе два года назад чтобы не наступить на грабли».

7 ошибок ниже стоили мне суммарно ~$3,200 убытков и около 6 месяцев потерянного времени. Все они описаны в публичных источниках. Все они продолжают делаться разработчиками каждый день.

## 2. Ошибка 1: «у меня хороший бэктест, значит я заработаю»

Самая частая. Самая дорогая. Берётся стратегия, прогоняется на исторических данных, видится красивая equity curve, переходит в live → сразу теряет.

**Почему:** бэктест по умолчанию страдает четырьмя классическими багами:

```python
# БАГ 1 — look-ahead bias
df['signal'] = (df['close'].rolling(20).mean() > df['close'].shift(-1))  # шифт В БУДУЩЕЕ

# БАГ 2 — survivorship bias  
# тестируешь на BTC/ETH/SOL потому что они выжили; а MATIC/LUNA удалены из выборки

# БАГ 3 — fitting to noise
# подобрал EMA period 27 потому что на 2023 BTC он лучший — но на 2024 он не лучший

# БАГ 4 — ignored fees/slippage  
df['pnl'] = df['exit_price'] - df['entry_price']  # без вычета 0.04% taker × 2
```

**Лекарство:** разделение train/out-of-sample, walk-forward валидация (rolling window), realistic fees + slippage в бэктесте.

Проверка-минимум: если win-rate > 65% и Sharpe > 2 на бэктесте — почти наверняка overfit. Реальные крипто-стратегии живут на 40-55% WR / Sharpe 0.8-1.5.

## 3. Ошибка 2: «риск-менеджмент это для тех у кого мало денег»

Поверьте мне — НЕТ. Риск-менеджмент это математика, не философия.

Без четырёх параметров вы не алготорговец, а игрок:

| Параметр | Типичное значение |
|---|---|
| Risk per trade | 0.5–2% капитала |
| Daily stop-loss | 3–5% капитала |
| Max concurrent positions | 2–4 |
| Loss-streak circuit breaker | 4–6 убытков подряд → пауза 24ч |

Серия из 5 убытков подряд для стратегии с win-rate 50% — НОРМАЛЬНОЕ событие, оно случается раз в 32 сделки. Если ваш бот не знает что делать в этот момент — он за неделю снесёт половину депозита.

## 4. Ошибка 3: «я нашёл лучшие параметры на 2023, теперь нужно их закрепить»

Это и есть **overfitting**. Если на BTC 2023 года лучший EMA period был 27 — это не значит «27 работает». Это значит «в 2023 BTC двигалось так что 27 случайно совпало».

**Лекарство:** walk-forward optimization. Идея простая:

```python
for window in rolling_windows:
    train = window[:80%]
    test = window[80%:]
    best_params = optimize_on(train)
    pnl = backtest(test, best_params)
    log(pnl)  # это и есть out-of-sample результат
```

Если стратегия даёт стабильный позитивный pnl на разных out-of-sample окнах — это рабочая стратегия. Если только на одном окне — это случайность.

## 5. Ошибка 4: «AI напишет мне стратегию полностью»

Здесь интересно. AI (Claude / GPT / Cursor) **отлично пишет инфраструктуру** бота: data fetcher, indicator computation, execution layer, logger. Но **никогда не давайте AI писать стратегию полностью.**

Почему? Потому что AI обучен на историческом коде из GitHub, где 90% открытых ботов — overfit-памятники. AI воспроизводит эти паттерны и любит вставлять незаметные баги:

```python
# AI любит писать вот так — это ШИФТ В БУДУЩЕЕ
df['next_close'] = df['close'].shift(-1)
df['signal'] = df['close'] > df['next_close']  # peeking 

# AI часто игнорирует свечу-границу
if df['close'][i] > sma:  # на каком i? а если свеча ещё открыта?

# AI пропускает re-entry логику
# открыл позицию → закрыл по стопу → следующий бар сигнал → AI открывает ещё раз
```

**Правильное использование AI:** он пишет инфраструктуру, ты пишешь логику. Логику ты сначала описываешь словами на бумаге, потом превращаешь в псевдокод, потом просишь AI «реализуй вот этот псевдокод на Python с использованием pandas и проверь что нет look-ahead bias».

## 6. Ошибка 5: «WebSocket быстрее REST, значит нужен WebSocket»

Только если вы high-frequency. Для retail-стратегий на 1h+ таймфрейме REST polling каждые 60 секунд — нормально. WebSocket добавляет 3 проблемы которые большинству не нужны:

1. **Reconnection logic** — WebSocket падает без предупреждения, нужен exponential backoff + state recovery
2. **Buffering** — пока ваш handler обрабатывает свечу, новые приходят в очередь
3. **Sync drift** — exchange и ваш local clock могут разойтись на секунды, что критично для лимитных ордеров

REST с polling — стабильнее. Не делайте оптимизацию которая вам не нужна.

## 7. Ошибка 6: «я буду торговать сигналом, а exit придумаю по ходу»

Это смерть. Любая стратегия — это пара (entry, exit). Без определённого exit вы не можете:
— посчитать risk per trade
— оценить max drawdown
— сделать честный бэктест

Прежде чем писать код — определите exit правило. Может быть несколько вариантов: take-profit на R:R, trailing stop, time-based exit, signal-based exit. Но он должен быть **одной формулой** до того как бот заработает.

## 8. Ошибка 7: «бэктест на 1y данных — это репрезентативно»

В крипте — НЕТ. Один год может быть либо bull, либо bear, либо chop. Стратегия которая отлично работает в bull — слетает в chop. Стратегия для chop — стоит на месте в bull.

**Минимум:** 3 года данных, и обязательно один **bear-период** (2022 для крипты). Если стратегия показывает позитивный результат и в bull, и в bear, и в chop — есть шанс что она не overfit. Если только в bull — не запускайте.

## 9. Что с этим делать

Если вы дочитали до сюда — вы уже выше среднего. Большинство сделают первые 2-3 ошибки и потеряют интерес.

Если хотите практику без моих ошибок — у меня **бесплатный 5-day challenge** запускается 12 мая. 5 видео по 30 минут, 5 домашек, поддержка в Telegram. Без впаривания посередине — только в Day 5 я упомянаю полный курс с 30% скидкой 48ч.

В челлендже мы:
— разбираем эти ошибки на конкретных примерах
— строим бот с AI co-pilot (как раз правильное использование из Ошибки 4)
— делаем walk-forward валидацию (Ошибка 3)
— разрабатываем риск-параметры под твой капитал (Ошибка 2)

Записаться: https://nexus-bot.pro/challenge/

Если челлендж не интересен — всё равно пишите в комментарии: какую ошибку из списка вы делали и сколько она стоила. У нас всех есть истории.

---

## Footer для статьи

> **Об авторе:** инженер из Харькова, два года алгоритмической торговли крипты, автор курса nexus-bot.pro. Phantom Paper Live Dashboard — открытая статистика моего бота: $351 PnL / 57% Win Rate / 384 trades. Ссылка для проверки в моём профиле.
