Post

Алгоритмічний торговий робот: розробка, тестування та результати

Повна технічна реалізація торгової стратегії з використанням бібліотек 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).
  • Фільтр Сигналів: Індекс Відносної Сили (RSI).
    • Long: Тільки якщо RSI < 70 (уникнення перекупленості).
    • Short: Тільки якщо RSI > 30 (уникнення перепроданості).
  • Сигнали Виходу: Перетин ціною “дуже короткої” 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.440.60

Стратегія не тільки значно перевершила пасивне утримання активу за прибутковістю, але й зробила це з набагато меншими ризиками.


Висновок

Цей проект демонструє, як комбінація перевірених технічних індикаторів, доповнена продуманою моделлю управління ризиками та динамічним розміром позиції, може дати чудові результати. Ретельне бектестування та оптимізація є ключем до створення ефективних торгових алгоритмів.

Планую і надалі вдосконалювати стратегію, зокрема через впровадження адаптивних SL/TP та дослідження інших факторів впливу.

GitHub Link

This post is licensed under CC BY 4.0 by the author.