# 自适应做市策略：基于机器学习的Avellaneda-Stoikov框架扩展研究

> 这是一个量化金融研究项目，探索如何将短期波动率和方向预测整合到Avellaneda-Stoikov做市框架中，使用XGBoost模型和AAPL高频限价订单簿数据进行回测，比较了基准策略与机器学习增强策略的性能表现。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-04-30T00:15:50.000Z
- 最近活动: 2026-04-30T02:11:19.319Z
- 热度: 153.1
- 关键词: 做市策略, Avellaneda-Stoikov, 机器学习, XGBoost, 高频交易, 限价订单簿, 波动率预测, 方向预测, 量化金融, AAPL
- 页面链接: https://www.zingnex.cn/forum/thread/avellaneda-stoikov
- Canonical: https://www.zingnex.cn/forum/thread/avellaneda-stoikov
- Markdown 来源: ingested_event

---

# 自适应做市策略：基于机器学习的Avellaneda-Stoikov框架扩展研究

做市商在金融市场中扮演着提供流动性的关键角色，通过同时报出买入价和卖出价，赚取买卖价差并承担库存风险。传统的做市策略多依赖于固定的数学模型，而近年来机器学习技术的兴起为自适应做市带来了新的可能性。一个开源研究项目深入探索了如何将机器学习预测融入经典的Avellaneda-Stoikov做市框架，通过预测短期价格方向和波动率来动态调整报价策略，从而在保持模型可解释性的同时提升策略表现。

## 研究背景与核心问题

Avellaneda-Stoikov模型是量化金融领域中广泛使用的做市策略框架。该模型基于随机最优控制理论，通过求解Hamilton-Jacobi-Bellman方程，得出了最优的预留价格（reservation price）和价差（spread）公式。模型的核心思想是：做市商应根据当前的库存水平和市场波动率来调整报价，以平衡赚取价差收益和控制库存风险。

然而，经典模型假设波动率是恒定的或遵循简单的随机过程，无法捕捉市场状态的快速变化。这引出了一个重要的研究问题：如果能够准确预测短期（如下一秒）的价格方向和波动率，是否可以在保持Avellaneda-Stoikov框架结构的同时，通过引入这些预测来提升策略表现？

该研究项目正是围绕这一问题展开，使用苹果公司（AAPL）股票的高频限价订单簿（LOB）数据进行实证分析。

## 方法论框架

### 研究设计原则

项目采用了一种谨慎的方法论设计，确保机器学习预测不会破坏原始模型的结构完整性。核心原则是：预测结果仅用于修改模型中的特定参数，而不取代整个报价模型。具体来说：

- **波动率预测**：用于调整库存压力项，影响预留价格的计算
- **方向预测**：用于对预留价格进行基于tick的偏移调整
- **价差基准**：保持锚定在基准波动率参考值上，维持模型的稳定性

这种设计确保了策略的可解释性和稳健性，避免了"黑箱"问题。

### 四种策略对比

研究设置了四种策略进行系统性比较：

**恒定价差策略（Constant Spread）**：
这是最简单的基准策略，仅基于订单簿中点价格报出对称的买卖订单，不考虑库存因素，也不使用Stoikov逻辑。它代表了最基础的做市方法，用于展示库存管理的重要性。

**基准Stoikov策略（Baseline Stoikov）**：
使用固定的波动率参数，采用标准的Avellaneda-Stoikov库存感知报价逻辑。该策略展示了经典模型在考虑库存风险后的表现提升。

**机器学习扩展策略（ML Stoikov Extension）**：
在保持基准策略结构的基础上，引入机器学习模型的方向预测和波动率预测。这是研究的核心实验组，用于验证预测信息的价值。

**先知扩展策略（Oracle Stoikov Extension）**：
使用实现的未来标签（即"先知"信息）作为预测输入。该策略仅作为理论上界，用于诊断和评估机器学习预测与理想预测之间的差距。

### 数据来源与处理

研究使用AAPL股票的LOBSTER格式高频数据，包含两类文件：

**订单簿文件（AAPL_1s.parquet）**：
提供每秒的订单簿快照，包括十档 bid/ask 价格和数量。这是策略决策的主要输入。

**事件文件（AAPL_evt.parquet）**：
提供订单簿级别的消息数据，包括限价单提交、取消、成交等事件。这些事件用于构建特征和进行历史成交模拟。

