- 强化学习最优执行:用策略梯度把大单拆成低冲击序列
要卖掉 100 万股,一次性砸下去会把价格砸穿;TWAP 均分又扛着最大的库存风险。经典 Almgren-Chriss(AC) 用闭式解给出「前重后轻」的最优拆单,但它假设连续时间、平滑冲击。本文用 REINFORCE 策略梯度直接在离散环境里学拆单:30 步、临时冲击 ε=0.01、波动 σ=0.05、风险厌恶 λ=9。结果——REINFORCE 期望总成本 0.00367(3.67bps),远低于 TWAP 的 0.01082(10.82bps, 降 66%),也比 naive 离散化的 AC 闭式(0.00583)更低;实现短fall 标准差从 TWAP 的 0.032 压到 0.005(约 1/6)。图表显示它学到与 AC 一致的「前重后轻」,且因为端到端优化真实离散成本,落在 AC 公式之下。附完整 numpy 实现与四张真实计算图。
9 min Chinese - 神经微分方程组合再平衡:用连续时间控制优化调仓节奏
传统组合按月/季度再平衡,每次交易在月末造成冲击成本和暴露滞后;Neural ODE 把权重变化建模为连续时间常微分方程,用一个小 MLP 参数化漂移 f_theta(w,t),通过 RK4 积分得到平滑调仓路径。本文用 numpy 从零实现 MLP、监督训练和 ODE 积分,证明在合成双资产组合上,连续控制的跟踪误差仅为月度离散的 1/170(0.0001 vs 0.0170),净财富追平理想目标跟随(0.977),且把月末交易尖峰摊成连续交易流。附完整 Python 与四张真实计算图。
10 min Chinese - 波动率目标风险平价:把组合波动锁在固定区间
「把组合波动锁死在 10%」听起来是纯风控改进,25 年 4 资产受控模拟(无条件波动与相关结构由构造给定)却给出不舒服的账本:波动命中率从 71.9% 提到 98.6%,Sharpe 却从 0.883 掉到 0.775——而这 −0.108 里只有 −0.006 是策略本身的,其余全是换手买单。决定性对照是常数杠杆:把 ERC 一次性放大到同样 10.7% 波动,Sharpe 精确等于 0.883410(杠杆不改变 Sharpe,引擎自洽性验证),零成本下 0.8828 vs 0.8884、真实增量仅 −0.0056。收获不在 Sharpe 而在回撤:−17.72% vs −20.01%,改善 2.28pp。两条安慰剂锁死机制:时间置换 −0.1276、同方差世界 −0.0964,与真实世界 −0.1088 几乎无差——收益根本不来自波动可预测性(预测 R² 仅 0.1785)。最实用的修复是无交易带:偏离不足 15% 就不动,换手降 66%、Sharpe 回到 0.8654、命中率仍有 97.0%
19 min Chinese - 暗池逆向选择:省下的半个价差被信息成本吃掉了多少
暗池(dark pool)的核心卖点是「省价差」——在美国,NASDAQ、IEX、BIDS 等暗池执行于 nbbo midpoint,理论上每笔成交比 lit 市场省 half-spread(即买卖盘报价差的一半,约 0.5 bp)。但这个「节省」是名义值,真实代价藏在信息成本里。本文用受控仿真证明:知情交易者(informed trader)在暗池的成交率(80%)远高于噪音交易者(40%),导致被动执行者(passive liquidity taker)在暗池更频繁地与知情者配对——每笔成交后 5 步,暗池 markout 为 −0.05 bps(lit 为 +0.08 bps),20 步后暗池 markout 达到 −23.0 bps(lit 为 −6.2 bps)。知情占比 30% 时,名义节省 0.26 bps,但逆向选择损失高达 4.13 bps,净收益为 −3.87 bps(比 lit 还亏);知情占比 50% 时,净额进一步恶化到 −4.95 bps。翻转点(净收益从正变负)出现在知情占比约 2.5%——现实市场几乎必然在此临界值以上。安慰剂检验显示:知情=0% 时,净收益恰好等于名义节省(0.20 bps),逆向选择损失精确为 0;打乱成交顺序后,逆向选择消失,净收益回到名义节省水平(高阶)。
14 min Chinese - 交割失败与强制买入:缩短结算周期把风险从信用桶挪到了操作桶
T+2 改 T+1 的官方理由是「减少风险敞口」,而这句话只在信用桶里成立。6 万笔配售的受控模拟给出与监管叙事错位的账本:信用敞口精确腰斩(0.842→0.421 bp),但操作成本从 0.653 涨到 1.664 bp,节省被吃掉 240.1%,净额 +0.590 bp——风险没消失,只是从「对手方违约」这个几乎不发生的桶,搬进「自己后台来不及」这个天天发生的桶。零摩擦安慰剂是决定性的:STP 设为 100% 后失败率与操作成本精确归零,T+1 立刻变成无争议的净省 0.421 bp——T+1 本身没错,错的是把它装在一个 98.8% 的后台上。分水岭是 STP 盈亏平衡点 99.59%,而跨境只有 94.5%:纯境内净额 +0.223 bp、纯跨境 +1.818 bp,同一条规则给出相反判决。反直觉的是境内失败率放大 6.09 倍、跨境只放大 1.97 倍。买入冲击只占 T+1 成本的 2.4%,失败期价格敞口占 76.8%。单笔 SD 21.73 bp 对均值差 0.65 bp,需 4430 笔才够 |t|=2(高阶)
22 min Chinese - 交叉冲击:你买 A 却把 B 推高了,逐股成本模型为什么两头都错
冲击成本模型几乎都是逐股独立算的——每只股票一条平方根曲线,加总就是篮子成本。但冲击矩阵 Λ 的非对角元不是零:受控模拟 60 只股票 3 因子结构(非对角均值是对角的 0.343 倍)量化两个方向相反的错误:单边买入篮子上,逐股模型只报出真实成本的 1/19.5(低估 94.9%);市场中性篮子上反而高估 62.6%——多空腿的冲击互相抵消,逐股模型看不见这份折扣。方向性扫描给出连续图景:市场因子暴露占比从 0 到 1,真实/逐股比值从 0.61 单调升到 18.17,穿越 1.0 的那一点就是逐股模型恰好正确的位置。唯一的免费午餐是内部轧差:两个组反向重叠 0.5 时先轧差再下单省 48.9% 成本,重叠 0.9 时省 90.1%。六项对抗式检验全过:把 Λ 强制对角化后真实/逐股恰好 1.00000000、5000 个随机篮子最小成本 0.511 为正(Λ 半正定,无往返套利)、12 个矩阵方向性比值 20.53±1.30 且中性比值 0.582±0.032 符号从不翻转。两个反直觉发现被完整保留:打乱非对角元后单边比值 19.57 几乎不变(一边倒的篮子只感受 Λ 的总和),而抽掉共同因子后比值塌到 2.02——真正的元凶是共同因子而非「非对角非零」;且 19.5 这个倍数随组合宽度单调放大,N=10 时 3.57、N=250 时 86.53,不可跨组合搬运(高阶)
17 min Chinese - 策略容量衰减:管多少钱之后,alpha 就被自己的冲击成本吃光了
毛 alpha 12% 和规模无关,净 alpha 却随 AUM 单调塌陷——受控模拟(500 只中小盘、中位 ADV 490 万美元、100 个持仓、平方根冲击)给出三条彼此差一个数量级的容量线:8x 换手下净 alpha 腰斩在 7.4 亿美元、归零在 29.6 亿;24x 换手腰斩点只剩 2700 万、归零 1.1 亿——同一个 alpha,换手率一改容量差 27 倍。真正先撞上的是硬约束:10% ADV 参与率上限在 4800 万美元就触发,那时净 alpha 还有 10.44%,账面上「毫发无伤」。四条扩容路线量化对比:降换手 8x→4x 把腰斩点推到 59.3 亿(8.0 倍)最有效,流动性倾斜前 30% 到 33.2 亿(4.5 倍)但换了 alpha 来源,扩到 300 个持仓 23.5 亿(3.2 倍)。冲击指数从 0.5 误设为 1.0,容量估计差 2.12 倍。五项对抗式检验全过:零冲击安慰剂下容量曲线跨四个数量级完全平直(0.00000000pp)、AUM 翻倍成本比 1.4142 精确等于理论 2^0.5、换手 4 倍成本比 8.0000 等于 4^1.5、12 个宇宙腰斩点 CV 仅 0.090。最容易犯的错是回测假设 252 天匀速执行——真实调仓挤在 1/8 的天数里,同样 2 亿美元成本从 3.17% 跳到 8.97%(2.83 倍)(中阶)
16 min Chinese - 股息捕获策略:除权日前后的价格调整能不能吃到
股票除息日理论上应下跌股息金额,但 4000 个模拟除息事件测出的开盘调整比例 α 只有 0.866(t=-21.4 拒绝完全调整),留下每事件 23.9bp 的缺口。问题是这块肉能不能吃到:对缴 20% 股息税的短线捕获者,含税捕获是 -20.6bp(t=-20.0),从第一笔交易起就是负的;免税口径 23.9bp 的缺口,单边盈亏平衡成本只有 12.0bp,容量墙在 2000 万元(500 万规模年化仅 +2.07%)。三个对照锁死机制:零税纯净市场 α 回到 1.006(t=0.94)、捕获归零 -0.76bp;伪除息日安慰剂 -0.30bp(t=-0.11);股息率与 α 的客群关系置换检验 p<0.001。横截面上股息率越高 α 越接近 1,Q5 组(股息率 4.0%)含税捕获 -57.4bp,高股息票恰恰亏得最狠。另附隐蔽 bug 复盘:用除息日收盘价测 α,α 虚高到 0.942、缺口被低估 58.9%。真正稳的反而是不碰除息日的「前置吃流」:39.8bp(t=7.06)
15 min Chinese
返回