Алгоритмічний торговий робот: розробка, тестування та результати
Повна технічна реалізація торгової стратегії з використанням бібліотек backtesting та quantstats-lumi: побудова сигналів на основі SMA та RSI, динамічне управління позицією, адаптивний ризик-менеджмент та глибокий аналіз ефективності стратегії через ключові фінансові метрики.
Побудова торгової стратегії з аналізом через backtesting і quantstats
У цій статті представлено повний процес створення торгової стратегії — від генерації сигналів до детального аналізу результатів. Основна увага приділена саме реалізації логіки торгівлі, адаптивному управлінню ризиками та використанню спеціалізованих інструментів Python.
🛠 Інструменти, використані в проекті:
backtesting
— симуляція стратегії на історичних даних із урахуванням комісій, стопів, ринкових ордерівquantstats-lumi
— генерація звітів із ключовими метриками: CAGR, Sharpe, просадки, волатильність тощо
📈 Ключові компоненти реалізованої стратегії:
- Сигнали на основі SMA + RSI — чіткі умови входу/виходу з позицій
- Динамічний розмір позиції — залежить від волатильності, сили тренду та RSI
- SL/TP контроль — адаптивний рівень обмеження збитків і фіксації прибутку
- Оцінка продуктивності — через стандартні фінансові метрики та інтерактивні графіки
🎯 Мета: Створити стратегічний фреймворк, який можна розширювати під будь-який актив або тип ринку — без прив’язки до конкретного інструменту.
Try it yourself: запустіть Google Colab-ноутбук із повним кодом за 🔗 цим посиланням
Архітектура стратегії: ключові моделі
AdvancedSmaStrategy
– це не просто набір правил, а система взаємопов’язаних моделей, кожна з яких виконує свою функцію.
Альфа Модель (генерація сигналів)
Відповідає за ідентифікацію потенційних точок входу та виходу.
- Основа: Комбінація 4-х ковзних середніх (SMA) з різними періодами (
n1
,n2
,n_enter
,n_exit
). - Сигнали Входу:
- Long: Перетин ціною (
Close
) короткої SMA (sma_enter
) знизу вгору, за умови підтвердження тренду (середняsma1
> довгоїsma2
). - Short: Перетин ціною короткої SMA (
sma_enter
) зверху вниз, за умови підтвердження тренду (sma1
<sma2
).
- Long: Перетин ціною (
- Фільтр Сигналів: Індекс Відносної Сили (RSI).
- Long: Тільки якщо
RSI < 70
(уникнення перекупленості). - Short: Тільки якщо
RSI > 30
(уникнення перепроданості).
- Long: Тільки якщо
- Сигнали Виходу: Перетин ціною “дуже короткої” SMA (
sma_exit
) у напрямку, протилежному відкритій позиції.
Модель Оцінки Ризиків (управління позицією)
Критично важливий компонент для захисту капіталу та оптимізації прибутку.
- Stop Loss (SL) та Take Profit (TP): Відсоткові, встановлюються для кожної угоди (
stop_loss_pct
,take_profit_pct
). - Динамічний Розмір Позиції:
- Базовий ризик: 2% від поточного капіталу на угоду.
- Коригування: Розмір позиції додатково модулюється
current_margin
мультиплікатором. current_margin
розраховується динамічно:margin = min_margin + (max_margin - min_margin) * norm_vol * rsi_factor * trend_factor
norm_vol
(нормалізована волатильність): Інвертована волатильність (менша волатильність ринку → більший розмір позиції).rsi_factor
: Залежить від RSI (нейтральний RSI → більший розмір, екстремальний → менший).trend_factor
: Залежить від сили тренду (різниця міжsma1
таsma2
).
Результати в цифрах: Стратегія vs. Buy & Hold
Оптимізація параметрів проводилася за допомогою backtesting.py
та методу sambo
. Ось ключові показники ефективності:
Метрика | Стратегія | Buy & Hold |
---|---|---|
Загальна Дохідність | +176% | +31% |
CAGR (Середньорічна) | +39.34% | +9.15% |
Максимальна Просадка | -19.65% | -91.88% |
Коефіцієнт Шарпа | 1.44 | 0.60 |
Стратегія не тільки значно перевершила пасивне утримання активу за прибутковістю, але й зробила це з набагато меншими ризиками.
Висновок
Цей проект демонструє, як комбінація перевірених технічних індикаторів, доповнена продуманою моделлю управління ризиками та динамічним розміром позиції, може дати чудові результати. Ретельне бектестування та оптимізація є ключем до створення ефективних торгових алгоритмів.
Планую і надалі вдосконалювати стратегію, зокрема через впровадження адаптивних SL/TP та дослідження інших факторів впливу.