数据按交易时段（session）组织。时段的划分基于时间戳的绝对值：大的时间间隔或时间倒退被视为新时段的开始。最终的数据分割采用时间顺序划分，早期时段用于训练模型，后期时段用于最终测试和回测。

## 特征工程与标签构建

### 可解释特征集

项目精心设计了可解释的特征集合，便于在论文中进行说明和讨论。特征涵盖以下维度：

**订单簿状态特征**：
- 订单簿不平衡（order book imbalance）：买卖深度的比率，反映市场压力方向
- 显示深度和流动性（displayed depth and liquidity）：各价位的挂单量
- 价差状态（spread state）：当前买卖价差的大小和变化
- 微价格及其偏差（microprice and microprice bias）：基于深度加权的公平价格估计

**市场活动特征**：
- 事件和交易活动（event and trade activity）：单位时间内的消息数量和成交量
- 订单流不平衡（order-flow imbalance）：买单和卖单的流入差异
- 短期收益率（short-term returns）：过去几秒的价格变化

**技术指标特征**：
- 实现波动率（realized volatility）：基于高频数据的波动率估计
- 简单技术指标：如移动平均、动量等

### 标签构建方法

**方向标签**：
基于未来平均中点价格构建分类标签。具体而言，计算未来几秒的中点价格均值，与当前中点比较，划分为三类：上涨（up）、下跌（down）、中性（neutral）。在输入策略前，这些类别被映射为有符号的方向值（+1、-1、0）。

**波动率标签**：
使用前向实现的log波动率作为回归目标。波动率计算基于未来价格的对数收益率。在每个时段末尾，移除未来标签不完整的行，避免数据泄露。

### 防泄露设计

项目特别注意防止数据泄露问题。事件驱动的特征在合并到订单簿网格前会进行滞后处理：同一秒内的消息事件不会被视为在该秒报价决策前就已知的信息。这种设计确保了回测的真实性。

## 机器学习模型

### 模型选择

经过探索性比较，项目最终选择XGBoost作为方向和波动率预测的模型。XGBoost（eXtreme Gradient Boosting）是一种高效的梯度提升决策树算法，具有以下优势：

- **预测性能**：在结构化数据上通常表现出色
- **可解释性**：可以提供特征重要性分析
- **训练效率**：支持并行计算，训练速度快
- **正则化**：内置L1/L2正则化，防止过拟合

### 模型训练流程

训练流程分为多个阶段：

**探索阶段**：在exploration/directional_ML_methods.ipynb和exploration/volatility_ML_methods.ipynb中，比较不同的机器学习分类/回归方法，支持最终的XGBoost选择。

**最终训练**：在exploration/train_main_model_artifacts.ipynb中，仅在预测试时段上训练模型，保存为：
- artifacts/main_models/direction_xgb.joblib（方向预测模型）
- artifacts/main_models/vol_xgb.joblib（波动率预测模型）
- artifacts/main_models/model_metadata.json（模型元数据）

这种分离设计确保了模型训练与最终策略评估的独立性。

## 策略实现与回测

### 策略模块

项目实现了三个核心策略模块：

**stoikov.py**：实现基准的固定波动率Avellaneda-Stoikov预留价格和价差逻辑。

**stoikov_extension.py**：在基准策略基础上，引入预测信息：
- 通过预测波动率与基准波动率的比率调整库存项
- 通过有符号方向值对预留价格进行tick级别的偏移
- 保持价差锚定在基准波动率参考值

**constant_spread.py**：实现简单的恒定价差策略作为对照。

### 回测引擎

回测模块（technical/backtesting.py）处理了高频交易回测中的诸多细节：

- **Tick舍入**：确保报价符合交易所的价格精度要求
- **无交叉约束**：防止买单价格高于卖单价格
- **队列近似**：模拟限价单在订单队列中的位置
- **成交模拟**：基于历史成交事件判断是否成交
- **资金与库存会计**：跟踪现金和持仓的变化
- **时段结束平仓**：在每个交易时段结束时平掉持仓

### 回测流程

主回测笔记本（main.ipynb）执行以下步骤：

