halo 的技术博客

返回

核心结论:缩短结算周期不消灭风险,它把风险从一个几乎不发生的桶(对手方违约)搬进一个天天发生的桶(后台来不及)。 在 98.8% 的境内 STP、94.5% 的跨境 STP 下,T+1 相对 T+2 信用敞口精确腰斩(省 0.421 bp),操作成本却涨了 1.011 bp,净额 +0.590 bp——每省 1 分钱信用风险,要多付 2.4 分钱操作风险。而这个结论不是「T+1 是坏主意」,是「T+1 是一张对后台质量收费的账单」:把 STP 提到 99.59% 以上,同一套模型立刻翻转成 T+1 更省。

T+2 与 T+1 的五桶成本对比:替换成本 0.84→0.42 bp、保证金资金成本随窗口减半,但失败期间价格敞口从 0.62 涨到 1.60 bp、强制买入冲击从 0.03 涨到 0.05 bp,合计 1.49→2.08 bp

一、这篇文章要拆的那句话#

2024 年美国把股票结算周期从 T+2 改到 T+1,欧盟和英国在排队。官方理由几乎总是同一句:

缩短结算周期减少了对手方风险敞口。

这句话是对的。它甚至是可以精确证明的:如果对手方违约的概率是每天 λ,你的敞口存活 D 天,那么期望替换成本正比于 λ · D · E[|价格变动|],而价格变动本身按 sqrt(D) 缩放。窗口从 2 天砍到 1 天,这一项必然下降。

问题在于,这句话只覆盖了账本的一半

另一半是:结算周期同时是你的后台修复差错的时间预算。T+2 给你一整个额外营业日去核对账户、调头寸、借券、跨时区联系当地托管行。T+1 给你几个小时。同一个差错率,修复窗口砍半,未修复的差错就变成交割失败

而交割失败不是记账问题,它有现金成本:借券费、失败期间的价格敞口、以及升级成强制买入(mandatory buy-in)时被塞进一个流动性极差的时点执行。

所以真正的问题不是「T+1 好不好」,而是:信用桶省下来的,和操作桶多花的,谁大?

这个问题不能靠拍脑袋,因为两个桶的量级差得很远,而且方向相反。得算。

二、为什么必须用受控模拟,而不是真实数据#

用真实数据回答这个问题有个根本困难:你只能观测到一个世界。美国现在是 T+1,你看不到「同样这批交易在 T+2 下会怎样」。跨国比较又混杂了市场结构、参与者构成、监管差异——你分不清是周期的效果还是别的。

受控模拟绕开这个:同一批交易、同一个随机种子、只改结算周期这一个参数,跑两遍。差额里的每一 bp,成因由构造已知。

世界设定:

6 万笔配售,名义金额中位约 180 万美元(对数正态,sigma=0.85)
标的年化波动率 28%
30% 跨境(FX 腿 + 时区 + 当地代理行),70% 境内
境内 STP 直通率 98.8%,跨境 94.5%
差错修复率:T+2 下 93%,T+1 下 62%(跨境再乘 0.82)
plaintext

关键的一步是替换成本必须按违约概率折算,不能用全额市值变动。清算会员的年违约概率大约 40 bp,折到 1-2 个营业日是个很小的数——这恰恰是本文的要害。我第一版模型直接用了全额 MTM 变动当替换成本,结果信用桶算出 101 bp、完全淹没操作桶,T+1 看起来是压倒性胜利。那是个 bug,不是发现:

# 错的:把整个价格波动当成信用损失
replacement_bp = mtm_move * 1e4 * 0.5

# 对的:只有对手方真的违约才付这笔钱
PD_ANN = 0.0040                 # 清算会员年违约率 40bp
PD_DAY = PD_ANN / 252
LGD = 0.55                      # 违约损失率
replacement_bp = PD_DAY * cycle_days * LGD * mtm_move * 1e4 * 0.5
python

改完之后信用桶从 101 bp 塌到 0.84 bp,和操作桶进入同一个数量级——这才是真实的权衡所在。一个把信用风险算大 120 倍的模型,会让任何缩短周期的提案看起来都无懈可击。

