Розробка системи генерування торговельних сигналів на базі AI
Генерування торговельних сигналів через AI — це не "нейромережа передбачає ціну". Це інженерне завдання з видобування статистично значущих паттернів з шумних часових рядів і перетворення їх на actionable сигнали з контрольованим risk/reward. Різниця принципова: перше — маркетинг, друге — реальна робота.
Архітектура системи
Система складається з кількох шарів, кожен з яких вирішує конкретне завдання.
Feature Engineering Pipeline — найважливіший етап. Якість сигналів визначається не складністю моделі, а якістю ознак. Сирі OHLCV-дані самі по собі слабі; цінність створюється через:
- Технічні індикатори (RSI, MACD, Bollinger Bands, ATR) в кількох таймфреймах
- Мікроструктурні ознаки: bid-ask spread, order book imbalance, trade flow imbalance
- On-chain метрики: exchange netflow, whale activity, funding rates
- Сентимент: Fear & Greed Index, соціальні метрики (LunarCrush API), новинний фон
- Крос-активні ознаки: кореляція BTC/ETH, домінування стейблкоїнів
Model Layer — ансамбль моделей, кожна з яких спеціалізована:
- LSTM / Transformer — для послідовностей з довгостроковими залежностями
- LightGBM / XGBoost — для табличних ознак, швидкі і інтерпретовані
- Reinforcement Learning (PPO, SAC) — для адаптивних стратегій, що навчаються в динамічному середовищі
Signal Aggregation — мета-модель або правила комбінування виходів окремих моделей у фінальний сигнал з оцінкою confidence.
Feature Engineering в деталях
Розглянемо order book imbalance — один з найцінніших ознак для короткострокових сигналів.
def order_book_imbalance(bids, asks, depth=10):
bid_volume = sum(qty for _, qty in bids[:depth])
ask_volume = sum(qty for _, qty in asks[:depth])
return (bid_volume - ask_volume) / (bid_volume + ask_volume)
Значення близькі до +1 указує на тиск покупців, до -1 — продавців. У комбінації з напрямком останніх угод (trade flow imbalance) це дає сильний предиктор короткострокового руху ціни.
Для часових рядів критично важлива правильна нормалізація. Ціни не можна нормалізувати за всім датасетом — це data leakage. Використовуємо rolling z-score з вікном 24-48 годин:
def rolling_zscore(series, window=24):
mean = series.rolling(window).mean()
std = series.rolling(window).std()
return (series - mean) / (std + 1e-8)
Моделі та їх застосовність
| Модель | Горизонт | Сильні сторони | Слабкі сторони |
|---|---|---|---|
| LSTM | 1h–24h | Послідовності, довгі залежності | Повільне навчання, переобучення |
| Transformer | 4h–7d | Self-attention, паралельне навчання | Вимагає багато даних |
| LightGBM | 15m–4h | Швидкість, інтерпретовність | Погано з last-mile часовими залежностями |
| PPO (RL) | Адаптивно | Вчиться на живому ринку | Нестабільність навчання |
На практиці найкращий результат дає не вибір "найкращої" моделі, а правильний ансамбль. Наприклад, LightGBM як швидкий фільтр для відсіву слабих сигналів, LSTM для оцінки direction, RL-агент для управління розміром позиції.
Pipeline навчання та переобучення
Головна проблема ML на фінансових даних — переобучення на історичні паттерни, які не воспроізводяться в майбутньому. Стандартні способи боротьби:
Walk-forward validation — єдиний коректний спосіб оцінки часових рядів. Розбиваємо дані на вікна: навчаємо на перших N періодах, тестуємо на N+1, зсуваємо вікно. Підсумкові метрики агрегуються за всіма вікнами.
Purging та embargoing (за методологією Marcos Lopez de Prado з "Advances in Financial Machine Learning"). Між train і test множинами вставляється зазор, рівний горизонту передбачення. Це виключає витік інформації через overlapping labels.
Ансамблювання різнорідних моделей — якщо кілька незалежних моделей погоджуються, ймовірність випадкового паттерну нижча.
Регуляризація confidence — модель не просто видає "buy/sell", але й оцінку впевненості. Сигнали з низькою впевненістю фільтруються або торгуються меншим розміром.
Continuous Learning та Model Drift
Ринок змінюється. Модель, навчена рік тому, деградує. Система повинна включати:
- Моніторинг дрейфу ознак: Population Stability Index (PSI) для кожної вхідної ознаки
- Моніторинг дрейфу передбачень: KL-дивергенція між розподілом сигналів історично та зараз
- Automated retraining: при виявленні дрейфу — автоматичне переобучення на свіжих даних
- A/B testing нових моделей на paper trading перед виходом у production
Інфраструктурно це реалізується через MLflow для трекінгу експериментів, Airflow або Prefect для оркестрації pipeline переобучення, Feature Store (Feast або Hopsworks) для консистентного доступу до ознак в навчанні та інференсі.
Сигнали та управління рисками
AI-сигнал — це не торговельний наказ. Це вхід у систему управління рисками. Кожен сигнал несе:
- Напрямок (long/short/neutral)
- Confidence score (0.0–1.0)
- Рекомендований горизонт утримання
- Передбачуваний цільовий рівень і stop-loss
Risk manager вирішує: торгувати ли сигнал, яким розміром, з якими параметрами виконання. Це розділення відповідальності критичне: модель оптимізує точність сигналів, risk manager — підсумковий P&L з урахуванням транзакційних витрат і рисків.
Інфраструктура інференсу
Latency інференсу має значення. Для сигналів з горизонтом 1h+ Python + scikit-learn/TensorFlow працює нормально. Для короткострокових стратегій (15m і нижче) потрібен оптимізований pipeline:
- Модель, експортована в ONNX формат
- Інференс через ONNX Runtime (в 3–10x швидше звичайного PyTorch)
- Feature engineering на Rust або Go для гарячого шляху
- Кешування розраховуваних ознак у Redis
Підсумковий latency інференсу — 5–20ms для простих моделей, 50–100ms для складних ансамблів. Для більшості crypto-стратегій цього достатньо.
Метрики якості системи
Точність передбачень — не головна метрика. Система з 55% accuracy при хорошому risk/reward часто прибутковіша за систему з 65% accuracy при поганому. Ключові метрики:
- Information Coefficient (IC) — кореляція між передбаченим і реальним рухом
- IR (Information Ratio) — IC / std(IC), стійкість сигналу
- Profit Factor — співвідношення валової прибутку до валових збитків на історичних даних
- Calmar Ratio — річна дохідність / максимальна просадка
Система, що стабільно генерує IC > 0.05 на out-of-sample даних з річним горизонтом, — серйозний результат, гідний впровадження у production.







