File size: 3,378 Bytes
441286f
 
 
 
 
8171f7d
441286f
 
 
8171f7d
 
 
441286f
 
 
6d99076
8171f7d
6d99076
8171f7d
6d99076
8171f7d
 
441286f
8171f7d
 
 
d730c93
8171f7d
d730c93
 
8171f7d
 
 
 
 
 
d730c93
 
8171f7d
d730c93
8171f7d
d730c93
8171f7d
 
 
 
 
 
 
d730c93
8171f7d
d730c93
 
 
8171f7d
 
 
d730c93
8171f7d
 
 
 
 
 
 
 
 
 
6d99076
 
8171f7d
 
6d99076
8171f7d
d730c93
6d99076
 
441286f
8171f7d
 
441286f
d730c93
8171f7d
 
6d99076
8171f7d
 
441286f
d730c93
8171f7d
d730c93
8171f7d
 
 
 
d730c93
8171f7d
d730c93
8171f7d
 
 
 
 
d730c93
8171f7d
d730c93
441286f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
---
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) — 对比学习

## ⚠️ 声明

本模型仅供研究学习使用,不构成任何投资建议。股市有风险,入市需谨慎。