三、五个桶的完整账本#

跑出来的账本:

成本桶T+2 (bp)T+1 (bp)变化
替换成本(对手方违约)0.00170.0006−0.0011
保证金资金成本0.8400.420−0.420
借券费0.0040.013+0.009
失败期间价格敞口0.6161.601+0.985
强制买入冲击0.0320.050+0.018
合计1.4942.084+0.590

信用桶省 0.421 bp,操作桶多花 1.011 bp,节省被吃掉 240.1%。

瀑布图:T+2 总成本 1.49 bp,信用敞口减半贡献 −0.42,失败率上升贡献 +0.99,买入冲击上升贡献 +0.02,T+1 总成本 2.08 bp

注意一个容易被忽略的细节:真正的信用节省几乎全部来自保证金资金成本(0.42 bp),而不是替换成本(0.001 bp)。替换成本小到可以忽略——因为清算会员一天违约的概率实在太低了。也就是说,「减少对手方风险」这个卖点,在数字上兑现的其实是「少占两天保证金的资金」,这是个融资故事,不是风险故事。

四、失败率:境内放大 6 倍,跨境只放大 2 倍#

境内/跨境/全样本的交割失败率:境内 0.08%→0.49%(×6.09),跨境 1.38%→2.71%(×1.97),全样本 0.47%→1.16%(×2.47)

全样本失败率从 0.47% 涨到 1.16%(2.47 倍),但拆开看是两个完全不同的故事:

  • 境内放大 6.09 倍(0.08% → 0.49%)
  • 跨境只放大 1.97 倍(1.38% → 2.71%)

这个方向很反直觉——不是应该跨境更脆弱吗?

跨境确实更脆弱,但它本来就已经很脆弱了。跨境的坏是存量的:STP 只有 94.5%,即便在 T+2 下也已经在大量失败。缩短窗口对它是雪上加霜,但相对增幅有限。境内的坏是新增的:98.8% 的 STP 在 T+2 下几乎不出事(0.08%),突然砍掉一个营业日的修复时间,那些原本能在第二天早上悄悄补掉的差错,一下子全变成了公开的交割失败。

运营上的含义:T+1 迁移的痛点不在你早就知道有问题的跨境链路上,而在你从来没操心过的境内链路上。前者你有专人盯,后者你的容量规划是按「反正第二天能补」建的。

另一个数字:平均失败持续天数从 2.98 天涨到 3.82 天。失败不仅变多,还变长——因为借券队列和差错处理队列在同一时间段拥堵,清不掉。

五、四项对抗式检验#

安慰剂 1:零摩擦世界(决定性检验)#

把 STP 设为 100%、去掉所有操作摩擦,只留信用桶。理论上此时 T+1 应该是无争议的胜利。

左:零摩擦安慰剂,T+2 总成本 0.842 bp、T+1 0.421 bp,失败率 0.0000、操作成本 0.0000 bp,T+1 净省 0.421 bp;右:零波动率世界,替换成本/失败期敞口/买入冲击三桶全部精确为 0.000,失败率仍是 1.16%

结果:失败率 0.000000,操作成本 0.000000 bp,T+1 净省 0.421 bp

这条检验的意义比它看起来大得多。它证明:本文的结论不是「T+1 是个坏主意」。在一个后台完美的世界里,T+1 严格更好,而且好得干干净净。全部的成本翻转都来自操作摩擦这一个来源。

换句话说,反对 T+1 的人和支持 T+1 的人可能在同一个模型里都是对的——他们只是在讨论 STP 数值不同的两家机构。

安慰剂 2:零波动率世界#

把 sigma 设为 0,同时把买入冲击设为 0。理论上所有价格相关的桶都应该精确归零。

结果:替换成本 0.000000、失败期敞口 0.000000、买入冲击 0.000000

