Разработка AI-скальпинг бота
Скальпинг — стратегия множества сделок с малым profit per trade (несколько базисных пунктов) и высокой частотой. ML в скальпинге работает с микроструктурными сигналами, недоступными дольгосрочным стратегиям.
Микроструктурные сигналы для скальпинга
Order Book Imbalance (OBI)
Дисбаланс bid/ask volume в стакане предсказывает краткосрочное движение. Если на bid 5x больше объёма, чем на ask → давление покупателей → вероятно движение вверх.
OBI = (bid_volume - ask_volume) / (bid_volume + ask_volume)
Простой, но мощный сигнал. ML улучшает: взвешивание по уровням стакана, temporal patterns OBI.
Trade Flow Imbalance
Signed trade flow: сделки, инициированные покупателями vs. продавцами. Дисбаланс в потоке → информация об агрессивных участниках.
Queue Position и Order Flow Toxicity
Насколько "ядовит" текущий flow? VPIN (Volume-Synchronized Probability of Informed Trading): предсказание adverse selection risk.
Microprice
Взвешенная середина bid/ask по первому уровню стакана: microprice = (ask_vol * bid + bid_vol * ask) / (bid_vol + ask_vol)
Лучший "fair value" estimate, чем простая середина. Deviation of trades from microprice → signal.
ML-архитектура для скальпинга
Deep LOB (Deep Learning for Limit Order Book)
CNN + LSTM на snapshot стакана последних N секунд. Предсказание направления mid-price за следующие K tick.
class DeepLOB(nn.Module):
def __init__(self, depth=20, features=4):
super().__init__()
# Convolutional layers for spatial order book features
self.conv_layers = nn.Sequential(
nn.Conv2d(1, 32, (1, 2), stride=(1, 2)),
nn.LeakyReLU(0.01),
nn.Conv2d(32, 32, (4, 1)),
nn.LeakyReLU(0.01),
nn.Conv2d(32, 32, (4, 1)),
nn.LeakyReLU(0.01),
)
# LSTM for temporal patterns
self.lstm = nn.LSTM(32, 64, 2, batch_first=True, dropout=0.2)
self.fc = nn.Linear(64, 3) # Down/Flat/Up
def forward(self, x):
# x: [batch, 100, depth*features] (100 timesteps)
x = x.unsqueeze(1)
conv_out = self.conv_layers(x)
batch, _, h, w = conv_out.shape
lstm_in = conv_out.permute(0, 2, 1, 3).reshape(batch, h, -1)
lstm_out, _ = self.lstm(lstm_in)
return self.fc(lstm_out[:, -1, :])
Horizons: предсказание за 1, 5, 10 tick. Ensemble разных горизонтов.
Execution-критические аспекты
Latency бюджет
Скальпинг требует low-latency execution:
- Signal computation: <1ms
- Order placement: <5ms round-trip
- Total: <10ms для адекватного скальпинга
Co-location или proximity hosting. WebSocket feeds vs. REST polling (в 100x быстрее). asyncio/aiohttp для неблокирующих запросов.
Fill Rate и Queue Position
Limit orders: нужно оказаться в очереди раньше других. Aggressive limit (price through) vs. passive (at best bid/ask). ML оптимизирует агрессивность ордера в зависимости от urgency сигнала.
Transaction Costs при высокой частоте
При 500 сделок в день × $1 комиссии = $500 в день costs. Стратегия должна генерировать $1000+ в день gross P&L. Backtest должен использовать реалистичную модель комиссий и slippage.
Управление рисками при скальпинге
Daily loss limit: остановка торговли при достижении заранее определённого дневного убытка. Одна плохая сессия не должна уничтожить многонедельную прибыль.
Max position size: скальпинг — не направленная торговля. Большая накопленная позиция = риск. Автоматическое закрытие при превышении inventory threshold.
Drawdown tracking: per-session и rolling 5-day drawdown — circuit breakers.
Срок разработки: 3–5 месяцев для конкретного рынка и стратегии с proper backtesting на tick data.







