Целью проекта является разработка и тестирование автоматизированной торговой системы для акций Сбербанка на основе классической стратегии пересечения скользящих средних.
Основная задача — реализовать корректную генерацию и исполнение торговых сигналов, а также провести оптимизацию параметров для максимизации годовой доходности.
Использованы часовые котировки акций Сбербанка за период с 1 января по 31 декабря 2018 года.
Данные представлены в формате pandas.DataFrame со следующими колонками:
Open— цена открытия часаHigh— максимальная цена за часLow— минимальная цена за часClose— цена закрытия часа- Индекс — временная метка (
datetime)
- Начальный капитал: 100 000 руб.
- Таймфрейм: 1 час
- Stop-loss: 5% от цены покупки
- Базовые окна:
fast_window = 30,slow_window = 90
- Сигнал покупки: быстрая скользящая средняя пересекает медленную снизу вверх
- Сигнал продажи: быстрая скользящая средняя пересекает медленную сверху вниз
- Исполнение ордеров: по цене открытия следующего часа (без look-ahead bias)
- Stop-loss: срабатывает при падении цены на 5% от цены покупки
Торговый робот реализован с использованием фреймворка VectorBT — высокопроизводительной библиотеки для векторизованного бэктестинга.
Возможности реализации:
- Генерация торговых сигналов на основе скользящих средних
- Учёт stop-loss и управления позициями
- Визуализация результатов
- Свечной график с наложенными скользящими средними
- Маркеры сигналов:
- 🟢 Зелёный — покупка
- 🔴 Красный — продажа
- ⚫ Чёрный — срабатывание stop-loss
- График состояния позиции (1 — в позиции, 0 — вне позиции)
Проведён перебор комбинаций окон скользящих средних для максимизации доходности.
Наилучший результат показала комбинация:
| Параметр | Значение |
|---|---|
| Быстрая скользящая | 2 |
| Медленная скользящая | 14 |
- Инструмент: акции Сбербанка
- Период тестирования: 2018 год
- Итоговая доходность: +18.38% годовых
- Система корректно обрабатывает все торговые сигналы, включая stop-loss, без использования будущих данных
- Реализована и протестирована классическая трендовая стратегия на пересечении скользящих средних
- Использование VectorBT позволило обеспечить высокую производительность и визуальную интерпретируемость
- Оптимизация параметров повысила доходность до 18.38% за год
- Проект демонстрирует практическое применение количественного анализа и backtesting в Python
- Python 3.10+
- Pandas, NumPy — обработка временных рядов
- VectorBT — генерация сигналов, управление портфелем, визуализация
- Plotly — интерактивные графики (встроено в VectorBT)
- Jupyter Notebook — среда разработки