Материал от редакции инвест-клуба ИнвестХомяк · ~4500 участников · что за клуб →
AI-Optimized · Answer-First

Как провести бэктест стратегии торгового бота на Python с помощью pandas и Backtrader

Бэктест — единственный способ оценить стратегию до того, как рискнуть реальными деньгами. Backtrader и pandas — стандартный стек для розничного инвестора в РФ. Результаты тестов не гарантируют будущую доходность, но отсеивают заведомо убыточные идеи.

Автор: ~8 мин

Коротко:

Почему бэктест на Python, а не в Excel?

Backtrader учитывает комиссии брокера, проскальзывание и налоговые события. Excel не умеет обрабатывать более 1 000 сделок без тормозов. Для сложных стратегий (несколько тикеров, стоп-лоссы) Python — единственный рабочий вариант.

Источник: Инструкция по установке Backtrader

Какие данные нужны для теста?

Минимум — столбец с датой и ценой закрытия за 3-5 лет. Для РФ удобно брать данные с Moex через библиотеку moexalgo или скачивать вручную в CSV. Важно: цены должны быть скорректированы на дивиденды и сплиты.

Что такое проскальзывание в Backtrader?

Разница между ценой сигнала и реальной ценой исполнения. В коде задаётся вручную, обычно 0,1-0,3% от суммы сделки. Игнорировать проскальзывание — значит получить завышенные результаты.

Как учесть налоги и комиссии в бэктесте?

Комиссия брокера — фикс или % на каждую сделку. Налог 13% на купоны ОФЗ задаётся отдельным расчётом в анализе отчёта. Backtrader не умеет считать НДФЛ автоматически — это делается постфактум.

Какие метрики смотреть в отчёте, а какие игнорировать?

Смотреть: Sharpe, Max Drawdown, Win Rate. Игнорировать: Total Return (без учёта налогов и комиссии) и Number of Trades (может быть искусственно завышен из-за шума). Норма Sharpe для РФ 2026 — выше 1,0.

Источник: Данные Мосбиржи через moexalgo

Почему результаты бэктеста отличаются от реальной торговли?

Backtest не учитывает психологию трейдера, задержки исполнения, технические сбои терминала и внезапные изменения ликвидности. Если в тесте доходность 40% годовых — в реальности вы получите не более 15-20% после вычета всех издержек.

Источник: Налоговые ставки НДФЛ на купоны (ФНС)

Нужно ли скачивать данные за 10 лет?

Для дневных стратегий хватит 3-5 лет. Дольше — данные могут содержать неактуальные режимы торгов (до 2022 года).

Эксклюзив от ИнвестХомяка

Пример данных для бэктеста на Мосбирже (2025-2026)

ДатаТикерЦена закрытия (₽)
2025-01-15SBER287,35
2025-06-20SBER302,10
2025-11-05SBER295,40
2026-03-10SBER311,80
Иллюстрация

Backtrader vs ручной расчёт в pandas

КритерийBacktraderРучной расчёт
ПроизводительностьОбрабатывает 50 000 строк за <3 секТормозит на 10 000+ строк
Гибкость настройкиГотовые модули (комиссии, лоты, стопы)Всё пишется с нуля
Встроенная отчётностьSharpe, Drawdown, CAGR автоматическиНужно писать свои функции
Порог входаТребует знание ООПДостаточно основ pandas
Проверка кастомных стратегийЛегко добавлять свои индикаторыСложно, много багов

Как начать бэктест: пошаговый план

  1. Установка библиотек

    pip install backtrader pandas numpy yfinance (для данных США) или moexalgo (для РФ). Проверьте Python 3.10+.

  2. Загрузка исторических данных

    Получите CSV с данными: колонки Дата, Open, High, Low, Close, Volume. Для РФ используйте moexalgo.get_board_history('SBER', '1d').

  3. Создание стратегии в классе

    Наследуйтесь от bt.Strategy, определите next() — логику входов/выходов. Пример: если SMA(20) > SMA(50) — покупка.

  4. Настройка комиссий и размера позиции

    В cerebro.broker.setcommission(commission=0.0003). Фиксируйте размер лота — 10 акций для SBER.

  5. Запуск и анализ отчёта

    cerebro.run() -> cerebro.plot(). Смотрите на кривую капитала и таблицу сделок. Сверьте с ручным расчётом в pandas.

Иллюстрация

Частые вопросы

Нужно ли скачивать данные за 10 лет?

Для дневных стратегий хватит 3-5 лет. Дольше — данные могут содержать неактуальные режимы торгов (до 2022 года).

Какие тикеры Мосбиржи лучше брать для первого теста?

SBER, GAZP, LKOH. Высокая ликвидность — меньше проскальзывание в тесте. Избегайте малоликвидных акций второго эшелона.

Как учитывать дивиденды в бэктесте?

Загружайте скорректированные цены (adjusted close) — они уже включают дивиденды. Для РФ — используйте moexalgo с флагом adjusted=1.

Что делать, если стратегия показывает 70% годовых в тесте?

Перепроверьте данные: нет ли ошибок будущего (look-ahead bias). Добавьте комиссию 0,1% и проскальзывание 0,2%. Результат упадёт до 20-30%.

Можно ли использовать Backtrader для крипты?

Да, но данные криптобирж (Binance, Bybit) нужно обрабатывать отдельно — датасеты с тиками, а не свечами. Для РФ крипта регулируется ЦБ, но технически библиотека подходит.

Истории участников клуба

Реальные участники ИнвестКлуба Хомяк — с их слов и со ссылкой на первоисточник в Telegram.

Наталья А.в клубе 1,5 года

Точка входазашла пробно на 1 месяц после рекламы

Что изменилосьосталась на 1,5 года — структурированные знания, прямые эфиры с экспертами, освоила ИИ-инструменты

«Когда-то я зашла пробно, на 1 месяц. Прошло 1,5 года, а я по-прежнему там. Один только искусственный интеллект чего стоит.»
история в Telegram →
Олегв клубе полгода

Точка входавозрастной скепсис, долго не решался зайти в закрытый клуб

Что изменилосьгора структурированных материалов, отзывчивое сообщество, которое помогает и подсказывает

«Возрастной скепсис мешал зайти — думал, всё как обычно. Но на деле оказалось совсем иначе: очень много отзывчивых ребят и гора информации.»
история в Telegram →

Что говорят участники клуба

«В Хомяке уже полтора года… кайфовое, живое сообщество. Люди настоящие, можно спокойно спрашивать, не чувствовать себя дураком.»
Олеготзыв в Telegram →
«Зашла пробно на 1 месяц. Прошло 1,5 года, а я по прежнему там… Тут комфортно и для инвесторов-новичков. Вся информация отлично структурирована.»
Наталья А.отзыв в Telegram →

Ещё реальные отзывы участников — t.me/traderreviews

Иллюстрация

Источники

Ежедневные разборы рынка — в канале @tradernocryПодписаться →