同时失败率仍然是 1.16%——交割照样失败,只是失败不再花钱。这两条合起来证明:账本里没有加性常数,没有哪个桶在偷偷贡献一个与机制无关的固定数字。如果我的代码里有个写死的偏移量,这条检验会立刻暴露它。

检验 3:窗口缩放律#

替换成本里的价格变动项应该严格按 sqrt(D) 缩放。取 40 万样本单独测这一条腿:

  • 实测 T+1/T+2 比值:0.708530
  • 理论 sqrt(1/2)0.707107
  • 误差:1.42e-03(纯抽样噪声量级)

缩放律成立,说明信用桶的实现是对的。但要强调:缩放律成立不代表桶的标签对——它只证明「这个数按我以为的方式随窗口变化」,不证明「这个数就是对手方风险」。

检验 4:STP 盈亏平衡扫描#

这是全文最有实践价值的一条。

左图:不同 STP 下 T+2 与 T+1 的总成本曲线;右图:T+1−T+2 的差额,在 STP=99.59% 处穿零,左侧红区 T+1 更贵,右侧绿区 T+1 更省

STPT+2 (bp)T+1 (bp)差额
90.0%5.48013.703+8.223
95.0%3.2716.566+3.295
98.5%1.4372.272+0.835
99.0%1.2641.636+0.372
99.4%1.0891.290+0.200
99.59%0(盈亏平衡)
99.7%0.9730.855−0.118
100%0.8420.421−0.421

盈亏平衡点:STP = 99.59%。

这个数字应该被印在每一份 T+1 迁移方案的封面上。它把一个政策辩论转化成一个可测量的运营 KPI:你的直通处理率过没过 99.59%?过了,T+1 是净收益;没过,你是在给自己开一张账单。

而 99.59% 是个很高的门槛。90% 的 STP 下 T+1 要多花 8.22 bp,而 99.4% 时只多花 0.20 bp——同一条规则,代价差 41 倍。这个非线性是本文最该被记住的一件事:STP 从 99.4% 掉到 95%,T+1 的总成本涨 5.09 倍,而 T+1 相对 T+2 的溢价涨 16.4 倍。后台质量不是一个「差不多就行」的维度。

六、同一条规则,两个相反的判决#

把组合拆成纯境内和纯跨境两个极端:

  • 纯境内组合:净额 +0.223 bp(轻微变贵)
  • 纯跨境组合:净额 +1.818 bp(明显变贵,是境内的 8.1 倍)

同一条监管规则,对两类机构的成本影响差 8 倍。一家纯做美国境内自营的机构几乎感觉不到 T+1,一家跑全球配售的资管会实打实地多付钱。这不是规则设计得不好,这是任何统一规则的必然结果——但它意味着「行业平均影响」这个数字对任何具体机构都没有指导意义。

再看强制买入冲击的扫描:

买入冲击从 0 bp 扫到 120 bp,T+1−T+2 净额从 +0.686 bp 缓慢升到 +0.747 bp,全程只差 0.06 bp

这条曲线几乎是平的:买入冲击从 0 bp 涨到 120 bp(现实中极端值),净额只从 +0.686 变到 +0.747,总共差 0.06 bp。

这个结果推翻了一个常见叙事。CSDR 强制买入制度在欧洲引起过巨大争议,业界的核心论点是「买入执行成本太高」。但在这个模型里,买入冲击根本不是主要成本——它只占 T+1 总成本的 2.4%。真正的大头是「失败期间价格敞口」,占 76.8%

也就是说:失败本身就是成本,不需要升级成买入才产生成本。你持有一个本该已经交割掉的敞口,市场在动,这就是钱。盯着买入罚则去优化,是在优化账单上最小的那一项。

七、成本分布:98.86% 的交易完全没事#

这是运营视角最重要的一张图(数字而非图表):

指标T+2T+1
「安静」交易占比99.55%98.86%
99 分位成本0.85 bp30.65 bp
单笔最大成本696.7 bp

平均值在这里是有误导性的。0.59 bp 的均值差听起来微不足道,但它是这样构成的:98.86% 的交易一分钱额外成本都没有,剩下 1.14% 里有人付了 30 bp、极端的付了 696 bp。

