一家深圳私募的执行主管周一拿到两份报告:上周五的母单台账——A 股 38 张票、Q/ADV 0.5%–6%——和上季度的 TCA 报告。任务很具体:把今天的单子分到券商–算法组合上,周五再用新一周 TCA 揭示的东西更新分配规则。本课把前三课的算法机器变成生产协议——决策网格、参数旋钮、TCA 闭环、broker-algo 轮盘。
2×2 算法选型决策网格(decision grid table)
TCA 反馈闭环最终落到这张实施差额(implementation shortfall)家族 vs. 时间表型家族的决策表上;市场冲击(market impact)的强弱在两轴之外作为隐含约束。
选型问题有两个轴决定了约 80% 的决策:Alpha 衰减半衰期(信号死得多快)与 母单大小相对 ADV(这张单子能不藏住地推完吗)。
| 小单(Q/ADV < 1%) | 大单(Q/ADV > 5%) | |
|---|---|---|
| 快 Alpha(半衰期 < 30 分钟) | IS, 偏大——前置;抓住 Alpha;SOR 在 SSE / SZSE 明面侧激进扫单 | IS + 机会型覆盖——主体按 Almgren–Chriss 调度;订单簿提供流动性时拉过来;考虑用一笔大宗交易开仓 |
| 慢 Alpha(半衰期 > 4 小时) | VWAP 或 TWAP——耐心免费;以区间 VWAP 为基准;最小化冲击,接受小时间风险 | POV 取 5%–8%——自适应参与;跟随流动性;接受可能的日终残量落到收盘集合竞价 |
辩护:左上冲击可忽略、时间风险痛,IS 偏大恰好刻画;右上冲击与时间都重要,Almgren–Chriss 前置避免 Alpha 衰减;左下时间风险无关紧要,VWAP 给友好基准;右下不能让市场看到,POV 自适应参与,日终残量进收盘集合竞价或大宗交易窗口。
什么时候无时间表的纯流动性搜寻打败 IS + 覆盖?紧迫度真正是「等流动性来才成交」——A 股私募在流动性差的小盘股再平衡上常见。
参数调优:每个家族的旋钮
每个家族有一个参数掌握成本–方差权衡的大部分。
VWAP(成交量加权平均价)窗口长度
窗口从全天缩到 30 分钟会抬冲击、降时间风险。窗口每减半, 在总量固定时按 翻倍;方差按 减半。平均上 时缩窗赢。
POV 参与率
A 股私募压在 5%–10% ADV 以下避开涨跌停(limit-up / limit-down)触发——美股 10% 在 A 股不安全。1% Q/ADV 甜点 ;5% Q/ADV 时 并接受小残量。
IS 风险厌恶
从交易员紧迫度反推 :「11:30 前完」 选 让 时清掉 70% 持仓。用第 3 课闭式 从弯曲度反解。510300.SH 上 30 分钟 IS 窗口典型 。
TCA 分解:归因责任
盘后 TCA 把到达价滑点拆为四项:
半价差 是对可成交部分付掉的买卖价差——可从成交回报的有效价差直接观察。冲击项 是订单自身成交流(order flow)带来的短期与永久冲击——按模块 4.5.2 的冲击模型估计。Alpha 衰减项 是从下单到平均成交时刻公开盘面位移、扣除订单自身贡献后的净位移——它同时捕捉市场漂移与信号衰减。残差 是未解释方差——场所组合偏差、时间日内效应、券商特定噪声。
A 股私募桌上一笔 510300.SH 工作日母单的 TCA 算例:总到达价滑点 5.4 bp = 1.5 bp(半价差)+ 2.4 bp(冲击)+ 1.0 bp(Alpha 衰减)+ 0.5 bp(残差)。归因:2.4 bp 冲击 + 0.5 bp 残差 = 2.9 bp 归 算法选型与执行(这家券商的 IS 算法相对该尺寸过于激进);1.0 bp 归 策略(Alpha 已衰减;下单来得太晚);1.5 bp 半价差是结构性的,没有算法能从可成交子单上收回半价差。这个分解告诉桌面一件具体的事:把该券商对同尺寸 510300.SH 单的 IS 算法切到更温和的 ,并推动基金经理更早释放 Alpha 单。
A 股 TCA 还要单列 印花税(stamp duty,stamp-duty)——卖侧固定 0.05%(2023 年下调后),是 楔形 成本不是 可变 成本,不进算法时间表调度但要进 TCA 报告。另需注意 T+1 结算(t-plus-1-settlement):T 日买入的 510300.SH 不能 T+1 之前卖出,因此 IS 与收盘价基准在「日终」前需保留一个安全缓冲——一张 14:55 才成交完的买单事实上把基金经理锁死到 T+1。
TCA 闭环把缺口连回模块 4.5.1(回测方法学):实际冲击与价差喂入下一轮回测的成本模型。一笔 5% Q/ADV 的母单平均付 2.4 bp 冲击就更新回测器的 估计。下一轮回测在更新的成本上重跑 Alpha 衰减分析。策略说「推到 6% ADV——值得」或者「压到 4% 以下——成本吃掉 Alpha」。研究与执行闭合成一个环。
broker-algo 轮盘
A 股私募桌通常有 3–5 家券商有资格在一只标的的某个算法家族上跑同一类型订单(B 端券商业务+自营)。怎样公平比较?把每张可比单都送给最喜欢的券商,其他人永远拿不到统计显著的样本——选择偏差吃掉对比。broker-algo 轮盘 用受控随机化解决这点。
算法轮盘伪代码:
import numpy as np
from collections import defaultdict
def assign_broker(ticket, eligible_brokers, weights, rng):
"""按当前分配权重随机指派券商."""
probs = np.array([weights[b] for b in eligible_brokers], dtype=float)
probs = probs / probs.sum()
return rng.choice(eligible_brokers, p=probs)
def reweight(history, half_life_days=20):
"""用指数加权平均滑点重新分配权重."""
new_weights = {}
for broker, fills in history.items():
ages = np.array([(today - f.date).days for f in fills])
w = np.exp(-ages * np.log(2) / half_life_days)
slip = np.array([f.slippage_bp for f in fills])
ewma_slip = (w * slip).sum() / w.sum()
new_weights[broker] = np.exp(-ewma_slip / 2.0)
total = sum(new_weights.values())
return {b: w / total for b, w in new_weights.items()}
轮盘以固定节奏运行——A 股私募实务中月度复评较常见,跨 3–5 家券商,针对每个 (券商, 算法家族, 标的尺寸桶) 设置资格。资格按桶定义——把券商在「小单慢 Alpha」桶上的小单与另一券商在「大单快 Alpha」桶上的大单对比,是拿苹果比橘子。节奏在统计功率(窗口越长,置信区间越窄)与响应性(券商表现会漂移;季度节奏会错过制度变化)之间权衡。
值得标记:broker-algo 轮盘在 A 股市场上的成熟度低于美股,是一个行业趋势点,不是每家国内桌面都在跑的标准动作——把它当成方法论参考,不当成现成的国内 SOP。
区域锚定算例(region-anchored example):A 股私募桌的执行手册
一家上海私募管 A 股大盘股资金运行 broker-algo 轮盘,月度跨 4 家券商——记为 W、X、Y、Z——母单分类到 3×3 网格(尺寸 × 紧迫度)。CSRC(证监会)对基金管理人保留交易成本分析记录的期望(依 AMAC,参考术语表 amac 项)是 TCA 闭环的合规动机之一,外加经济动机。私募桌通常依赖至少一家独立第三方 TCA 提供商进行同业可比基准对照,以与券商自报数据相互核对再启动权重更新。
在 510300.SH 关联桶(大盘 ETF、低 Q/ADV)上,桌面把参数设为:
- Alpha 驱动建仓 30 分钟窗口的 IS 取 量级;
- 1%–5% ADV 的母单 POV 上限 8%;
- 再平衡单的 VWAP 窗口取 max(基金经理要求窗口, 60 分钟)。
TCA 报告月度复评。当券商 X 的 IS 算法对 Alpha 驱动建仓的滑点连续两个月比同业宽 0.4 bp,轮盘的指数加权重分配把 X 的份额下推约 30%;六周后若差距持续,X 在该桶上被移出资格名单,并触发与 X 客户经理的对话。机理可解释,闭环已闭合。
Capstone 练习
Exercise
你的桌面跑 4 家券商——W、X、Y、Z——通过 broker-algo 轮盘在 510300.SH 大盘股桶上。最近 20 个交易日按券商的平均到达价滑点为:W 2.3 bp、X 4.0 bp、Y 2.5 bp、Z 2.8 bp。TCA 分解显示 X 的超额集中在冲击项(X 的 IS 算法 比同业高——相对该尺寸过于激进)。用指数加权 softmax、半衰期 20 天、scale 2.0 bp 计算新的轮盘权重。然后回答:(a) 你会向 X 提出哪两个参数变更,(b) 该桶你设的复评节奏是什么,(c) 什么样的 TCA 图能说服你把 X 从资格名单完全移除。
提示
提示
提示
模块收束与前向衔接
这关闭了 execution-algorithms 模块。你从词汇开始——三个家族、四个基准、一个分解;搭起时间表家族(VWAP / TWAP / POV)以及切片器伪代码与三种失败模式;搭起 IS 家族与 Almgren–Chriss 闭式、机会型覆盖、智能订单路由(在 SSE 与 SZSE 之间分发子单,明面与大宗交易窗口之间权衡)。本课用选型网格、参数旋钮、TCA 分解、broker-algo 轮盘收束。
前向,自然的下一模块是 4.6.3(live-trading-and-operations),它拥有 FIX 协议线级、EMS UI、与本课假设的 TCA 基础设施流水线——把这里的桌面管理协议翻译成生产栈。后向,本课闭合的 TCA 闭环喂入 4.5.1(回测方法学)——实际成本更新回测器的成本模型,更新策略 go / no-go 阈值,更新本模块路由的母单流。研究与执行是一个环,不是两个。