29、监管与合规:Reg NMS、MiFID II、最佳执行、记录保存、合规检查
做量化交易,技术再牛,也得先过合规这道坎。
我见过不少团队,策略回测曲线漂亮得不行,一上实盘就被监管盯上。说白了,不懂规则,赚了钱也可能吐回去。
这一章,咱们聊聊几个绕不开的监管框架。Reg NMS、MiFID II、最佳执行、记录保存、合规检查。嗯,都是硬骨头,但必须啃下来。
Reg NMS:美国市场的“交通规则”
Reg NMS,全称是Regulation National Market System。2005年由SEC推出,目的是让美国股市更公平、更透明。
我个人习惯把它理解为“订单路由的交通规则”。它规定了券商必须把订单发到报价最好的交易所。
核心条款:
- 订单保护规则(Order Protection Rule):禁止“交易穿透”。比如A交易所报价10.00,B交易所报价10.01,你不能在B交易所成交,除非A的报价被撤销。
- 接入规则(Access Rule):要求交易所提供公平、非歧视的接入服务。
- 市场数据规则(Market Data Rule):规定行情数据的分发和收费方式。
我在项目中遇到过一个问题:策略在多个交易所同时挂单,结果因为Reg NMS的订单保护规则,部分订单被自动路由到其他交易所,导致成交延迟。嗯,这里要注意,你的路由逻辑必须兼容Reg NMS。
MiFID II:欧洲的“金融宪法”
MiFID II,2018年生效,比Reg NMS更复杂。它覆盖了股票、债券、衍生品等多个资产类别。
说白了,MiFID II的核心目标就两个:增加透明度,保护投资者。
| 关键要求 | 具体内容 |
|---|---|
| 交易报告 | 所有交易必须在规定时间内向监管机构报告 |
| 最佳执行 | 券商必须采取“足够措施”为客户获得最佳结果 |
| 算法交易 | 算法必须经过测试、有熔断机制、有记录保存 |
| 市场结构 | 限制暗池交易量,鼓励公开市场 |
你想想看,如果你的算法在欧洲市场跑,没有做MiFID II合规检查,后果可能很严重。我曾经帮一个客户整改过一套高频交易系统,光是算法测试文档就补了200多页。
最佳执行:不只是“最优价格”
很多人以为最佳执行就是拿到最好的价格。其实没那么简单。
MiFID II对最佳执行的定义是:券商必须考虑价格、成本、速度、执行概率、结算效率等多个因素。
我的建议:
别只盯着价格。有时候,稍微贵一点的价格,但成交更快、滑点更小,反而是更好的执行。我在做美股交易时,就遇到过因为追求1分钱差价,结果订单被延迟,最终成交价反而更差的情况。
实现最佳执行,通常需要做两件事:
- 事前分析:根据历史数据,评估不同交易场所的执行质量。
- 事后检查:定期对比实际执行结果与市场基准,看有没有偏差。
记录保存:你的“护身符”
监管机构查你的时候,拿什么证明你合规?记录。
Reg NMS和MiFID II都要求保存交易记录、订单记录、算法日志、通信记录等。保存期限通常是5到7年。
避坑指南:
我曾经见过一家公司,因为记录保存不完整,被罚了上百万美元。他们以为只保存成交记录就够了,结果监管要求提供订单修改记录、撤销记录、甚至算法决策日志。嗯,这些他们都没存。
记录保存的要点:
- 完整性:从订单生成到最终成交,每个环节都要记录。
- 不可篡改:使用WORM(一次写入,多次读取)存储技术。
- 可检索:监管要求你能在合理时间内提供特定记录。
合规检查:自动化是王道
人工检查?太慢了,而且容易出错。
我个人习惯把合规检查做成自动化流程。每天收盘后,系统自动跑一遍检查脚本,生成合规报告。
# 一个简单的合规检查示例
def check_best_execution(trades, benchmark):
"""
检查每笔交易是否达到最佳执行标准
trades: 交易记录列表
benchmark: 基准价格(如VWAP)
"""
violations = []
for trade in trades:
# 计算执行价格与基准的偏差
deviation = (trade['price'] - benchmark[trade['symbol']]) / benchmark[trade['symbol']]
if deviation > 0.01: # 偏差超过1%
violations.append(trade)
return violations
# 使用示例
trades = [
{'symbol': 'AAPL', 'price': 150.50, 'volume': 100},
{'symbol': 'GOOGL', 'price': 2800.00, 'volume': 50}
]
benchmark = {'AAPL': 149.00, 'GOOGL': 2795.00}
result = check_best_execution(trades, benchmark)
print(f"发现 {len(result)} 笔违规交易")
这个例子很简单,但核心思想是一样的:把合规规则写成代码,让机器帮你检查。
知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以看到,Reg NMS和MiFID II是两大监管支柱,它们共同定义了最佳执行、记录保存和合规检查的要求。
这张图你看懂了吗?Reg NMS和MiFID II虽然地域不同,但最终都指向同一个目标:让市场更公平、更透明。
一个小建议:
如果你同时做美股和欧股,建议把两套规则都做成检查模块。我自己的系统里,就有一个“监管适配器”,根据交易市场自动切换合规规则。省心不少。
好了,这一章的内容就到这里。合规不是束缚,而是保护。保护你的策略,保护你的资金,也保护整个市场的健康。