第十六章:实盘交易系统架构
做期权波动率曲面套利,说白了就是跟市场抢钱。但抢钱也得有趁手的兵器——系统架构就是你的兵器。我见过太多人策略写得漂亮,一上实盘就崩,为什么?架构没扛住。
今天咱们就聊聊实盘交易系统的三大核心层:数据层、策略层、执行层。再加上低延迟技术和订单管理这两个关键环节。嗯,这些都是我踩过坑之后才真正理解的。
一、系统架构总览
先给你看一张我画的架构图。这张图我改过至少五版,每一版都是血的教训换来的。
这张图看着简单,但每一层都有讲究。咱们一层一层拆开聊。
二、数据层:地基要稳
数据层是整个系统的基础。基础不牢,地动山摇。我在早期做回测时,就因为数据对齐问题吃过亏——明明策略信号很漂亮,一上实盘就亏钱。后来才发现,是行情时间戳没对齐。
2.1 行情数据订阅
期权数据比股票复杂得多。每个到期日、每个行权价都是一条独立的数据流。我个人习惯用多路订阅的方式:
- Level 1 行情:买卖五档,用于常规监控
- Level 2 行情:逐笔成交,用于精细分析
- 快照数据:每秒一次的全量数据,用于曲面构建
2.2 数据清洗与对齐
原始行情数据有多脏,你可能想象不到。缺失值、异常跳变、时间戳错位...这些都是家常便饭。
# 伪代码:数据清洗流程
def clean_option_data(raw_data):
# 1. 剔除异常值(价格超出合理范围)
if raw_data.price < 0 or raw_data.price > 10000:
return None
# 2. 时间戳对齐(统一到毫秒级)
aligned_ts = align_timestamp(raw_data.timestamp)
# 3. 插值处理(缺失的中间价)
if raw_data.mid_price is None:
raw_data.mid_price = (raw_data.bid + raw_data.ask) / 2
return raw_data
2.3 波动率曲面构建
这是数据层的核心。我们需要把离散的期权报价,转化成连续的波动率曲面。常用的方法有:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| SVI 参数化 | 参数少,拟合快 | 对极端值敏感 | 实时曲面构建 |
| 样条插值 | 平滑性好 | 计算量大 | 历史数据分析 |
| 核回归 | 非参数,灵活 | 需要调参 | 研究阶段 |
三、策略层:大脑要快
策略层是系统的核心。数据层喂进来的是原料,策略层要产出的是交易信号。
3.1 曲面套利信号生成
波动率曲面套利的核心逻辑很简单:找到曲面上的异常点。但实现起来有很多细节。
我个人习惯用三步法:
- 计算理论曲面:用SVI模型拟合当前市场数据
- 计算残差:实际报价 vs 理论曲面的差值
- 筛选信号:残差超过2个标准差的,视为套利机会
3.2 风险敞口计算
做套利最怕什么?怕你以为在套利,其实在赌方向。所以必须实时监控风险敞口。
# 风险敞口计算示例
class RiskManager:
def __init__(self):
self.greeks = {'delta': 0, 'gamma': 0, 'vega': 0, 'theta': 0}
self.limits = {'delta': 1000, 'gamma': 500, 'vega': 2000}
def check_risk(self, new_order):
# 计算新订单对敞口的影响
new_greeks = self.calc_greeks(new_order)
# 检查是否超限
for greek in self.greeks:
if abs(self.greeks[greek] + new_greeks[greek]) > self.limits[greek]:
return False # 拒绝订单
return True
关键点:风险敞口计算必须在策略层完成,不能等到执行层再算。我曾经因为把风控放在执行层,结果策略层疯狂发单,执行层来不及校验,直接爆仓。
3.3 组合优化引擎
当你同时发现多个套利机会时,怎么分配资金?这就是组合优化要做的事。
常用的优化目标:
- 夏普比率最大化:追求风险调整后收益
- 资金利用率最大化:在风险可控下多开仓
- 换手率最小化:降低交易成本
四、执行层:手要稳
策略层算出了信号,执行层要把它变成真实的成交。这一步最考验工程能力。
4.1 订单路由管理
期权交易通常涉及多个交易所。你得知道哪个交易所流动性最好,哪个延迟最低。
| 交易所 | 平均延迟 | 流动性 | 推荐策略 |
|---|---|---|---|
| 上交所 | 5ms | 高 | 主力合约 |
| 深交所 | 8ms | 中 | 次主力合约 |
| 中金所 | 10ms | 低 | 股指期权 |
4.2 低延迟技术
做波动率套利,延迟就是金钱。我见过一个团队,就因为比对手慢了2ms,一年少赚了300万。
低延迟的几个关键点:
- 硬件层面:用FPGA做行情解析,用RDMA做数据传输
- 软件层面:用C++写核心逻辑,避免GC停顿
- 网络层面:托管服务器到交易所机房,用光纤直连
4.3 订单生命周期管理
一个订单从生成到成交,要经历多个状态:
订单状态机:
NEW → PENDING → SUBMITTED → PARTIAL_FILLED → FILLED
↓
REJECTED → CANCELLED
每个状态都要有对应的处理逻辑。特别是部分成交的情况,你得决定是继续等还是撤单重发。
五、订单管理:细节决定成败
订单管理看似简单,但坑最多。我总结了几条铁律:
- 幂等性:同一个订单不能重复提交。用唯一ID去重
- 超时处理:订单超过100ms没回应,自动撤单
- 日志记录:每个订单的完整生命周期都要记录,方便复盘
- 熔断机制:连续3笔订单被拒,暂停交易5秒
六、总结
实盘交易系统架构,说白了就是三个字:稳、快、准。
- 数据层要稳:数据质量决定策略上限
- 策略层要快:计算延迟决定能否抓住机会
- 执行层要准:订单管理决定最终收益
这套架构我用了三年,迭代了十几个版本。每次优化都能带来实实在在的收益提升。希望对你也有帮助。
公众号:蓝海资料掘金营,微信deep3321