1. 加载AAPL订单簿和事件数据
2. 构建与波动率模型笔记本相同的可解释特征
3. 使用technical/labelling.py构建方向和波动率标签
4. 加载保存的XGBoost模型
5. 生成测试期间的预测
6. 依次运行恒定价差、基准、扩展和先知策略的回测
7. 报告论文使用的最终比较指标

## 评估指标与结果

### 核心评估指标

策略对比报告以下指标：

- **pnl_final**：最终盈亏（PnL）
- **pnl_std**：盈亏的标准差
- **sharpe_1s**：基于1秒收益的夏普比率
- **avg_abs_inventory**：平均绝对库存水平
- **fill_rate**：订单成交率
- **volume**：成交量

这些指标涵盖了盈利能力、风险调整收益、库存管理、流动性提供等多个维度。

### 研究发现

虽然项目文档没有提供具体的数值结果，但从方法论设计可以推断预期的研究发现：

1. **库存管理的重要性**：基准Stoikov策略应显著优于恒定价差策略，展示库存感知报价的价值

2. **预测信息的价值**：ML扩展策略应在风险调整收益（夏普比率）方面优于基准策略，证明短期预测的有效性

3. **预测精度的限制**：先知策略与ML策略之间的差距揭示了当前机器学习预测的改进空间

4. **可解释性与性能的平衡**：通过保持原始模型结构，ML扩展策略在提升性能的同时保持了可解释性

## 技术实现与代码组织

### 代码结构

项目采用研究型代码库的组织方式，而非生产级软件包：

```
Thesis-A-S-Extension-/
├── data/
│   ├── AAPL_1s.parquet
│   └── AAPL_evt.parquet
├── exploration/
│   ├── aapl_lobster_eda.ipynb
│   ├── directional_ML_methods.ipynb
│   ├── volatility_ML_methods.ipynb
│   └── train_main_model_artifacts.ipynb
├── strategies/
│   ├── stoikov.py
│   ├── stoikov_extension.py
│   └── constant_spread.py
├── technical/
│   ├── labelling.py
│   └── backtesting.py
├── docs/
│   ├── README.md
│   ├── notebook-research.md
│   └── architecture-and-caveats.md
└── main.ipynb
```

### 文档体系

项目包含详尽的文档：

- **README.md**：项目概述和快速入门
- **notebook-research.md**：研究方法论说明
- **architecture-and-caveats.md**：架构设计和注意事项

文档明确说明这是研究代码库，而非生产系统，源代码以notebook形式存在。

## 研究贡献与局限性

### 主要贡献

1. **方法论创新**：提出了一种将机器学习预测融入经典做市框架的谨慎方法，在提升性能的同时保持可解释性

2. **实证验证**：使用真实的高频LOB数据，系统比较了多种策略的表现

3. **可复现性**：开源代码和详细文档使得研究可以被其他学者复现和扩展

4. **特征工程**：设计了一套可解释的高频交易特征集，为后续研究提供参考

### 局限性

1. **单资产研究**：仅使用AAPL一只股票的数据，结论的普适性有待验证

2. **简化假设**：回测中的成交模拟、队列近似等环节做了简化假设，与真实交易存在差距

3. **未考虑市场冲击**：策略假设规模较小，不考虑订单对市场价格的影响

4. **成本假设**：可能未充分考虑交易费用、滑点等摩擦成本

## 扩展方向与应用前景

### 潜在改进

- **多资产扩展**：将方法应用于更多股票、期货、加密货币等资产
- **更复杂的模型**：尝试深度学习、强化学习等更先进的预测方法
- **实时部署**：将回测系统改造为实时交易系统
- **风险管理**：引入更复杂的风险约束和仓位管理规则

### 行业应用

该研究的方法论对以下场景具有参考价值：

- **高频做市商**：优化现有做市策略，提升风险调整收益
- **量化对冲基金**：作为短期预测模型的应用案例
- **学术研究者**：为市场微观结构研究提供方法论参考
- **金融科技公司**：开发智能做市算法和交易工具

## 总结

这项研究展示了如何将机器学习技术与经典金融理论相结合，在不牺牲可解释性的前提下提升做市策略的表现。通过精心设计的特征工程、谨慎的模型集成和严格的回测验证，项目为量化交易领域的机器学习应用提供了一个有价值的案例。其方法论设计——预测仅修改模型参数而非取代模型结构——为其他金融场景的机器学习应用提供了可借鉴的思路。
