Модуль 5 · Симуляция и оптимизация
Урок 5.1 — Бэктест: проверяем стратегию на истории
⏱ 25 минут 🔒 Платный урок
Урок 12 из 22 · 55% пройдено
📖 Термины этого урока — простыми словами
Бэктест (Backtesting) — запуск стратегии на исторических данных. Как "машина времени": берём реальные цены за прошлый год и смотрим как бот торговал бы тогда. Бесплатный способ проверить идею.
Max Drawdown (максимальная просадка) — самое большое падение счёта от пика до дна за весь период теста. Если Max Drawdown 30% — значит в худший момент счёт падал на 30%. Чем меньше — тем стабильнее стратегия.
Profit Factor — сумма прибылей ÷ сумма убытков. PF 1.5 = на каждый потерянный $1 заработано $1.50. PF меньше 1.0 = стратегия убыточная. Хорошо: выше 1.3.
Calmar Ratio — прибыльность ÷ просадка. Показывает сколько % прибыли ты получаешь на каждый % риска. Чем выше — тем эффективнее стратегия относительно своего риска.
Overfitting (переобучение) — когда стратегия идеально работает на исторических данных, но плохо на новых. Признак: слишком много параметров подогнаны под прошлое. Лечится: тест на свежих данных которых бот не видел.
WFA (Walk-Forward Analysis) — честная проверка стратегии. Данные делятся на окна: в каждом окне оптимизация идёт на первых 4 месяцах, а результат проверяется на 5-м — которого бот не видел. Потом окно сдвигается вперёд. Так проверяется работает ли стратегия на по-настоящему новых данных, а не просто подогнана под прошлое.
❌ До этого урока
  • Придумал стратегию но боишься проверять её реальными деньгами
  • Не знаешь как "прогнать" стратегию на истории
  • Путаешь бэктест и forward-test
✅ После этого урока
  • Твоя стратегия прогоняется на 6-12 месяцах истории за секунды
  • Видишь WR, Profit Factor, максимальную просадку
  • Знаешь про Walk-Forward Analysis и почему он честнее обычного бэктеста

Зачем бэктест

Бэктест — это запуск стратегии на исторических данных. Ты говоришь: «Как бы работал мой бот за последние 6 месяцев?» Это не гарантия будущей прибыли — но отличный способ убрать явно плохие стратегии до того как потерять реальные деньги.

💡 Аналогия

Прежде чем открыть кафе в новом месте — смотришь сколько людей там ходит, какие конкуренты рядом. Ты не знаешь точно будет ли прибыль, но отсекаешь очевидно плохие варианты.

Просим Claude Code написать бэктест

👤 Ты
Создай файл backtest.py. Скачай исторические данные BTC/USDT H1 за последние 6 месяцев с Binance. Прогони через функцию check_signal из analyst.py. Симулируй сделки с SL -2% и TP +4%, размер позиции $100.

В конце выведи статистику: количество сделок, процент прибыльных, итоговый PnL, максимальная просадка.
📊 Пример результата бэктеста
Период: 01.10.2025 — 01.04.2026
Монета: BTC/USDT, H1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Сделок всего: 147
Прибыльных: 63%
Итоговый PnL: +$312.40
Макс просадка: -$84.20
Profit Factor: 1.8

На что смотреть в результатах

60%+
Win Rate — хорошо
>1.5
Profit Factor — ок
<20%
Макс просадка — норм
50+
Сделок — статистика

Оптимизация: проверяем разные значения параметров

Один бэктест — это точка. Нужна таблица. Попроси Claude перебрать все комбинации параметров и выдать результат в виде таблицы — так сразу видно при каких значениях стратегия работает, а при каких разрушается.

👤 Промпт — перебор параметров
В backtest.py добавь режим оптимизации. Протестируй все комбинации:

— RSI порог входа Long: 25, 28, 30, 33
— RSI порог входа Short: 67, 70, 72, 75
— Stop Loss: 1.0%, 1.5%, 2.0%

Данные: BTC/USDT H1, последние 90 дней.

Выдай результаты таблицей с колонками: RSI_L, RSI_S, SL, Win Rate, PnL, Просадка, Сделок.
Отметь 3 лучшие комбинации зелёным. Если комбинация убыточная — отметь красным.
Если ни одна не рабочая — скажи прямо и предложи другую стратегию.
Пример вывода
RSI_L | RSI_S | SL | WR% | PnL | Просадка
25 | 75 | 1.0% | 68% | +$142 | -$38 ← лучший
28 | 72 | 1.0% | 65% | +$118 | -$44 ← ok
30 | 70 | 1.5% | 61% | +$79 | -$61
30 | 70 | 2.0% | 58% | +$41 | -$89
33 | 67 | 2.0% | 41% | -$67 | -$180 ← убыточно
⚠️ Выбирай по просадке, не только по PnL

Высокий PnL при большой просадке — опасная стратегия. Лучше меньший PnL но стабильный. Просадка больше 20% от депозита — стратегия требует пересмотра.

WFA — честная проверка без подгонки

Обычный бэктест имеет скрытую проблему: ты оптимизируешь параметры на тех же данных на которых потом проверяешь. Это как учить ответы к экзамену а потом удивляться что сдал на 100%. На реальном рынке эти параметры могут не работать.

Walk-Forward Analysis (WFA) решает это. Данные разбиваются на скользящие окна:

Обучение (4 мес) Тест Окно 1 Обучение (4 мес) Тест Окно 2 Обучение (4 мес) Тест Окно 3 In-Sample (оптимизация) Out-of-Sample (тест) Бот не видел тестовый период при обучении

Каждый тестовый период — данные которые бот не видел при оптимизации. Итоговый результат WFA это средняя по всем тестовым периодам. Это честная оценка.

👤 Ты
Добавь в backtest.py режим Walk-Forward Analysis. Возьми данные BTC/USDT H1 за последний год. Раздели на скользящие окна: 4 месяца обучение + 1 месяц тест, шаг 1 месяц. В каждом окне: подбери лучшие параметры RSI и Боллинджера на периоде обучения, потом прогони с этими параметрами на тестовом периоде. Выведи результат каждого окна и среднее по всем.
📊 Пример WFA результата
Окно 1 (тест окт): WR 61% · PnL +$48 · Просадка -$18
Окно 2 (тест ноя): WR 58% · PnL +$31 · Просадка -$22
Окно 3 (тест дек): WR 64% · PnL +$67 · Просадка -$14
Окно 4 (тест янв): WR 55% · PnL +$19 · Просадка -$31
Окно 5 (тест фев): WR 62% · PnL +$54 · Просадка -$17
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Среднее: WR 60% · PnL +$44/мес · Просадка -$20
💡 WFA vs обычный бэктест

Если обычный бэктест показывает 70% WR, а WFA показывает 55% — стратегия была переобучена. 55% — реальная цифра. Если WFA тоже показывает 68-70% — стратегия по-настоящему рабочая и параметры не подогнаны под прошлое.

⚠️ Если результат плохой

Скажи Claude Code: «Результаты слабые. Попробуй изменить параметры: RSI порог 25/75 вместо 30/70, Боллинджер 25 периодов вместо 20. Прогони снова.» Подбирать параметры — нормально.

✅ Урок 5.1 завершён

Бэктест запущен, стратегия проверена на истории. В следующем уроке — оптимизация параметров: сетка значений и генетический алгоритм.

← Урок 4.2 Урок 5.2: Сетка параметров →