第二十六章:做市商合规与监管:曲面定价透明度、最佳执行、报告要求
做市这行,技术再牛,策略再赚钱,最后都得过合规这道关。我见过不少同行,曲面建模做得漂亮,交易执行也快,结果在监管上栽了跟头。说白了,监管不是来限制你的,是来确保市场公平的。你想想看,如果每个做市商都藏着掖着,市场早就乱套了。
曲面定价透明度:你的模型得经得起拷问
监管机构现在越来越关注做市商的定价逻辑。他们想知道:你的报价是怎么来的?凭什么这个期权卖这个价?
核心要求:曲面定价模型必须可解释、可审计、可复现。
我个人习惯,在系统里保留完整的定价日志。每次报价,都记录下用了哪个曲面参数、哪个波动率模型、哪个利率曲线。这样监管来查,我能直接甩出一份完整的定价链路。
举个例子,你报了一个深度虚值期权的价格。监管问:为什么这个价格比市场高5%?你得能回答:因为曲面在这个行权价附近有skew,而且我用了SVI参数化,参数是α=0.15, β=0.8, ρ=-0.7, m=0.1, σ=0.2。这些参数怎么来的?从最近30天的市场数据拟合出来的。
实战技巧:我建议在曲面定价引擎里加一个“审计模式”。开启后,每次报价都输出一份JSON格式的定价报告,包含输入参数、中间计算结果、最终报价。这样既满足监管,也方便自己复盘。
最佳执行:不是报最低价就完事了
做市商的“最佳执行”义务,很多人理解错了。以为就是给客户最低的买卖价差。其实不然。
监管要求的是:在合理时间内,以合理价格,执行客户订单。这里面有三个维度:
- 价格维度:报价不能明显偏离市场公允价
- 时间维度:不能故意延迟执行,等市场变化
- 规模维度:大单要合理拆分,减少市场冲击
我曾经遇到过一个案例。有个客户要卖1000手平值期权,我的系统直接报了一个价,成交了。结果监管来查:为什么没有尝试更好的价格?为什么没有拆分订单?
嗯,从那以后,我在执行引擎里加了一个“最佳执行检查器”。每次大单进来,先判断:
def check_best_execution(order):
# 检查价格是否在合理范围内
fair_price = get_fair_price(order.symbol, order.quantity)
if abs(order.price - fair_price) > max_spread:
return False, "价格偏离过大"
# 检查是否需要拆分
if order.quantity > threshold:
suggested_splits = split_order(order, market_depth)
return False, f"建议拆分为{suggested_splits}笔"
return True, "符合最佳执行要求"
注意:最佳执行不是静态的。市场波动大的时候,合理的价差范围会扩大。我建议用动态阈值,根据市场波动率实时调整。
报告要求:数据要全,格式要对
监管报告,说白了就是把你每天的交易数据、报价数据、风险数据,按固定格式报上去。不同市场、不同品种,要求不一样。
我整理了一份常见的报告要求清单:
| 报告类型 | 内容要求 | 频率 |
|---|---|---|
| 交易报告 | 每笔交易的品种、数量、价格、时间、对手方 | T+1 |
| 报价报告 | 所有报价的品种、价格、数量、持续时间 | 每日 |
| 风险报告 | 希腊值、VaR、压力测试结果 | 每日 |
| 曲面参数报告 | 使用的波动率模型、参数值、拟合误差 | 每周 |
这里有个坑。很多做市商只关注交易报告,忽略了曲面参数报告。但监管现在越来越重视定价模型的透明度。我建议把曲面参数也纳入常规报告体系。
我的做法:写一个自动化报告生成脚本。每天收盘后,自动从数据库拉数据,生成标准格式的XML或CSV文件,然后通过API上传到监管系统。全程无人干预,减少人为错误。
曲面定价透明度的技术实现
说到曲面定价透明度,我不得不提一个关键点:你的曲面参数化方法必须稳定。如果每次拟合出来的参数都跳来跳去,监管一看就知道你的模型有问题。
我推荐用SVI或SSVI这类参数化方法。它们参数少,经济含义明确,容易解释。比如SVI的ρ参数代表skew方向,σ代表曲面的整体波动水平。监管问起来,你直接说“ρ=-0.7说明市场对下行风险有溢价”,他们一听就懂。
相比之下,如果你用神经网络或者随机森林来拟合曲面,虽然拟合精度高,但解释性差。监管问“为什么这个点价格这么高”,你总不能说“神经网络自己学的”吧?
核心原则:曲面定价模型要兼顾精度和可解释性。在合规面前,宁可牺牲一点精度,也要保证模型透明。
最佳执行的量化指标
怎么量化“最佳执行”?我一般用这几个指标:
- 价差占比:实际成交价与市场中间价的差距,除以市场价差
- 执行速度:从收到订单到成交的时间,单位毫秒
- 市场冲击:订单执行后,市场价格的变化幅度
举个例子,如果市场中间价是100,买卖价差是1,你以100.2成交了客户买单。价差占比就是(100.2-100)/1 = 20%。这个值越低,说明执行越好。
我建议在系统里设置一个仪表盘,实时监控这些指标。一旦某个指标超出阈值,自动报警。
def monitor_best_execution(execution_data):
spread_ratio = (execution_data.exec_price - execution_data.mid_price) / execution_data.spread
if spread_ratio > 0.3:
alert("价差占比过高,请检查报价策略")
speed = execution_data.exec_time - execution_data.order_time
if speed > 100: # 超过100毫秒
alert("执行速度过慢,请检查系统延迟")
注意:不同品种的阈值不一样。流动性好的品种,价差占比可以设低一些。流动性差的品种,适当放宽。我一般根据历史数据,取95分位数作为阈值。
报告系统的架构设计
最后说说报告系统的架构。我建议用三层结构:
- 数据采集层:从交易系统、风控系统、定价引擎实时采集数据
- 数据处理层:清洗、转换、聚合数据,生成标准格式的报告
- 报告输出层:通过API或邮件发送给监管机构
这里有个细节要注意:数据一致性。交易系统的数据、风控系统的数据、定价引擎的数据,时间戳要对齐。否则监管一查,发现交易时间和报价时间对不上,麻烦就大了。
我习惯用统一的时钟源,所有系统都同步到同一个NTP服务器。这样时间戳误差控制在1毫秒以内。
避坑指南:我曾经因为时区问题吃过亏。系统用的是UTC时间,监管要求用本地时间。结果报告里时间全错了。后来我在报告生成时,统一加了一个时区转换函数,确保输出的是监管要求的时区。
知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以看到,曲面定价透明度、最佳执行、报告要求,这三者其实是环环相扣的。
做市商合规,说白了就是三个字:透明、公平、完整。曲面定价要透明,执行要公平,报告要完整。做到这三点,监管来了也不怕。
我见过太多同行,把精力全花在策略优化上,合规系统随便搞搞。结果一出事,罚款比赚的钱还多。你想想看,值吗?
最后说一句:合规不是成本,是投资。一个合规体系完善的做市商,在市场上更容易获得客户信任,也更容易拿到交易所的做市资格。这笔账,怎么算都划算。