| --- |
| tags: |
| - finance |
| - order-book |
| - institutional-trading |
| - algorithmic-trading |
| - level-2 |
| - A-share |
| - LOB |
| - TWAP |
| - VWAP |
| - iceberg-orders |
| - pytorch |
| license: mit |
| --- |
| |
| # LOBAlgoNet — 主力算法单模式识别 |
|
|
| ## 📌 核心思路 |
|
|
| **真实行情数据没有标签**——我们不知道哪笔委托是"主力"下的。但主力几乎都使用算法单(TWAP、VWAP、冰山订单等), |
| 这些算法在委托簿中会留下可识别的特征签名。 |
|
|
| 本模型的方法: |
| 1. **规则引擎检测算法签名** → 生成伪标签(无需人工标注) |
| 2. **深度学习模型学习** → 从原始LOB数据直接识别这些模式(泛化超越规则) |
|
|
| ## 🏗️ 架构 |
|
|
| ``` |
| Input: 100个连续Level-2快照 (batch, 100, 40) |
| ↓ BilinearNorm (自适应归一化) |
| ↓ Spatial CNN (十档价位间的空间模式) |
| ↓ Temporal CNN (多尺度时间特征) |
| ↓ Transformer Attention × 2 (时序依赖) |
| ↓ 5-class Classification |
| ``` |
|
|
| 参数量: 338,525 |
|
|
| ## 🎯 识别的5种模式 |
|
|
| | ID | 类型 | 说明 | 关键特征 | |
| |----|------|------|----------| |
| | 0 | **TWAP** | 时间加权平均价 | 等量等间隔下单,被动-主动交替 | |
| | 1 | **VWAP** | 量加权平均价 | 跟随市场成交量节奏,参与率稳定 | |
| | 2 | **ICEBERG** | 冰山订单 | 一档反复补单,实际量>>显示量 | |
| | 3 | **SUPPORT** | 护盘/支撑位 | 关键价位持续大单,深度不对称 | |
| | 4 | **NORMAL** | 散户/正常 | 无明显算法特征 | |
|
|
| ## 📊 性能 |
|
|
| | Metric | Value | |
| |--------|-------| |
| | Test Accuracy | 0.5273 | |
| | Test F1 (Macro) | 0.3538 | |
| | Test F1 (Weighted) | 0.5822 | |
|
|
| Per-class: |
| | 类型 | Precision | Recall | |
| |------|-----------|--------| |
| | TWAP | 0.0000 | 0.0000 | |
| | VWAP | 0.1739 | 0.4444 | |
| | ICEBERG | 0.9820 | 0.5573 | |
| | SUPPORT | 0.4684 | 0.5764 | |
| | NORMAL | 0.2338 | 0.3858 | |
|
|
| ## 🚀 使用方法 |
|
|
| ```python |
| import torch, numpy as np |
| from model import LOBAlgoNet |
| |
| model = LOBAlgoNet(num_classes=5, d_model=128, nhead=4, dropout=0.25) |
| model.load_state_dict(torch.load("model.pt", weights_only=True)) |
| model.eval() |
| |
| stats = np.load("norm_stats.npz") |
| # raw_lob: your (100, 40) LOB data, normalized with stats["means"] and stats["stds"] |
| x = torch.from_numpy((raw_lob - stats["means"]) / stats["stds"]).unsqueeze(0).float() |
| |
| with torch.no_grad(): |
| probs = torch.softmax(model(x), dim=1) |
| pred = probs.argmax(1).item() |
| |
| labels = ["TWAP(时间加权)", "VWAP(量加权)", "冰山订单", "护盘/支撑", "散户/正常"] |
| print(f"识别结果: {labels[pred]} (置信度: {probs[0,pred]:.1%})") |
| ``` |
|
|
| ## 💡 如何用于实盘 |
|
|
| 1. **接入Level-2行情**: 万得、聚宽、TuShare Pro等获取十档委托数据 |
| 2. **实时推理**: 每收到新快照,用最近100个快照组成输入 |
| 3. **信号融合**: 结合MACD、成交量异动等传统指标,多信号确认 |
| 4. **跟随策略**: 检测到TWAP/VWAP买入 → 考虑跟随;检测到SUPPORT → 关注支撑位 |
|
|
| ## 📚 参考文献 |
|
|
| - DeepLOB (Zhang et al., TNNLS 2019, arxiv:1808.03668) |
| - TLOB (Berti & Kasneci, 2025, arxiv:2502.15757) |
| - MarS (Li et al., Microsoft, arxiv:2409.07486) — TWAP签名定义 |
| - PULSE (Cartea et al., 2023, arxiv:2312.05827) — 多时钟特征 |
| - CoLES (Babaev et al., 2022, arxiv:2002.08232) — 对比学习 |
|
|
| ## ⚠️ 声明 |
|
|
| 本模型仅供研究学习使用,不构成任何投资建议。股市有风险,入市需谨慎。 |
|
|