第19章:合规与监管风控:监管报告要求、交易记录保存、反洗钱检查、市场操纵检测
做市商这行,技术再牛,策略再赚钱,一旦合规出问题,那就是一票否决。我见过不少团队,辛辛苦苦跑了一年的策略,最后因为监管文件没交齐,直接被罚到破产。说白了,合规风控不是束缚你的枷锁,而是保护你的铠甲。
这一章,我们聊聊做市商必须面对的四个合规硬骨头:监管报告、交易记录、反洗钱、市场操纵检测。嗯,每个都是实打实的红线。
核心观点:合规不是成本,是生存许可证。别等到监管找上门,才想起补课。
19.1 监管报告要求:别让数据成为你的催命符
监管报告,说白了就是交易所或监管机构要求你定期上交的「成绩单」。我刚开始做做市商那会儿,觉得这东西就是走形式。直到有一次,因为日报数据少填了一笔大宗交易,被交易所发了警告函。嗯,从那以后我再也不敢马虎了。
常见的监管报告包括:
- 日报/周报:交易量、持仓量、盈亏情况、最大回撤等基础指标
- 月报:更详细的策略表现、风险敞口、流动性贡献分析
- 异常交易报告:触发风控阈值时的即时报告(比如单笔亏损超过5%)
- 年度合规报告:全年交易行为总结、系统审计结果、合规自评
我的习惯:所有报告模板提前做好自动化脚本。每天收盘后自动生成日报,人工复核只需5分钟。别等到月底再手动整理,那会累死你。
你想想看,监管机构要的不是你的策略细节,而是你的风险暴露和合规状态。所以报告里重点突出这几个维度:
- 资金安全:保证金率、杠杆倍数、资金使用率
- 市场风险:VaR、最大回撤、敞口集中度
- 操作风险:系统故障次数、订单延迟率、错误交易笔数
- 合规状态:是否有违规记录、是否完成KYC/AML检查
19.2 交易记录保存:每一笔订单都是呈堂证供
交易记录保存,这个我吃过亏。曾经有个项目,因为服务器硬盘坏了,丢了3天的交易日志。结果那3天刚好有客户投诉说我们操纵价格。没有日志,我们百口莫辩。最后赔了客户一笔钱才了事。
监管要求通常包括:
- 保存期限:一般要求5-7年(不同地区不同,香港要求7年,新加坡要求5年)
- 保存内容:订单时间戳(精确到毫秒)、订单类型、价格、数量、成交记录、修改/撤销记录
- 保存格式:不可篡改的格式(比如WORM存储,Write Once Read Many)
- 可检索性:监管随时可能要求你提供某一天的某笔订单详情
注意:时间戳必须使用UTC时间,并且与交易所的时间源同步。我曾经见过一个团队,因为服务器时间慢了2秒,导致所有订单记录与交易所对不上,被认定为数据造假。这可不是小事。
我个人建议的存储架构是这样的:
# 交易记录存储示例(伪代码)
class TradeLogger:
def __init__(self):
self.storage = WORMStorage() # 不可篡改存储
self.time_sync = NTPClient() # 时间同步
def log_order(self, order):
# 记录原始数据
raw_data = {
'timestamp': self.time_sync.get_utc_ms(),
'order_id': order.id,
'symbol': order.symbol,
'side': order.side,
'price': order.price,
'quantity': order.quantity,
'type': order.type,
'status': order.status
}
# 写入不可篡改存储
self.storage.write(raw_data)
# 同时写入热存储用于快速检索
self.hot_cache.set(order.id, raw_data, ttl=30*24*3600)
def query_order(self, order_id, date_range):
# 优先查热存储
result = self.hot_cache.get(order_id)
if result:
return result
# 查冷存储
return self.storage.read(order_id, date_range)
19.3 反洗钱检查:别让做市商变成洗钱通道
反洗钱(AML)这块,很多做市商容易忽视。你想想看,你的做市账户每天进进出出几千万,如果被坏人利用来洗钱,那你就成了帮凶。监管对这块查得特别严。
核心要求包括:
- KYC(了解你的客户):如果是自营做市,相对简单。但如果你帮客户做市,必须完成完整的KYC流程
- 交易监控:自动检测异常交易模式,比如频繁的小额交易(结构化交易)、大额资金快进快出
- 可疑交易报告:发现可疑行为后,必须在规定时间内向监管报告(通常24-48小时)
- 客户风险评级:根据客户背景、交易行为、资金来源等划分风险等级
避坑指南:我曾经遇到过一个客户,每天做市交易量很大,但资金来源不明。我们当时没太在意,结果后来被查出是洗钱团伙。从那以后,我坚持所有客户必须提供资金来源证明,哪怕少赚点钱,也不能冒这个险。
反洗钱检测的常见规则:
| 检测规则 | 描述 | 阈值示例 |
|---|---|---|
| 结构化交易 | 频繁小额交易,规避大额报告门槛 | 单笔<1万,但日累计>10万 |
| 快进快出 | 资金入账后短时间内转出 | 入账后1小时内转出>80% |
| 异常对倒 | 同一账户或关联账户之间频繁交易 | 日对倒量>总交易量30% |
| 地理异常 | 来自高风险地区的交易 | IP来自FATF黑名单国家 |
19.4 市场操纵检测:别搬起石头砸自己的脚
市场操纵检测,这是做市商合规里最敏感的一块。做市商本身就是在提供流动性,但一不小心就可能越界变成操纵市场。我见过不少做市商,因为策略参数设置不当,被认定为「虚假订单」或「幌骗交易」。
常见的市场操纵行为包括:
- 幌骗交易(Spoofing):挂大单但不成交,诱导其他交易者跟单,然后撤单反向操作
- 对倒交易(Wash Trading):自己买自己卖,制造虚假交易量
- 分层挂单(Layering):在多个价位挂单,制造虚假深度
- 动量点火(Momentum Ignition):通过大单推动价格,然后反向平仓
注意:做市商的「合法做市」和「市场操纵」之间只有一线之隔。比如,你挂单后频繁撤单,撤单率超过一定比例,就可能被认定为幌骗。我个人建议,做市策略的撤单率控制在20%以内,超过这个数就要小心了。
如何检测自己的策略是否越界?我建议建立内部监控系统:
# 市场操纵检测示例(伪代码)
class ManipulationDetector:
def __init__(self):
self.cancel_rate_threshold = 0.2 # 撤单率阈值
self.wash_trade_window = 60 # 对倒检测时间窗口(秒)
def check_spoofing(self, orders):
# 检测撤单率
total_orders = len(orders)
cancelled = sum(1 for o in orders if o.status == 'cancelled')
cancel_rate = cancelled / total_orders if total_orders > 0 else 0
if cancel_rate > self.cancel_rate_threshold:
self.alert('撤单率过高,可能涉及幌骗交易')
def check_wash_trading(self, trades):
# 检测对倒交易
for trade in trades:
# 检查买卖双方是否关联
if trade.buyer_id == trade.seller_id:
self.alert('发现对倒交易:同一账户买卖')
# 检查时间窗口内的反向交易
if self.is_reverse_trade(trade, self.wash_trade_window):
self.alert('发现可疑对倒:短时间内反向交易')
def check_layering(self, order_book):
# 检测分层挂单
layers = order_book.get_layers()
for layer in layers:
if layer.quantity > 100 and layer.lifetime < 5:
self.alert('发现分层挂单:大单快速撤单')
我的建议:每个季度做一次策略合规审计。把策略跑在历史数据上,看看有没有触发任何操纵检测规则。如果有,赶紧调整参数。别等到监管来查你,那时候就晚了。
最后说一句,合规不是一朝一夕的事。它需要你从系统设计的第一天就开始考虑。我见过太多团队,先跑策略赚钱,等被罚了才想起来补合规。结果呢?赚的钱全交了罚款,还搭上了声誉。
嗯,这一章就到这里。记住,合规风控不是你的敌人,而是你的护身符。