这种分布形态有两个实际后果:

  1. 日常监控看不到问题。你的月度 TCA 报表显示成本上升 0.6 bp,淹没在噪声里。
  2. 事故是集中的。当它发生时,是在某一天、某几笔大单上,金额足够大到需要向上汇报。

样本量红线:单笔成本标准差 21.73 bp,而 T+1 与 T+2 的单笔均值差只有 0.65 bp。要在自己的账本上把这个差异测到 |t|=2,需要 4430 笔同类配售。一家中型资管一年可能都跑不到这个量——这意味着大多数机构在统计上永远无法从自己的数据里验证 T+1 到底让他们多花了钱还是省了钱

12 个不同种子的稳定性检验:净额均值 +0.586 bp,CV 仅 0.154,区间 [+0.405, +0.692]。结论方向在所有宇宙里一致。

八、陷阱与局限(诚实版)#

1. 修复率 0.93 / 0.62 是我设的,不是测的

这两个数字驱动了全部结论。它们是基于「T+2 多给一整个营业日」的合理推断,但没有公开数据能校准。如果真实的 T+1 修复率是 0.80 而不是 0.62,盈亏平衡点会显著下移,结论可能翻转。这是本文最大的不确定性来源,也是任何机构做自己评估时第一个该替换成内部数据的参数。

2. 模型里没有学习曲线

现实中 T+1 迁移后,机构会投资自动化、改流程、加人手。本文比较的是「同样的后台,两个周期」的瞬时对比,不是三年后的稳态。长期看 STP 会被推高到盈亏平衡点以上——但那笔 IT 投资的成本,本文完全没有计入。

3. 保证金资金成本 0.42 bp/天 是个粗糙的代理

真实的保证金要求取决于组合净额、CCP 模型、会员分层。用一个线性的每日费率是简化。这一项占了全部信用节省的 99.7%,所以它的误设会直接按比例传导到结论。

4. 没有建模「失败会传染」

现实中 A 交割失败会导致 B 无法交割(fail chains)。本文的失败是独立的。这会低估 T+1 的操作成本——真实的链式失败在结算周期缩短时会更容易形成。

5. 未建模日内时点

T+1 的真正痛点之一是时区:亚洲投资者买美股,T+1 意味着确认窗口落在当地深夜。本文用「跨境修复率乘 0.82」笼统地代理了这件事,没有真的建模时钟。

九、实践 Checklist#

  • 先测自己的 STP,再讨论周期。盈亏平衡点 99.59% 是个可以直接对标的数字。低于它,T+1 对你是净成本,而这个成本可以量化成预算去申请自动化投资
  • 境内链路优先排查,不是跨境。跨境的失败你早就知道,境内失败率的相对放大(6.09 倍)才是没人做过容量规划的地方
  • 别把优化重点放在买入罚则上。买入冲击只占 T+1 增量成本的 2.4%,失败期间的价格敞口占 76.8%——缩短失败持续时间比降低买入成本值钱 30 倍
  • 监控 99 分位,不是均值。均值 0.59 bp 淹没在噪声里,99 分位从 0.85 跳到 30.65 bp 才是真实的风险画像
  • 别指望用自己的数据验证。单笔 SD 21.73 bp 对均值差 0.65 bp,需要 4430 笔。用行业数据或受控模拟,不要用 200 笔的内部样本得出结论
  • 区分「省资金」和「降风险」。信用节省的 99.7% 来自保证金占款减少,替换成本的节省只有 0.001 bp——如果你的理由是「降低对手方风险」,数字不支持你;如果理由是「释放保证金」,数字支持你

本文所有数字基于 SEED=20260806 的受控模拟,真实市场参数(尤其是差错修复率)可能存在量级差异。

交割失败与强制买入:缩短结算周期把风险从信用桶挪到了操作桶
https://blog.halo26812.eu.org/blog/settlement-fails-t1-buyin
Author halo
Published at 2026年8月6日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