第 27 章/ 45
套息、防御与低波动(Carry / Defensive / Low Volatility)
主线:套息(carry)是“市场条件不变时一个头寸自己会赚多少”,它可以事前机械地算出来;低波动与低 beta 则提出另一组研究问题:相对 CAPM 基准,证券市场线是否更平坦?按 beta 缩放后,收益差还剩多少,融资成本与约束又会怎样改变比较?前者从现金流定义出发,后者需要经验检验;两者都要检查杠杆与压力期损失,不能只看平均收益。
先修:第10章(金融市场:期货、外汇、债券的现金流)、第18章(波动率)、第23章(截面研究)。完成后你能:从持有现金流推出期货、外汇远期、零息债、商品曲线的 carry,并说明哪些部分是“价格不变时的收益”、哪些是“价格变动”;解释为什么连续期货价格拼接不等于可交易盈亏;写出 beta 排序、杠杆化的低 beta 组合(betting against beta, BAB)及其权重、杠杆与融资成本;说明收缩估计怎样决定 BAB 是否真的对市场中性;在 10 个行业组合上报告低 beta 与 BAB 的结果,并把负结果、成本与崩溃一起报告。
1. 本章目标
读者应能回答:高利率货币的远期合约“赚的是利息差”还是“赚的是汇率不变”;商品期货的展期收益到底从哪里来;为什么一个 carry 组合平均的 carry 按同资本口径的高减低构造为非负,实际收益却可能为负;低 beta 组合为什么需要杠杆才能与市场比较,而杠杆的融资成本和约束又怎样改变结论。
写出期货的 carry 定义 C t = ( S t − F t ) / X t C_t=(S_t-F_t)/X_t C t = ( S t − F t ) / X t (S t S_t S t 现货价,F t F_t F t 期货价,X t X_t X t 抵押资本),并由它推出外汇远期、零息债与商品期货曲线的 carry,写清每个公式的报价方向、频率与假设。
把一个头寸的收益分解成 r t + 1 = C t + Δ S t + 1 / X t r_{t+1}=C_t+\Delta S_{t+1}/X_t r t + 1 = C t + Δ S t + 1 / X t (全额抵押 X t = F t X_t=F_t X t = F t 时才用 F t F_t F t 作分母),说明“价格不变”的假设在哪里是反事实的,以及价格变动里“被收回”的部分(take-back)如何决定 carry 的预测力。
说明连续期货价格(把不同到期合约的价格首尾相接)与可交易的单合约收益的区别,用换月价差把两者的差算出来,并在构造世界里验证 可交易 = carry + 价格变动 \text{可交易}=\text{carry}+\text{价格变动} 可交易 = carry + 价格变动 。
区分低波动(low volatility)、低 beta(low beta)与防御(defensive);用 σ i 2 = β i 2 σ m 2 + σ ε , i 2 \sigma_i^2=\beta_i^2\sigma_m^2+\sigma_{\varepsilon,i}^2 σ i 2 = β i 2 σ m 2 + σ ε , i 2 说明低 beta 不等于低波动。
写出 BAB 的权重、杠杆与收益式,证明估计 beta 下的对市场中性,区分无噪声与有噪声模型:在第6.9节的排序、正分母和条件期望假设下推导真实暴露的符号;噪声模型中最优收缩给出条件中性,无条件期望另需可积性。
在冻结的 French 10 行业月度数据上报告:低 beta 一半与高 beta 一半的平均超额收益与 alpha、BAB 的收益、样本市场回归 beta 估计、分期、成本敏感度与最差月份;并说明这是 10 个价值加权行业组合,不是个股,也不是可交易的成交序列。
在一个已知数据生成过程的构造世界里复现“carry 组合平均 carry 为正,但收益偏负偏度、回撤深,且被收回的部分很大”,用 200 个新种子说明单一路径能证明什么、不能证明什么。
完成标准:任何 carry 或低风险信号都附一张字段表,写明报价方向、期限、signal_time、融资与抵押假设、换月规则,以及哪些结论在没有真实远期、期货曲线与融资利率数据时不能写。
2. 为什么 Quant 需要它
价值、动量、质量回答“买什么”;本章继续问“这笔收益从哪里来,比较时承担了多少市场暴露”。外汇远期通常只需保证金而非支付合约全额本金,远期升贴水反映两国利率差,但汇率变动可能抵消其 carry。这里的 carry 是给定报价与资本口径下的反事实计算,不保证实际平均收益。
低风险部分从 CAPM 的基准 E [ r i ] = β i E [ r m ] E[r_i]=\beta_iE[r_m] E [ r i ] = β i E [ r m ] 出发:若预期超额收益正比于 beta,单位 beta 的预期收益应相同。证券市场线在数据中是否更平坦,是需要检验的问题;只有在相应关系成立时,低 beta 组合按 beta 缩放后的收益比较才可能有利。将两组都缩放到相同估计市场暴露,再报告收益、风险与估计误差,才能判断差异。杠杆还要融资,利差、保证金及被迫平仓可能改变结论,所以融资约束是研究内容,不能先假定低风险组合一定更赚钱。
三个常见错误解释了为什么要把它们写精确。第一,把“高利率”当成“高 carry”:报价方向一反,符号就反。第二,把连续期货价格当成交易盈亏:拼接价格在换月日有一个任何人都赚不到的跳跃。第三,把“杠杆后的低 beta”当成“市场中性”:如果用来缩放的 beta 是向 1 收缩过的,给定模型下的真实暴露未必为零(第6.9节);第11节历史样本对市场回归的 beta 估计约为 − 0.2 -0.2 − 0.2 ,不能直接当作已知真实 beta。这些错误都不会报错。
本章的逻辑链:先从持有现金流推出 carry(6.1),分资产类别写出外汇(6.2)、债券(6.3)、商品(6.4)的具体式;再把收益拆成 carry 与价格变动(6.5),处理换月与拼接(6.6)与组合 carry(6.7);然后转到低风险:beta 与波动率的分解(6.8)、BAB 的构造与中性(6.9)、杠杆、融资与崩溃(6.10);最后在构造世界(10 节)与 10 个行业组合(11 节)上报告。
3. 直觉
你借入美元买入日元存款,日元存款的利率低、美元利率高,你每年白付利息差。反过来,借日元存美元,利息差归你,这就是套息交易(carry trade)。它赚钱的条件是:汇率没有朝对你不利的方向动够多。如果高息货币贬值恰好等于利息差(无抛补利率平价,uncovered interest parity, UIP 成立),平均收益为零。实证上的“套息溢价”意味着 UIP 平均失败,但并不意味着任何一年都赚。
商品期货里同样的想法:近月合约 100,远月合约 98(现货升水,backwardation),你买入远月合约,如果曲线不动,它会随着到期逐步“滑向”近月价格,你赚到 2/98。反过来,近月 100、远月 101(期货升水,contango),买入远月合约在曲线不动时每月亏 1 / 101 1/101 1/101 。这笔钱不是价格涨跌,是曲线形状。连续合约价格把近月和远月首尾相连,在换月日会看到一个价格“跳升”,这个跳升不是任何人的收益。
低波动与低 beta 的直觉是:若风险溢价与 beta 成比例,则每单位 beta 的收益相同;若证券市场线比理论更平,则低 beta 资产每单位 beta 的收益更高,高 beta 资产更低。把低 beta 资产加杠杆到 beta=1,就得到比市场更高的预期收益,代价是杠杆。要把杠杆的约束、成本和风险写进研究,否则“更高的夏普比率”只是账面上的。
简化的边界:本章的真实案例只有 10 个行业组合(已修订的价值加权月收益),没有外汇远期、期货曲线或融资利率的真实数据;carry 的数值例子是手算与构造世界。
3.1 先画一张现金流账,再给收益命名
为什么同一个远期价差会报出不同的收益率?因为合约盈亏以货币计量,收益率还要指定投入资本。抵押资本(collateral capital) X X X 是分母;合约名义金额(notional) 是价格乘合约单位数,二者不是同一个对象。下面固定一份合约、单位乘数为 1。期货与远期的实际结算/保证金机制不同;此处沿用本章一期结算、抵押账户按无风险利率计息的简化账,不模拟每日追缴。
时点
此时已知
账户动作
尚未知道什么
信号/建仓 t t t
现货 S t S_t S t 、到期远期 F t F_t F t 、资本 X t X_t X t 、一期利率
抵押账户放入 X t X_t X t ,订约做多一单位标的
未来现货、保证金变化与成交冲击
反事实计算
仅用上述当前报价
假设到期现货仍为 S t S_t S t ,算 ( S t − F t ) / X t (S_t-F_t)/X_t ( S t − F t ) / X t
这是 carry,不是未来观测
到期 t + 1 t+1 t + 1
现在才知道 S t + 1 S_{t+1} S t + 1
抵押账户返还 X t ( 1 + r f ) X_t(1+r^f) X t ( 1 + r f ) ,合约盈亏 S t + 1 − F t S_{t+1}-F_t S t + 1 − F t
先分别记两笔,再除以 X t X_t X t
完整例题:资本改变收益率
设 S t = 102 , F t = 100 , X t = 50 , r f = 1 % S_t=102,F_t=100,X_t=50,r^f=1\% S t = 102 , F t = 100 , X t = 50 , r f = 1% (一期小数)。反事实合约赚 2,carry 是 2 / 50 = 4 % 2/50=4\% 2/50 = 4% 。若真实到期现货 99,合约亏 1、抵押账户赚 0.5,期末权益 50.5 − 1 = 49.5 50.5-1=49.5 50.5 − 1 = 49.5 ;总收益 − 1 % -1\% − 1% ,超额收益 − 2 % -2\% − 2% 。分解 4 % + ( 99 − 102 ) / 50 = − 2 % 4\%+(99-102)/50=-2\% 4% + ( 99 − 102 ) /50 = − 2% 。同一份合约若配 X = 100 X=100 X = 100 ,carry 降至 2 % 2\% 2% 、超额收益 − 1 % -1\% − 1% ,抵押利息 1 抵消合约亏损,总收益为 0。增加资本改变收益率与杠杆,不改变那一份合约的盈亏。
第8节外汇例取 X = F X=F X = F ,所以 C = S / F − 1 C=S/F-1 C = S / F − 1 ;它不是“零成本合约有无穷收益”。债券第6.3节则先算现金债的持有期总收益 ,再减同期融资基准。阅读不同资产的 carry 时,先问“现金流是什么、分母是什么、扣了什么”,再比较数值。真实融资利差、追缴及借券限制需要额外输入,不能藏进无风险抵押假设。
4. 数学基础
记号。 以一期(一个月)为单位。S t S_t S t :时点 t t t 的现货价格,单位是“本币/单位标的”(外汇里是本币每单位外币);F t F_t F t :到期日恰为 t + 1 t+1 t + 1 的期货(远期)价格,同单位;X t X_t X t :配置给一份合约的资本(抵押),至少等于保证金;r f r^f r f :该期的无风险利率(小数,当期),抵押资本赚取它。所有价格为正。频率:月;signal_time 是月末 t t t (此时 S t , F t S_t,F_t S t , F t 已知);收益区间是 t t t 到 t + 1 t+1 t + 1 。
期货收益。 配置 X t X_t X t 并持有合约一期,期末价值是 X t ( 1 + r f ) + F t + 1 − F t X_t(1+r^f)+F_{t+1}-F_t X t ( 1 + r f ) + F t + 1 − F t ,所以每单位资本的总收益与超额收益是
r t + 1 tot = F t + 1 − F t X t + r f , r t + 1 = F t + 1 − F t X t .
r^{\text{tot}}_{t+1}=\frac{F_{t+1}-F_t}{X_t}+r^f,\qquad r_{t+1}=\frac{F_{t+1}-F_t}{X_t}.
r t + 1 tot = X t F t + 1 − F t + r f , r t + 1 = X t F t + 1 − F t . 到期收敛。 合约到期时价格等于现货:F t + 1 = S t + 1 F_{t+1}=S_{t+1} F t + 1 = S t + 1 。
carry。 令现货价格不变 S t + 1 = S t S_{t+1}=S_t S t + 1 = S t ,则 F t + 1 = S t F_{t+1}=S_t F t + 1 = S t ,
C t = S t − F t X t , X t = F t 时 C t = S t F t − 1.
C_t=\frac{S_t-F_t}{X_t},\qquad X_t=F_t\ \text{时}\ C_t=\frac{S_t}{F_t}-1 .
C t = X t S t − F t , X t = F t 时 C t = F t S t − 1. 收益分解。 S t S_t S t 加减一次得到恒等式
r t + 1 = S t + 1 − F t X t = S t − F t X t ⏟ C t + S t + 1 − S t X t ⏟ 价格变动
r_{t+1}=\frac{S_{t+1}-F_t}{X_t}=\underbrace{\frac{S_t-F_t}{X_t}}_{C_t}+\underbrace{\frac{S_{t+1}-S_t}{X_t}}_{\text{价格变动}}
r t + 1 = X t S t + 1 − F t = C t X t S t − F t + 价格变动 X t S t + 1 − S t (X t = F t X_t=F_t X t = F t 时分母相同)。以上是 Koijen、Moskowitz、Pedersen 与 Vrugt 的定义(NBER 工作稿 w19325,2013 年 8 月版,式 (2)–(6))。
beta 与波动率。 资产超额收益 r i r_i r i 对市场超额收益 r m r_m r m 回归:r i = α i + β i r m + ε i r_i=\alpha_i+\beta_ir_m+\varepsilon_i r i = α i + β i r m + ε i ,β i = C o v ( r i , r m ) / V a r ( r m ) = ρ i m σ i / σ m \beta_i=\mathrm{Cov}(r_i,r_m)/\mathrm{Var}(r_m)=\rho_{im}\sigma_i/\sigma_m β i = Cov ( r i , r m ) / Var ( r m ) = ρ im σ i / σ m ,这里假设有限二阶矩、市场方差严格为正,且 ε i \varepsilon_i ε i 是总体线性投影残差,与市场正交;于是 σ i 2 = β i 2 σ m 2 + σ ε , i 2 \sigma_i^2=\beta_i^2\sigma_m^2+\sigma_{\varepsilon,i}^2 σ i 2 = β i 2 σ m 2 + σ ε , i 2 。任意指定的误差项不自动满足这个分解。
BAB 权重。 某月末 n n n 个证券的 beta 估计向量 β ^ \hat\beta β ^ ,z i = rank ( β ^ i ) z_i=\operatorname{rank}(\hat\beta_i) z i = rank ( β ^ i ) (并列取平均名次),z ˉ = 1 n ∑ z i \bar z=\frac1n\sum z_i z ˉ = n 1 ∑ z i ,k = 2 / ∑ i ∣ z i − z ˉ ∣ k=2/\sum_i|z_i-\bar z| k = 2/ ∑ i ∣ z i − z ˉ ∣ ,则
w H = k ( z − z ˉ ) + , w L = k ( z − z ˉ ) − , 1 ⊤ w H = 1 ⊤ w L = 1 ,
w_H=k\,(z-\bar z)^+,\qquad w_L=k\,(z-\bar z)^-,\qquad \mathbf 1^\top w_H=\mathbf 1^\top w_L=1 ,
w H = k ( z − z ˉ ) + , w L = k ( z − z ˉ ) − , 1 ⊤ w H = 1 ⊤ w L = 1 , x + = max ( x , 0 ) x^+=\max(x,0) x + = max ( x , 0 ) ,x − = max ( − x , 0 ) x^-=\max(-x,0) x − = max ( − x , 0 ) 。低 beta 腿 w L w_L w L 在 beta 最低的证券上权重最大。(Frazzini 与 Pedersen 的草稿,2013-05-10,式 (16)。)
BAB 收益。 β ^ L = w L ⊤ β ^ \hat\beta_L=w_L^\top\hat\beta β ^ L = w L ⊤ β ^ ,β ^ H = w H ⊤ β ^ \hat\beta_H=w_H^\top\hat\beta β ^ H = w H ⊤ β ^ ,下一期超额收益 r e r^e r e ,r L = w L ⊤ r e r_L=w_L^\top r^e r L = w L ⊤ r e ,r H = w H ⊤ r e r_H=w_H^\top r^e r H = w H ⊤ r e :
r B A B = 1 β ^ L r L − 1 β ^ H r H .
r^{\mathrm{BAB}}=\frac1{\hat\beta_L}\,r_L-\frac1{\hat\beta_H}\,r_H .
r BAB = β ^ L 1 r L − β ^ H 1 r H . (式 (17),草稿里写成 r − r f r-r^f r − r f 的形式,等价于超额收益。)两条腿的估计beta必须严格为正,所有beta全并列时秩权重无定义。
频率约定:月频;beta 用截至月末 s s s 的数据估计;BAB 收益是 s + 1 s+1 s + 1 月。
5. 正式定义
套息(carry)。 一个头寸在“市场条件不变”下的收益;对期货是 C t = ( S t − F t ) / X t C_t=(S_t-F_t)/X_t C t = ( S t − F t ) / X t 。它是预期收益的一个可事前计算的成分,不等于预期收益。
外汇套息交易(currency carry trade)。 做多高 carry 货币、做空低 carry 货币的组合;carry 对远期是利差 ( r ∗ − r ) / ( 1 + r ) (r^*-r)/(1+r) ( r ∗ − r ) / ( 1 + r ) 。
远期升贴水(forward premium)。 F / S − 1 F/S-1 F / S − 1 :远期价格相对现货的比例,正值为远期升水。
抛补利率平价(covered interest parity, CIP)。 简单利率下 F = S ( 1 + r ) / ( 1 + r ∗ ) F=S(1+r)/(1+r^*) F = S ( 1 + r ) / ( 1 + r ∗ ) ,S S S 为“本币/外币”,r r r 为本币利率,r ∗ r^* r ∗ 为外币利率。
期限结构与曲线斜率(term structure, curve slope)。 同一标的不同到期合约的价格或收益率排成的曲线;本章的曲线斜率 g = ( S − F ) / S g=(S-F)/S g = ( S − F ) / S 在构造世界里度量商品曲线形状。
现货升水(backwardation)与期货升水(contango)。 近月高于远月(曲线向下倾斜,持有远月 carry 为正)称现货升水;远月高于近月称期货升水(carry 为负)。
便利收益(convenience yield)。 持有实物商品(而不是期货)带来的、扣除仓储成本后的净收益,记 δ \delta δ 。
展期收益(roll yield)。 本章指:曲线不变时,持有一个合约并随到期滑动所获得的收益,就是 carry 在期货曲线上的体现;它是价格曲线形状带来的收益,与现货价格涨跌无关。
滑降(roll-down)。 债券随时间缩短到期、沿不变的收益率曲线滑向较低收益率而产生的价格变化。
连续合约(continuous contract)。 把不同到期合约的价格首尾相接得到的价格序列;换月日含有两个合约的价差,不是收益。
组合 carry。 C p = ∑ i w i C i C^{\mathrm p}=\sum_iw_iC_i C p = ∑ i w i C i (KMPV 式 (24))。
低波动(low volatility)。 按(事前)波动率排序,买入低波动证券。低 beta(low beta)。 按(事前)beta 排序,买入低 beta 证券。两者不同:σ 2 = β 2 σ m 2 + σ ε 2 \sigma^2=\beta^2\sigma_m^2+\sigma_\varepsilon^2 σ 2 = β 2 σ m 2 + σ ε 2 ,低 beta 可能有高特质波动。
防御(defensive)。 本章的操作性定义:在市场下跌的月份损失明显小于市场的资产或组合,通常(但不必然)是低 beta、低波动或高质量;用下跌月份的条件均值与条件 beta 度量,不是一个标准分类。
betting against beta(BAB)。 做多杠杆到 beta 为 1 的低 beta 腿、做空去杠杆到 beta 为 1 的高 beta 腿的自融资组合。
杠杆约束与融资风险(funding constraint, funding risk)。 投资者借钱的上限、保证金要求与融资成本;约束收紧时被迫去杠杆,使杠杆化头寸同时亏损。Frazzini 与 Pedersen 的模型据此预测高 beta 资产被抬价、BAB 有正收益且在融资收紧时收益低(草稿摘要);本章不检验该模型。
崩溃(crash)。 本章指组合收益分布的左尾:大额亏损集中出现在少数月份,由共同冲击而不是分散的特质冲击造成。
6. 推导
6.1 从持有现金流到 carry
一份期货合约不需要付出全额本金,所以配置一份资本 X t X_t X t (保证金之上的抵押,比如买短期国债),期末拿回 X t ( 1 + r f ) X_t(1+r^f) X t ( 1 + r f ) 加上合约的盈亏 F t + 1 − F t F_{t+1}-F_t F t + 1 − F t 。每单位资本的总收益 = r f + ( F t + 1 − F t ) / X t =r^f+(F_{t+1}-F_t)/X_t = r f + ( F t + 1 − F t ) / X t ,减去无风险利率得超额收益 ( F t + 1 − F t ) / X t (F_{t+1}-F_t)/X_t ( F t + 1 − F t ) / X t (第 4 节)。到期收敛 F t + 1 = S t + 1 F_{t+1}=S_{t+1} F t + 1 = S t + 1 把合约的收益与现货联系起来:r t + 1 = ( S t + 1 − F t ) / X t r_{t+1}=(S_{t+1}-F_t)/X_t r t + 1 = ( S t + 1 − F t ) / X t 。令 S t + 1 = S t S_{t+1}=S_t S t + 1 = S t 得 C t = ( S t − F t ) / X t C_t=(S_t-F_t)/X_t C t = ( S t − F t ) / X t 。读法:期货价格低于现货(F < S F<S F < S )时 carry 为正;高于现货时为负。X = F X=F X = F 称为全额抵押,此时 C = S / F − 1 C=S/F-1 C = S / F − 1 。
这是一期、合约恰在期末到期的情形。对更长到期的合约,“价格不变”要换成“曲线不变”(6.3、6.4)。
6.2 外汇远期:利差与报价方向
报价 S S S 为“本币/外币”,本币利率 r r r 、外币利率 r ∗ r^* r ∗ (同一期的简单利率)。CIP:F = S ( 1 + r ) / ( 1 + r ∗ ) F=S(1+r)/(1+r^*) F = S ( 1 + r ) / ( 1 + r ∗ ) 。做多外币远期(以 F F F 买入 1 单位外币,期末交割)的 carry
C = S − F F = S F − 1 = 1 + r ∗ 1 + r − 1 = r ∗ − r 1 + r .
C=\frac{S-F}{F}=\frac SF-1=\frac{1+r^*}{1+r}-1=\frac{r^*-r}{1+r}.
C = F S − F = F S − 1 = 1 + r 1 + r ∗ − 1 = 1 + r r ∗ − r . 外币利率更高(r ∗ > r r^*>r r ∗ > r )则 F < S F<S F < S 、C > 0 C>0 C > 0 。含义:远期是零成本的合约,收益是超额收益,carry 是以 X = F X=F X = F 归一的利差。KMPV 式 (7) 与脚注6确实使用本币利率倒数作其归一化说明;不能把该归一化直接解释为固定终值1单位外币的同名义复制:后者今天须存入 1 / ( 1 + r ∗ ) 1/(1+r^*) 1/ ( 1 + r ∗ ) 单位外币,花费 S / ( 1 + r ∗ ) = F / ( 1 + r ) S/(1+r^*)=F/(1+r) S / ( 1 + r ∗ ) = F / ( 1 + r ) 单位本币。复制的金额与报收益率所用的分母要分开。
分母明确后的存款比较。 把 1 单位本币换成外币存一期,期末兑回本币:S T S ( 1 + r ∗ ) \frac{S_{T}}{S}(1+r^*) S S T ( 1 + r ∗ ) ;留在本币存款:1 + r 1+r 1 + r 。因为 ( 1 + r ∗ ) / S = ( 1 + r ) / F (1+r^*)/S=(1+r)/F ( 1 + r ∗ ) / S = ( 1 + r ) / F ,超额收益 [ S T S ( 1 + r ∗ ) − ( 1 + r ) ] / ( 1 + r ) = S T − F F \bigl[\frac{S_T}{S}(1+r^*)-(1+r)\bigr]/(1+r)=\frac{S_T-F}{F} [ S S T ( 1 + r ∗ ) − ( 1 + r ) ] / ( 1 + r ) = F S T − F :这与 X = F X=F X = F 远期的超额收益代数相等(8.1节),因为这里除以本币存款终值 1 + r 1+r 1 + r ,不是初始本金1。外币存款的总收益为 S T ( 1 + r ∗ ) / S − 1 S_T(1+r^*)/S-1 S T ( 1 + r ∗ ) / S − 1 ,算术超额为该总收益减 r r r ;二者都不能直接与远期总收益混称。这里要分开两个场景。若汇率不变 S T = S S_T=S S T = S ,外币存款在初始本币资本1上的算术超额是 r ∗ − r r^*-r r ∗ − r ;除以本币存款终值 1 + r 1+r 1 + r ,相对超额为 ( r ∗ − r ) / ( 1 + r ) (r^*-r)/(1+r) ( r ∗ − r ) / ( 1 + r ) ,等于 X = F X=F X = F 时的远期 carry。若 S T = F S_T=F S T = F ,则是另一种场景:外币恰好贬值 1 − ( 1 + r ) / ( 1 + r ∗ ) 1-(1+r)/(1+r^*) 1 − ( 1 + r ) / ( 1 + r ∗ ) ,抵消利率优势,外币存款相对本币存款的超额为零。这里的“保本”是相对本币存款基准,不是相对初始本金;两种场景不能混称。
报价方向。 用倒数报价 S ′ = 1 / S S'=1/S S ′ = 1/ S 、F ′ = 1 / F F'=1/F F ′ = 1/ F ,套用同一公式 ( S ′ − F ′ ) / F ′ (S'-F')/F' ( S ′ − F ′ ) / F ′ 得到 F / S − 1 F/S-1 F / S − 1 (符号相反)。所以必须固定:公式里的 S , F S,F S , F 是“本币/外币”,carry 是做多外币的 carry(8.1 节的反例)。
UIP 与套息交易。 无抛补利率平价说 E [ S T ] = F E[S_T]=F E [ S T ] = F ,即外币的预期贬值恰好抵消利差,此时做多远期的平均收益为零。套息交易的盈利来自 E [ S T ] > F E[S_T]>F E [ S T ] > F ,也就是 UIP 平均失败。这是一个经验问题;本章没有真实外汇数据,只在构造世界里放入一个已知的“被收回”比例(6.5、10 节)。
6.3 零息债:收益率、滑降与不变曲线
设年化复利的零息收益率曲线 y ( τ ) y(\tau) y ( τ ) (τ \tau τ 年),面值 1 的零息债价格 P T = ( 1 + y T ) − T P_T=(1+y_T)^{-T} P T = ( 1 + y T ) − T ,y T = y ( T ) y_T=y(T) y T = y ( T ) 。持有 h h h 年(h < T h<T h < T ),曲线不变,债券变成 ( T − h ) (T-h) ( T − h ) 年的债券,价格 ( 1 + y T − h ) − ( T − h ) (1+y_{T-h})^{-(T-h)} ( 1 + y T − h ) − ( T − h ) 。总收益
1 + c a r r y = ( 1 + y T ) T ( 1 + y T − h ) T − h = ( 1 + y T ) h ⏟ 1 + 收益率部分 × ( 1 + y T 1 + y T − h ) T − h ⏟ 1 + 滑降部分 ,
1+\mathrm{carry}=\frac{(1+y_T)^T}{(1+y_{T-h})^{T-h}}
=\underbrace{(1+y_T)^h}_{1+\text{收益率部分}}\times\underbrace{\Bigl(\frac{1+y_T}{1+y_{T-h}}\Bigr)^{T-h}}_{1+\text{滑降部分}} ,
1 + carry = ( 1 + y T − h ) T − h ( 1 + y T ) T = 1 + 收益率部分 ( 1 + y T ) h × 1 + 滑降部分 ( 1 + y T − h 1 + y T ) T − h , 这里用了 ( 1 + y T ) T = ( 1 + y T ) h ( 1 + y T ) T − h (1+y_T)^T=(1+y_T)^h(1+y_T)^{T-h} ( 1 + y T ) T = ( 1 + y T ) h ( 1 + y T ) T − h 。平坦曲线 y T − h = y T y_{T-h}=y_T y T − h = y T 时滑降部分为 1;向上倾斜(y T − h < y T y_{T-h}<y_T y T − h < y T )时滑降为正:债券向短端滑落、收益率下降、价格上升。超额收益 = = = 总收益 − [ ( 1 + y h ) h − 1 ] -[(1+y_h)^h-1] − [( 1 + y h ) h − 1 ] (用 h h h 年短期利率融资)。KMPV(式 (13)–(15))对息票债写出同样的结构:carry 是收益率加滑降,扣短期利率后的收益率部分是期限利差;用修正久期可近似为
滑降 ≈ − D m o d ( y T − h − y T ) ,
\text{滑降}\approx-D_{\mathrm{mod}}\,(y_{T-h}-y_T),
滑降 ≈ − D mod ( y T − h − y T ) , 其中 D m o d D_{\mathrm{mod}} D mod 取滑降后的债券(T − h T-h T − h 年零息债,( T − h ) / ( 1 + y ) (T-h)/(1+y) ( T − h ) / ( 1 + y ) )。8.2 节的数值:用 T T T 年的久期去乘会高估滑降。
假设:零息、年复利、收益率对到期线性插值、无信用与流动性溢价、“曲线不变”是一个反事实(真实曲线每天在变)。
6.4 商品:便利收益与曲线斜率
持有实物商品的现金流视角:买入现货 S S S 并持有一期,收益是 δ \delta δ (净便利收益)减去融资成本 r r r (借钱买现货)。无套利给出 F = S ( 1 + r − δ ) F=S(1+r-\delta) F = S ( 1 + r − δ ) (KMPV 式 (9) 以下)。令现货不变,做多期货的 carry
C = S − F F = δ − r 1 + r − δ .
C=\frac{S-F}{F}=\frac{\delta-r}{1+r-\delta}.
C = F S − F = 1 + r − δ δ − r . 商品现货常常没有干净的价格,所以用两个相邻期货合约的价差:近月 F 1 F^1 F 1 (剩余 T 1 T_1 T 1 期)、次近月 F 2 F^2 F 2 (T 2 > T 1 T_2>T_1 T 2 > T 1 )。假设近月价格不变,则持有 F 2 F^2 F 2 的合约在 T 2 − T 1 T_2-T_1 T 2 − T 1 期内滑向 F 1 F^1 F 1 ,线性每期 carry 代理
C = F 1 − F 2 F 2 ( T 2 − T 1 )
C=\frac{F^1-F^2}{F^2\,(T_2-T_1)}
C = F 2 ( T 2 − T 1 ) F 1 − F 2 (KMPV 式 (10))。这是期限差上的价格差除以资本再除以期数,不是任意期限的精确月复利;若把端点总价格比等分复利,应另算 ( F 1 / F 2 ) 1 / ( T 2 − T 1 ) − 1 (F^1/F^2)^{1/(T_2-T_1)}-1 ( F 1 / F 2 ) 1/ ( T 2 − T 1 ) − 1 ,还须明确不变曲线路径。若 F i = S ( 1 + ( r − δ ) T i ) F^i=S(1+(r-\delta)T_i) F i = S ( 1 + ( r − δ ) T i ) 线性,则 F 1 − F 2 = S ( r − δ ) ( T 1 − T 2 ) F^1-F^2=S(r-\delta)(T_1-T_2) F 1 − F 2 = S ( r − δ ) ( T 1 − T 2 ) ,C = ( δ − r ) S / F 2 C=(\delta-r)S/F^2 C = ( δ − r ) S / F 2 ,与上式一致。读法:现货升水(F 1 > F 2 F^1>F^2 F 1 > F 2 )时 C > 0 C>0 C > 0 ,期货升水时 C < 0 C<0 C < 0 。8.3 节数值:近月 100、次近月 101,相隔 1 个月,C = − 1 / 101 = − 0.99 % C=-1/101=-0.99\% C = − 1/101 = − 0.99% 每月。
6.5 收益分解与“被收回”
第 4 节的恒等式 r t + 1 = C t + Δ S t + 1 / F t r_{t+1}=C_t+\Delta S_{t+1}/F_t r t + 1 = C t + Δ S t + 1 / F t (X = F X=F X = F )取条件期望:
E t [ r t + 1 ] = C t + E t [ Δ S t + 1 F t ] .
E_t[r_{t+1}]=C_t+E_t\Bigl[\frac{\Delta S_{t+1}}{F_t}\Bigr].
E t [ r t + 1 ] = C t + E t [ F t Δ S t + 1 ] . carry 是预期收益的一部分,另一部分是预期的价格变动,它取决于风险溢价与预期方式(KMPV 式 (6))。设预期价格变动是 carry 的一个比例:E t [ Δ S / F ] = − γ C t E_t[\Delta S/F]=-\gamma C_t E t [ Δ S / F ] = − γ C t ,则 E t [ r ] = ( 1 − γ ) C t E_t[r]=(1-\gamma)C_t E t [ r ] = ( 1 − γ ) C t 。γ = 1 \gamma=1 γ = 1 :价格变动恰好抵消 carry(外汇里 UIP 成立的情形),平均收益为零;γ = 0 \gamma=0 γ = 0 :价格是鞅,carry 全部兑现;0 < γ < 1 0<\gamma<1 0 < γ < 1 :部分被收回。如果截面回归 r i , t + 1 = a + b C i , t + u r_{i,t+1}=a+bC_{i,t}+u r i , t + 1 = a + b C i , t + u 的斜率 b = 1 − γ b=1-\gamma b = 1 − γ :b = 1 b=1 b = 1 说明 carry 完全兑现,b = 0 b=0 b = 0 说明完全被价格变动抵消。构造世界(10 节)里取 γ = 0.5 \gamma=0.5 γ = 0.5 ,但冲击载荷 ℓ i = 2 p c t i − 1 \ell_i=2\,\mathrm{pct}_i-1 ℓ i = 2 pct i − 1 是 carry 排名的函数,所以无条件的月度截面斜率的期望低于 1 − γ 1-\gamma 1 − γ :E [ b ] ≈ ( 1 − γ ) − p E [ m ] C o v ( ℓ , C ) / V a r ( C ) ‾ E[b]\approx(1-\gamma)-p\,E[m]\,\overline{\mathrm{Cov}(\ell,C)/\mathrm{Var}(C)} E [ b ] ≈ ( 1 − γ ) − p E [ m ] Cov ( ℓ , C ) / Var ( C ) ,p = 1.2 % p=1.2\% p = 1.2% 是每月冲击概率,E [ m ] = 0.05 + 0.02 2 / π = 0.066 E[m]=0.05+0.02\sqrt{2/\pi}=0.066 E [ m ] = 0.05 + 0.02 2/ π = 0.066 是冲击大小的期望,最后一项是各月 C o v ( ℓ , C ) / V a r ( C ) \mathrm{Cov}(\ell,C)/\mathrm{Var}(C) Cov ( ℓ , C ) / Var ( C ) 的平均。本路径的理论值 0.23;200 个新种子的月度斜率均值的中位数 0.273(理论值的中位数 0.272,5% 与 95% 分位数 − 0.14 -0.14 − 0.14 与 0.56)。本路径实测 0.44:只有 3 个冲击月(期望 4.3 个),没有冲击的 356 个月平均 0.65,冲击月平均 − 24.0 -24.0 − 24.0 。所以斜率小于 1 − γ 1-\gamma 1 − γ 是被设定的崩溃载荷造成的,不是单纯的抽样误差。
6.6 连续合约拼接与可交易盈亏
设日期 t t t 持有的合约是 c ( t ) c(t) c ( t ) ,价格 F t , c F_{t,c} F t , c 。可交易收益是持有同一合约两个日期的价格比:
r t t r a d e = F t + 1 , c ( t ) F t , c ( t ) − 1.
r^{\mathrm{trade}}_t=\frac{F_{t+1,c(t)}}{F_{t,c(t)}}-1 .
r t trade = F t , c ( t ) F t + 1 , c ( t ) − 1. 拼接价格 S t ∗ = F t , c ( t ) S^*_t=F_{t,c(t)} S t ∗ = F t , c ( t ) 的收益是
r t ∗ = S t + 1 ∗ S t ∗ − 1 = F t + 1 , c ( t + 1 ) F t , c ( t ) − 1.
r^{*}_t=\frac{S^*_{t+1}}{S^*_t}-1=\frac{F_{t+1,c(t+1)}}{F_{t,c(t)}}-1 .
r t ∗ = S t ∗ S t + 1 ∗ − 1 = F t , c ( t ) F t + 1 , c ( t + 1 ) − 1. 两者之差
r t ∗ − r t t r a d e = F t + 1 , c ( t + 1 ) − F t + 1 , c ( t ) F t , c ( t )
r^*_t-r^{\mathrm{trade}}_t=\frac{F_{t+1,c(t+1)}-F_{t+1,c(t)}}{F_{t,c(t)}}
r t ∗ − r t trade = F t , c ( t ) F t + 1 , c ( t + 1 ) − F t + 1 , c ( t ) 在不换合约(c ( t + 1 ) = c ( t ) c(t+1)=c(t) c ( t + 1 ) = c ( t ) )时为零;换合约时等于“新合约与旧合约在 t + 1 t+1 t + 1 的价格差”除以旧价。期货升水(新合约更贵)时拼接价格在换月日向上跳,但没有人赚到这笔钱:交易者在 t + 1 t+1 t + 1 以各自的报价卖出旧合约、买入新合约,换月本身不产生盈亏;期货升水的代价体现在后续新合约向现货收敛的下跌里。累计起来,拼接序列近似现货,可交易序列是现货加展期收益(8.4 节与 10 节的构造世界)。拼接价格里还会出现负价格或比率失效的问题,所以研究里应使用单合约收益再复利,而不是拼接价格(Asness、Moskowitz 与 Pedersen 2013 的商品期货收益构造,见第25章来源笔记)。
6.7 高减低的组合 carry 非负,不保证实际收益
组合权重 w i w_i w i (多头和为 + 1 +1 + 1 、空头和为 − 1 -1 − 1 ,或按排名),组合 carry C p = ∑ i w i C i = C ‾ 多头 − C ‾ 空头 C^{\mathrm p}=\sum_iw_iC_i=\overline{C}_{\text{多头}}-\overline{C}_{\text{空头}} C p = ∑ i w i C i = C 多头 − C 空头 (KMPV 式 (24)、(25))。按 carry 排序做多高、做空低,所以 C p ≥ 0 C^{\mathrm p}\ge0 C p ≥ 0 是构造的结果。收益分解(6.5)给出实际收益 = C p + 价格变动 =C^{\mathrm p}+\text{价格变动} = C p + 价格变动 ,价格变动的平均部分可以大幅抵消 carry。这里的非负结论要求多空各用非负腿权重、资本口径可比,且多头每项carry不低于空头每项;全相同或边界并列时可为零。形成时已知的carry仍会跨期变化:令 D t D_t D t 为组合价格变动项,V a r ( r ) = V a r ( C p ) + V a r ( D ) + 2 C o v ( C p , D ) \mathrm{Var}(r)=\mathrm{Var}(C^{\mathrm p})+\mathrm{Var}(D)+2\mathrm{Cov}(C^{\mathrm p},D) Var ( r ) = Var ( C p ) + Var ( D ) + 2 Cov ( C p , D ) ,偏度也受联合分布影响。给定形成时信息集后,已知carry不贡献当期条件创新;这与无条件时间序列风险不同。所以“组合 carry 为正”与“收益为正”是两个不同的陈述。10 节的构造世界:平均组合 carry 0.516% 每月,平均收益 0.179% 每月。
6.8 低波动与低 beta:分解
σ i 2 = β i 2 σ m 2 + σ ε , i 2 \sigma_i^2=\beta_i^2\sigma_m^2+\sigma_{\varepsilon,\allowbreak i}^2 σ i 2 = β i 2 σ m 2 + σ ε , i 2 。设 σ m = 16 % \sigma_m=16\% σ m = 16% ,资产 X:β = 0.5 \beta=0.5 β = 0.5 、特质波动 25%;资产 Y:β = 1.2 \beta=1.2 β = 1.2 、特质波动 5%。则
σ X = ( 0.5 × 0.16 ) 2 + 0.25 2 = 26.2 % , σ Y = ( 1.2 × 0.16 ) 2 + 0.05 2 = 19.8 % .
\sigma_X=\sqrt{(0.5\times0.16)^2+0.25^2}=26.2\%,\qquad \sigma_Y=\sqrt{(1.2\times0.16)^2+0.05^2}=19.8\%.
σ X = ( 0.5 × 0.16 ) 2 + 0.2 5 2 = 26.2% , σ Y = ( 1.2 × 0.16 ) 2 + 0.0 5 2 = 19.8%. X 的 beta 更低、波动更高:按波动排序与按 beta 排序给出相反的名次(27-E08)。所以“低波动”与“低 beta”是两个不同的信号,实证里常常相关但不相同(11 节:10 个行业中,低 beta 一半与低波动一半平均重合 3.6 个行业)。
CAPM 说 E [ r i ] = β i E [ r m ] E[r_i]=\beta_iE[r_m] E [ r i ] = β i E [ r m ] (超额收益)。如果证券市场线比这条线更平,α i = E [ r i ] − β i E [ r m ] \alpha_i=E[r_i]-\beta_iE[r_m] α i = E [ r i ] − β i E [ r m ] 对低 beta 为正、对高 beta 为负。一个低 beta 组合 β p = 0.7 \beta_p=0.7 β p = 0.7 ,持有 1 倍;要与市场比较,把它杠杆到 beta=1 需要 1 / 0.7 = 1.43 1/0.7=1.43 1/0.7 = 1.43 倍,若预期超额收益与 beta 无关(SML 平坦),杠杆后的预期超额收益是 1.43 E [ r p ] 1.43E[r_p] 1.43 E [ r p ] ,高于市场。杠杆在 CAPM 里没有成本,现实里有融资成本与约束(6.10)。
6.9 BAB:权重、中性与收缩
构造。 第 4 节的 w L , w H w_L,w_H w L , w H ;估计 beta 下的两条腿 β ^ L , β ^ H \hat\beta_L,\hat\beta_H β ^ L , β ^ H ;收益 r B A B = r L / β ^ L − r H / β ^ H r^{\mathrm{BAB}}=r_L/\hat\beta_L-r_H/\hat\beta_H r BAB = r L / β ^ L − r H / β ^ H 。每条腿都被缩放到 beta 为 1(两腿beta必须正;只有 0 < β ^ L < 1 < β ^ H 0<\hat\beta_L<1<\hat\beta_H 0 < β ^ L < 1 < β ^ H 时才分别有 1 / β ^ L > 1 1/\hat\beta_L>1 1/ β ^ L > 1 与 1 / β ^ H < 1 1/\hat\beta_H<1 1/ β ^ H < 1 ,高低排序本身不保证跨1)。草稿提到美国股票的 BAB 平均做多 1.4 美元的低 beta 股票(融资 1.4 美元的无风险资产)、做空 0.7 美元的高 beta 股票(该文样本,草稿页 19)。
估计 beta 下的中性。 直接把组合权重作用于所用的估计 beta:β ^ B A B = β ^ L / β ^ L − β ^ H / β ^ H = 1 − 1 = 0 \hat\beta^{\mathrm{BAB}}=\hat\beta_L/\hat\beta_L-\hat\beta_H/\hat\beta_H=1-1=0 β ^ BAB = β ^ L / β ^ L − β ^ H / β ^ H = 1 − 1 = 0 。这一代数结论只需两条估计腿 beta 非零,不要求估计等于真值;本章构造另要求两者严格为正。若进一步假设估计 beta 恰好等于真实 beta,才可由此得到真实市场中性。8.5节的特例中,每个资产的收益恰好等于用于缩放的 β i × \beta_i\times β i × 市场收益,因而 BAB 收益为0。
真实暴露。 实际的组合 beta 是 β B A B = β L T / β ^ L − β H T / β ^ H \beta^{\mathrm{BAB}}=\beta^T_L/\hat\beta_L-\beta^T_H/\hat\beta_H β BAB = β L T / β ^ L − β H T / β ^ H ,β T \beta^T β T 是两条腿的真实 beta。
收缩。 Frazzini 与 Pedersen 用 β ^ = w β ^ T S + ( 1 − w ) ⋅ 1 \hat\beta=w\hat\beta^{\mathrm{TS}}+(1-w)\cdot1 β ^ = w β ^ TS + ( 1 − w ) ⋅ 1 ,w = 0.6 w=0.6 w = 0.6 (式 (15) 与其后;草稿页 17):向横截面均值 1 收缩。共同且严格为正的 w w w 不改变排名;w = 0 w=0 w = 0 使所有估计为1、秩消失,bab_weights 因全并列报错;严格正的共同权重因此不改变两条腿选了谁,只改变缩放(杠杆)的大小。分两种情形。
(a)无噪声,用收缩后的 beta 作缩放,而真实 beta 就是未收缩的 x x x :β ^ = w x + ( 1 − w ) \hat\beta=wx+(1-w) β ^ = w x + ( 1 − w ) 。令 g ( x ) = x / ( w x + 1 − w ) g(x)=x/(wx+1-w) g ( x ) = x / ( w x + 1 − w ) ,则 β B A B = g ( x L ) − g ( x H ) \beta^{\mathrm{BAB}}=g(x_L)-g(x_H) β BAB = g ( x L ) − g ( x H ) ,0 < x L < 1 < x H 0<x_L<1<x_H 0 < x L < 1 < x H ,0 < w ≤ 1 0<w\le1 0 < w ≤ 1 。定义域要先说清:g g g 在 x = − ( 1 − w ) / w x=-(1-w)/w x = − ( 1 − w ) / w 处有极点,g ′ ( x ) = ( 1 − w ) / ( w x + 1 − w ) 2 > 0 g'(x)=(1-w)/(wx+1-w)^2>0 g ′ ( x ) = ( 1 − w ) / ( w x + 1 − w ) 2 > 0 (w < 1 w<1 w < 1 )只保证 g g g 在极点两侧各自递增,不能跨极点比较。两条腿的缩放 beta w x L + 1 − w wx_L+1-w w x L + 1 − w 与 w x H + 1 − w wx_H+1-w w x H + 1 − w 都严格为正,等价于 x L , x H x_L,x_H x L , x H 都在极点右侧的同一区间;x L > 0 x_L>0 x L > 0 时这自动成立。于是 g ( x L ) < g ( x H ) g(x_L)<g(x_H) g ( x L ) < g ( x H ) :β B A B < 0 \beta^{\mathrm{BAB}}<0 β BAB < 0 ;w = 1 w=1 w = 1 时 g ( x ) = 1 g(x)=1 g ( x ) = 1 ,β B A B = 0 \beta^{\mathrm{BAB}}=0 β BAB = 0 。去掉正分母条件结论就会反号:x L = − 1 x_L=-1 x L = − 1 ,x H = 2 x_H=2 x H = 2 ,w = 0.6 w=0.6 w = 0.6 时低 beta 腿的缩放 beta 为 − 0.2 -0.2 − 0.2 ,g ( x L ) − g ( x H ) = 5 − 1.25 = + 3.75 g(x_L)-g(x_H)=5-1.25=+3.75 g ( x L ) − g ( x H ) = 5 − 1.25 = + 3.75 ;w = 1 w=1 w = 1 、x L = 0 x_L=0 x L = 0 时是 0 / 0 0/0 0/0 。这正是 bab_returns 的既有政策:任何一个月的加权腿 beta ≤ 0 \le0 ≤ 0 都直接报错,不能把负 beta 腿“杠杆到 1”。数值:x L = 0.7 x_L=0.7 x L = 0.7 ,x H = 1.3 x_H=1.3 x H = 1.3 ,w = 0.6 w=0.6 w = 0.6 :0.7 / 0.82 − 1.3 / 1.18 = 0.854 − 1.102 = − 0.248 0.7/0.82-1.3/1.18=0.854-1.102=-0.248 0.7/0.82 − 1.3/1.18 = 0.854 − 1.102 = − 0.248 (27-C01)。
(b)有噪声:β ^ = β + e \hat\beta=\beta+e β ^ = β + e ,e e e 与 β \beta β 独立,β ∼ ( 1 , σ β 2 ) \beta\sim(1,\sigma_\beta^2) β ∼ ( 1 , σ β 2 ) ,e ∼ ( 0 , σ e 2 ) e\sim(0,\sigma_e^2) e ∼ ( 0 , σ e 2 ) 。则 E [ β ∣ β ^ ] = 1 + w ∗ ( β ^ − 1 ) E[\beta\mid\hat\beta]=1+w^*(\hat\beta-1) E [ β ∣ β ^ ] = 1 + w ∗ ( β ^ − 1 ) ,w ∗ = σ β 2 / ( σ β 2 + σ e 2 ) w^*=\sigma_\beta^2/(\sigma_\beta^2+\sigma_e^2) w ∗ = σ β 2 / ( σ β 2 + σ e 2 ) (各证券的 ( β i , e i ) (\beta_i,e_i) ( β i , e i ) 截面独立且联合正态时是精确的;否则只是最佳线性预测,而且若估计误差跨证券相关,按极值排名选入腿会引入额外的选择偏倚)。所以用 w = w ∗ w=w^* w = w ∗ 收缩的 beta 恰好是真实 beta 的条件期望,给定整个向量 β ^ \hat\beta β ^ 时,腿权重与缩放分母 s L , s H s_L,s_H s L , s H 都是常数,所以两条腿的条件真实暴露精确为 E [ β L T ∣ β ^ ] / s L = 1 E[\beta^T_L\mid\hat\beta]/s_L=1 E [ β L T ∣ β ^ ] / s L = 1 、E [ β H T ∣ β ^ ] / s H = 1 E[\beta^T_H\mid\hat\beta]/s_H=1 E [ β H T ∣ β ^ ] / s H = 1 ,BAB 的条件真实 beta 为 0(没有 Jensen 修正项;条件是 s L , s H ≠ 0 s_L,s_H\ne0 s L , s H = 0 ,即分母有定义的观测区域。无条件期望还需要这个比值可积,正态尾部下不能默认,本章不声称);符号比较另需条件:两条腿的估计 beta 满足 β ^ L < 1 < β ^ H \hat\beta_L<1<\hat\beta_H β ^ L < 1 < β ^ H ,且缩放分母 s L , s H s_L,s_H s L , s H 都严格为正(s H > 0 s_H>0 s H > 0 在 β ^ H > 1 \hat\beta_H>1 β ^ H > 1 时自动成立)。在此条件下,w > w ∗ w>w^* w > w ∗ (收缩不足)时低beta腿的条件平均真实beta高于缩放用的,BAB条件平均暴露为正;w < w ∗ w<w^* w < w ∗ (过度收缩)时条件平均暴露为负。只要求分母非零不够:β ^ L = − 2 \hat\beta_L=-2 β ^ L = − 2 ,β ^ H = 2 \hat\beta_H=2 β ^ H = 2 ,w ∗ = 0.5 w^*=0.5 w ∗ = 0.5 ,w = 0.6 w=0.6 w = 0.6 时 s L = − 0.8 s_L=-0.8 s L = − 0.8 ,条件净暴露为 − 0.3125 -0.3125 − 0.3125 ,与“收缩不足为正”相反。27-P03 的模拟:真实 beta 均值 1、标准差 0.25,噪声标准差 0.25(w ∗ = 0.5 w^*=0.5 w ∗ = 0.5 ),500 只证券,200 个模拟取平均:w = 1 w=1 w = 1 时 β B A B = + 0.47 \beta^{\mathrm{BAB}}=+0.47 β BAB = + 0.47 ,w = 0.5 w=0.5 w = 0.5 时 − 0.0006 -0.0006 − 0.0006 ,w = 0.2 w=0.2 w = 0.2 时 − 0.24 -0.24 − 0.24 。
含义。 一个常数收缩权重(0.6)是否使 BAB 中性,取决于 beta 估计的噪声有多大。11节行业样本中 w = 0.6 w=0.6 w = 0.6 的回归beta约 − 0.20 -0.20 − 0.20 ,不收缩时约 + 0.05 +0.05 + 0.05 ,与该模型中收缩改变暴露的机制相容。但“大组合、60月窗口”并不识别估计噪声方差,也不能推出 w ∗ w^* w ∗ 接近1;本章没有估计真实beta或识别负暴露的因果来源。
6.10 杠杆、融资与崩溃
融资。 长腿需要借入 max ( 1 / β ^ L − 1 , 0 ) \max(1/\hat\beta_L-1,0) max ( 1/ β ^ L − 1 , 0 ) 单位(11 节平均 0.27)。若借款利率比无风险利率高 s s s (每月,小数),每月成本 s [ max ( 1 / β ^ L − 1 , 0 ) + max ( 1 / β ^ H − 1 , 0 ) ] s\bigl[\max(1/\hat\beta_L-1,0)+\max(1/\hat\beta_H-1,0)\bigr] s [ max ( 1/ β ^ L − 1 , 0 ) + max ( 1/ β ^ H − 1 , 0 ) ] 。年化 1% 的融资利差使 10 个行业的 BAB 均值从 0.2045% 降到 0.1818% 每月(11 节)。融资利差只是成本的一个来源,保证金要求、被迫平仓、做空约束没有进入本章的计算。
崩溃。 设一个全局冲击 J J J 以小概率发生,高 carry 货币的损失与它们的 carry 排名成比例:r i = ( 1 − γ ) C i + 噪声 − ℓ i m J r_i=(1-\gamma)C_i+\text{噪声}-\ell_i\,m\,J r i = ( 1 − γ ) C i + 噪声 − ℓ i m J ,载荷 ℓ i = 2 p c t i − 1 ∈ [ − 1 , 1 ] \ell_i=2\,\mathrm{pct}_i-1\in[-1,1] ℓ i = 2 pct i − 1 ∈ [ − 1 , 1 ] (p c t i \mathrm{pct}_i pct i 是 carry 的百分位名次)。组合多头的 ℓ \ell ℓ 约 + 0.8 +0.8 + 0.8 、空头约 − 0.8 -0.8 − 0.8 ,所以组合对 J J J 的载荷约 1.6,所有货币共享同一个冲击,不会被货币个数分散掉。每月的期望崩溃损失约 p E [ m ] × 1.6 p\,E[m]\times1.6 p E [ m ] × 1.6 ,共同的 J J J 冲击制造集中左尾,噪声、carry跨期变化及其依赖也影响波动与偏度,不能说全部风险只来自 J J J 月(10 节:3 个冲击月平均 − 9.0 % -9.0\% − 9.0% ,其余月平均 + 0.26 % +0.26\% + 0.26% )。
6.11 BAB 的“中性”是哪一种中性
BAB 的两腿权重先各自和为 1,再乘 L = 1 / β ^ L L=1/\hat\beta_L L = 1/ β ^ L 、H = 1 / β ^ H H=1/\hat\beta_H H = 1/ β ^ H 。风险资产权重 w = L w L − H w H w=Lw_L-Hw_H w = L w L − H w H 的净额是 L − H L-H L − H ,gross 是 L + H L+H L + H (两腿无重叠)。估计 beta 暴露是 L β ^ L − H β ^ H = 0 L\hat\beta_L-H\hat\beta_H=0 L β ^ L − H β ^ H = 0 ,却一般不是美元净额为零 。为得到自融资损益表达式,再配无风险资产权重 − ( L − H ) -(L-H) − ( L − H ) ;风险腿与融资腿权重总和为零。这是一个按单位参考资本记账的自融资因子,不是可以对零初始财富计算百分比收益的存款。
第8.5节 L = 1.4815 , H = 0.7547 L=1.4815,H=0.7547 L = 1.4815 , H = 0.7547 ,风险净额 0.7268 0.7268 0.7268 、gross 2.2362 2.2362 2.2362 。直接用总收益会多出 ( L − H ) r f (L-H)r^f ( L − H ) r f ,无风险融资腿恰好抵消它,所以 L r L e − H r H e Lr_L^e-Hr_H^e L r L e − H r H e 与完整自融资账等价。第6.10节的额外借款成本使用课程的分腿融资约定 s [ max ( L − 1 , 0 ) + max ( H − 1 , 0 ) ] s[\max(L-1,0)+\max(H-1,0)] s [ max ( L − 1 , 0 ) + max ( H − 1 , 0 )] :本例只计长腿超出一单位的 0.4815 0.4815 0.4815 。它不是完整经纪商净融资/保证金账,不能与 L − H L-H L − H 的净融资额或借券费互换。原敏感度保留为这个明确约定下的结果。
若希望另作 gross=2 的齐次组合比较,可令 k = 2 / ( L + H ) > 0 k=2/(L+H)>0 k = 2/ ( L + H ) > 0 同时缩放两腿;估计 beta 的零约束仍成立,收益及该约定下直接按头寸计量的费用须重新核口径,净额仍是 k ( L − H ) k(L-H) k ( L − H ) ,不会自动为零。本章旧 BAB 数值没有作这种缩放;P4 的 gross=2 是第28章股票行业约束的另一份合同,不应套回 BAB 历史结果。正分母、真实/估计 beta 与收缩条件继续按第6.9节判断。
7. 金融解释
carry 是预期收益的机械成分,不是全部。 它可以只用今天的价格算出(外汇用利率或远期,商品用曲线斜率,债券用收益率曲线),不需要估计任何风险溢价模型。但 6.5 的恒等式说明,预期价格变动同样重要:价格变动可以收回 carry(外汇 UIP),也可以放大。研究者能直接观察的是 C t C_t C t ,需要检验的是 γ \gamma γ 。
carry 的收益分布偏负。 6.10 的崩溃机制说明:carry 头寸在平时赚取稳定的小额收益,在全局冲击(融资紧张、风险厌恶上升)时集中亏损。10 节的构造世界里,200 个新种子无一例外偏度为负,中位偏度 − 1.4 -1.4 − 1.4 ,74% 的世界最大回撤超过 25%。真实数据是否如此需要真实的外汇、期货与融资数据。
换月不是收益。 连续合约价格在换月日跳跃,把它当成价格序列算收益会把曲线形状(展期收益)当作现货价格运动。可交易收益等于 carry 加价格变动,拼接价格近似于现货(10 节的构造世界:拼接均值 0.093% 每月,现货 0.090%,可交易 0.205%)。
低 beta 不是低风险。 低 beta 只说与市场联动小,特质风险可以很大(6.8)。BAB 的收益来自两个来源:低 beta 资产的 alpha 与高 beta 资产的负 alpha(SML 平坦),以及杠杆。杠杆有成本、有约束;Frazzini 与 Pedersen 的模型把约束当作高 beta 资产被抬价的原因(草稿摘要),本章只使用其构造,不检验其机制。
防御不等于便宜。 低 beta 一半在市场下跌月份的损失更小(11 节:下跌月平均 − 2.86 % -2.86\% − 2.86% 对 − 4.55 % -4.55\% − 4.55% ),但它的下跌 beta 与上涨 beta 几乎相同(0.81 对 0.79),在这个样本内未显示明显的上下行beta非对称;较低beta与少亏相容,但该诊断不能把全部损失差异因果归于beta。
8. 数值例题:手算每一步
所有数字由 hand_examples() 产生,并由 历史独立复核脚本 用不同实现复核。公司、货币与合约均为教学构造。
8.1 外汇远期:利差、报价方向与保本汇率
完整例题:外汇报价、资本与存款分母
报价是“本币/外币”,S = 100 S=100 S = 100 ;本币年利率 r = 2 % r=2\% r = 2% ,外币年利率 r ∗ = 6 % r^*=6\% r ∗ = 6% ,一年期简单利率。CIP:F = 100 × 1.02 / 1.06 = 96.2264 F=100\times1.02/1.06=96.2264 F = 100 × 1.02/1.06 = 96.2264 。做多外币远期的 carry:
C = S − F F = 100 − 96.2264 96.2264 = 3.9216 % = r ∗ − r 1 + r = 0.04 1.02 .
C=\frac{S-F}{F}=\frac{100-96.2264}{96.2264}=3.9216\%=\frac{r^*-r}{1+r}=\frac{0.04}{1.02}.
C = F S − F = 96.2264 100 − 96.2264 = 3.9216% = 1 + r r ∗ − r = 1.02 0.04 . 远期升贴水 F / S − 1 = − 3.7736 % F/S-1=-3.7736\% F / S − 1 = − 3.7736% (远期贴水)。保本汇率:S T = F = 96.2264 S_T=F=96.2264 S T = F = 96.2264 ,外币贬值 3.7736 % 3.7736\% 3.7736% 以内做多远期赚钱。若期末现货为 96:远期收益 ( 96 − 96.2264 ) / 96.2264 = − 0.2353 % (96-96.2264)/96.2264=-0.2353\% ( 96 − 96.2264 ) /96.2264 = − 0.2353% ;等价的存款比较:外币存款换回本币 1.06 × 0.96 = 1.0176 1.06\times0.96=1.0176 1.06 × 0.96 = 1.0176 ,本币存款 1.02 1.02 1.02 ,超额收益 ( 1.0176 − 1.02 ) / 1.02 = − 0.2353 % (1.0176-1.02)/1.02=-0.2353\% ( 1.0176 − 1.02 ) /1.02 = − 0.2353% ,是相对本币存款终值的超额,与 X = F X=F X = F 远期超额一致。按初始本金1的外币存款总收益是1.76%,算术超额是 1.76 % − 2 % = − 0.24 % 1.76\%-2\%=-0.24\% 1.76% − 2% = − 0.24% ;若给远期配资本 F F F 并赚同一期2%抵押利息,其总收益为 2 % − 0.235294 % = 1.76470588 % 2\%-0.235294\%=1.76470588\% 2% − 0.235294% = 1.76470588% 。这两个总收益分母与账户不同,不必相等。外币利率高 4 个百分点,但外币贬了4%,因此没有正的超额收益;存款总收益仍为正,不能把“不赚超额”写成账户没有盈利。
报价方向的陷阱:改用“外币/本币”报价,S ′ = 0.01 S'=0.01 S ′ = 0.01 ,F ′ = 1 / 96.2264 = 0.0103922 F'=1/96.2264=0.0103922 F ′ = 1/96.2264 = 0.0103922 ,套用同一公式 ( S ′ − F ′ ) / F ′ = − 3.7736 % (S'-F')/F'=-3.7736\% ( S ′ − F ′ ) / F ′ = − 3.7736% ,符号反了,数值是 F / S − 1 F/S-1 F / S − 1 。
8.2 零息债的 carry 与滑降
收益率曲线(年复利):1 年 2%、2 年 3%、3 年 3.5%、5 年 4%。买入 3 年零息债,持有 1 年,曲线不变。现价 1.035 − 3 = 0.90194 1.035^{-3}=0.90194 1.03 5 − 3 = 0.90194 ;一年后变成 2 年期,按 3% 定价 1.03 − 2 = 0.94260 1.03^{-2}=0.94260 1.0 3 − 2 = 0.94260 。总收益 0.94260 / 0.90194 − 1 = 4.5073 % 0.94260/0.90194-1=4.5073\% 0.94260/0.90194 − 1 = 4.5073% 。分解:收益率部分 1.035 − 1 = 3.5 % 1.035-1=3.5\% 1.035 − 1 = 3.5% ;滑降部分 ( 1.035 / 1.03 ) 2 − 1 = 0.9732 % (1.035/1.03)^2-1=0.9732\% ( 1.035/1.03 ) 2 − 1 = 0.9732% ;( 1.035 ) ( 1.009732 ) − 1 = 4.5073 % (1.035)(1.009732)-1=4.5073\% ( 1.035 ) ( 1.009732 ) − 1 = 4.5073% 。扣除 1 年期利率 2% 的融资:超额 carry = 2.5073 % =2.5073\% = 2.5073% 。久期近似:2 年零息债修正久期 2 / 1.03 = 1.9417 2/1.03=1.9417 2/1.03 = 1.9417 ,滑降 ≈ 1.9417 × ( 0.035 − 0.03 ) = 0.9709 % \approx1.9417\times(0.035-0.03)=0.9709\% ≈ 1.9417 × ( 0.035 − 0.03 ) = 0.9709% ,与精确的 0.9732% 相差 0.002 个百分点;若误用 3 年债的久期 3 / 1.035 = 2.899 3/1.035=2.899 3/1.035 = 2.899 ,得 1.449 % 1.449\% 1.449% ,高估一半。平坦曲线(都是 3.5%):滑降为零,总收益 3.5%。
8.3 商品曲线
近月(剩余 1 个月)100,次近月(剩余 2 个月)101:每月 C = ( 100 − 101 ) / ( 101 × 1 ) = − 0.990 % C=(100-101)/(101\times1)=-0.990\% C = ( 100 − 101 ) / ( 101 × 1 ) = − 0.990% (期货升水,做多次近月在曲线不变时每月亏 0.99%)。反过来近月 100、次近月 98:C = ( 100 − 98 ) / 98 = + 2.041 % C=(100-98)/98=+2.041\% C = ( 100 − 98 ) /98 = + 2.041% 每月(现货升水)。
8.4 换月:拼接价格与可交易收益
下面的收益指数忽略抵押利息与费用,每期按起始合约价全额抵押,并随财富调整名义金额(允许连续单位);它不是固定一手合约的现金账。现货恒为 100,曲线每期升水 1:合约 A 在第 0、1、2 期的价格是 102、101、100(第 2 期到期收敛);在第 2 期换到合约 B,B 在第 2、3 期的价格是 103、102。持有 A 到第 2 期,再持有 B:
区间
可交易收益(同一合约两端价格比)
拼接价格的收益
第 0→1 期
101 / 102 − 1 = − 0.980 % 101/102-1=-0.980\% 101/102 − 1 = − 0.980%
− 0.980 % -0.980\% − 0.980%
第 1→2 期
A:100 / 101 − 1 = − 0.990 % 100/101-1=-0.990\% 100/101 − 1 = − 0.990%
拼接序列 101→103:+ 1.980 % +1.980\% + 1.980%
第 2→3 期
B:102 / 103 − 1 = − 0.971 % 102/103-1=-0.971\% 102/103 − 1 = − 0.971%
− 0.971 % -0.971\% − 0.971%
可交易的累计收益 − 2.913 % -2.913\% − 2.913% (现货没动,期货升水每月吃掉约 1%);拼接序列 102 → 101 → 103 → 102 102\to101\to103\to102 102 → 101 → 103 → 102 累计 0 % 0\% 0% ,和现货一样。第 1→2 期的差 1.980 − ( − 0.990 ) = 2.970 % = ( 103 − 100 ) / 101 1.980-(-0.990)=2.970\%=(103-100)/101 1.980 − ( − 0.990 ) = 2.970% = ( 103 − 100 ) /101 :新合约与旧合约在第 2 期的价差除以旧价(6.6 节)。拼接序列里这个 + 1.98 % +1.98\% + 1.98% 没有任何人赚到。
8.5 BAB:权重、杠杆、收益与中性
四个证券的 beta 估计 0.6 , 0.9 , 1.1 , 1.4 0.6,0.9,1.1,1.4 0.6 , 0.9 , 1.1 , 1.4 :名次 1 , 2 , 3 , 4 1,2,3,4 1 , 2 , 3 , 4 ,z ˉ = 2.5 \bar z=2.5 z ˉ = 2.5 ,偏差 ( − 1.5 , − 0.5 , 0.5 , 1.5 ) (-1.5,-0.5,0.5,1.5) ( − 1.5 , − 0.5 , 0.5 , 1.5 ) ,∑ ∣ z − z ˉ ∣ = 4 \sum|z-\bar z|=4 ∑ ∣ z − z ˉ ∣ = 4 ,k = 2 / 4 = 0.5 k=2/4=0.5 k = 2/4 = 0.5 。低 beta 腿 w L = ( 0.75 , 0.25 , 0 , 0 ) w_L=(0.75,0.25,0,0) w L = ( 0.75 , 0.25 , 0 , 0 ) ,高 beta 腿 w H = ( 0 , 0 , 0.25 , 0.75 ) w_H=(0,0,0.25,0.75) w H = ( 0 , 0 , 0.25 , 0.75 ) ,各腿权重和为 1。腿的 beta:β ^ L = 0.75 × 0.6 + 0.25 × 0.9 = 0.675 \hat\beta_L=0.75\times0.6+0.25\times0.9=0.675 β ^ L = 0.75 × 0.6 + 0.25 × 0.9 = 0.675 ,β ^ H = 0.25 × 1.1 + 0.75 × 1.4 = 1.325 \hat\beta_H=0.25\times1.1+0.75\times1.4=1.325 β ^ H = 0.25 × 1.1 + 0.75 × 1.4 = 1.325 。杠杆:低 beta 腿 1 / 0.675 = 1.4815 1/0.675=1.4815 1/0.675 = 1.4815 ,高 beta 腿 1 / 1.325 = 0.7547 1/1.325=0.7547 1/1.325 = 0.7547 。下月超额收益 ( 1.2 % , 1.5 % , 1.0 % , 2.0 % ) (1.2\%,1.5\%,1.0\%,2.0\%) ( 1.2% , 1.5% , 1.0% , 2.0% ) :r L = 1.275 % r_L=1.275\% r L = 1.275% ,r H = 1.75 % r_H=1.75\% r H = 1.75% ,
r B A B = 1.275 % 0.675 − 1.75 % 1.325 = 1.8889 % − 1.3208 % = 0.5681 % .
r^{\mathrm{BAB}}=\frac{1.275\%}{0.675}-\frac{1.75\%}{1.325}=1.8889\%-1.3208\%=0.5681\%.
r BAB = 0.675 1.275% − 1.325 1.75% = 1.8889% − 1.3208% = 0.5681%. 中性检验:若每个证券下月超额收益恰好等于 β i × 1 % \beta_i\times1\% β i × 1% (市场涨 1%),则 r L = 0.675 % r_L=0.675\% r L = 0.675% ,r H = 1.325 % r_H=1.325\% r H = 1.325% ,r B A B = 1 % − 1 % = 0 r^{\mathrm{BAB}}=1\%-1\%=0 r BAB = 1% − 1% = 0 。融资成本:长腿借入 1.4815 − 1 = 0.4815 1.4815-1=0.4815 1.4815 − 1 = 0.4815 单位,若借款利率每月高 0.2 % 0.2\% 0.2% ,成本 0.2 % × 0.4815 = 0.0963 % 0.2\%\times0.4815=0.0963\% 0.2% × 0.4815 = 0.0963% ,BAB 变为 0.4718 % 0.4718\% 0.4718% ;短腿去杠杆,不借款。
8.6 组合 carry 与收益
四种货币每月的 carry 是 0.4 % , 0.2 % , − 0.1 % , − 0.3 % 0.4\%,0.2\%,-0.1\%,-0.3\% 0.4% , 0.2% , − 0.1% , − 0.3% ,多头为前两个、空头为后两个,权重 ± 0.5 \pm0.5 ± 0.5 :组合 carry = 0.5 ( 0.4 + 0.2 ) − 0.5 ( − 0.1 − 0.3 ) = 0.5 % =0.5(0.4+0.2)-0.5(-0.1-0.3)=0.5\% = 0.5 ( 0.4 + 0.2 ) − 0.5 ( − 0.1 − 0.3 ) = 0.5% ,等于“多头平均 0.3% 减空头平均 − 0.2 % -0.2\% − 0.2% ”(KMPV 式 (25))。若下月价格变动 Δ S / F \Delta S/F Δ S / F 分别为 − 0.3 % , − 0.1 % , 0 , + 0.2 % -0.3\%,-0.1\%,0,+0.2\% − 0.3% , − 0.1% , 0 , + 0.2% ,各货币收益 = C + Δ S / F =C+\Delta S/F = C + Δ S / F 为 0.1 % , 0.1 % , − 0.1 % , − 0.1 % 0.1\%,0.1\%,-0.1\%,-0.1\% 0.1% , 0.1% , − 0.1% , − 0.1% ,组合收益 0.5 ( 0.1 + 0.1 ) − 0.5 ( − 0.1 − 0.1 ) = 0.2 % 0.5(0.1+0.1)-0.5(-0.1-0.1)=0.2\% 0.5 ( 0.1 + 0.1 ) − 0.5 ( − 0.1 − 0.1 ) = 0.2% ,只有组合 carry 的 40%:价格变动收回了 60%。
8.7 收缩与真实暴露
原始 beta 0.5 收缩后 0.6 × 0.5 + 0.4 = 0.7 0.6\times0.5+0.4=0.7 0.6 × 0.5 + 0.4 = 0.7 ;1.8 收缩后 1.48 1.48 1.48 。若低 beta 腿的真实 beta 是 0.7、高 beta 腿是 1.3,而缩放用的是收缩后的 0.82 0.82 0.82 与 1.18 1.18 1.18 :真实组合 beta = 0.7 / 0.82 − 1.3 / 1.18 = 0.854 − 1.102 = − 0.248 =0.7/0.82-1.3/1.18=0.854-1.102=-0.248 = 0.7/0.82 − 1.3/1.18 = 0.854 − 1.102 = − 0.248 (6.9(a))。
9. Python实现
carry 的函数在新模块 carry.py ,beta 与 BAB 在 low_risk.py ;排序复用第23章 factor_research.py ;外汇远期的覆盖式参考报价复用第10章已有的 covered_fx_forward_quote 。
函数
输入
输出与边界
futures_carry
现货、期货、可选抵押
( S − F ) / X (S-F)/X ( S − F ) / X ,X X X 默认 F F F ;价格须为正;数组按位置对应
forward_premium
现货、远期
F / S − 1 F/S-1 F / S − 1
fx_carry_from_rates
本币利率、外币利率
( r ∗ − r ) / ( 1 + r ) (r^*-r)/(1+r) ( r ∗ − r ) / ( 1 + r ) ;利率须大于 − 1 -1 − 1 ;报价为本币/外币
commodity_curve_carry
F 1 , F 2 , T 1 , T 2 F^1,F^2,T_1,T_2 F 1 , F 2 , T 1 , T 2
( F 1 − F 2 ) / ( F 2 ( T 2 − T 1 ) ) (F^1-F^2)/(F^2(T_2-T_1)) ( F 1 − F 2 ) / ( F 2 ( T 2 − T 1 )) ;T 2 > T 1 T_2>T_1 T 2 > T 1
zero_coupon_carry
曲线、到期、持有期、可选融资利率
总收益、收益率部分、滑降部分、超额;曲线须覆盖 T T T 与 T − h T-h T − h
roll_down_approximation
修正久期、两个收益率
− D ( y 滑后 − y 现 ) -D(y_{\text{滑后}}-y_{\text{现}}) − D ( y 滑后 − y 现 )
portfolio_carry
权重、carry(同标签)
∑ w i C i \sum w_iC_i ∑ w i C i ;非零权重缺 carry 报错
held_contract_returns
合约价格表、每日持有的合约
F t + 1 , c / F t , c − 1 F_{t+1,c}/F_{t,c}-1 F t + 1 , c / F t , c − 1 ;持有合约缺价格报错;最后一行 NaN
naive_splice_returns
同上
拼接序列的收益(换月日含价差);最后一行 NaN
rolling_beta
资产超额收益、市场超额收益、窗口、最少月数
行 s s s 只用 s − window + 1.. s s-\text{window}+1..s s − window + 1.. s 的月份;市场须无缺失
vol_corr_beta
同上,波动窗口与相关窗口
ρ σ i / σ m \rho\sigma_i/\sigma_m ρ σ i / σ m ,默认 12 与 60 个月,至少 12 与 36 个月
vasicek_shrink
beta、权重、先验
w β ^ + ( 1 − w ) ⋅ 先验 w\hat\beta+(1-w)\cdot\text{先验} w β ^ + ( 1 − w ) ⋅ 先验 ,默认 0.6 与 1
bab_weights
某月的 beta 向量
w L , w H w_L,w_H w L , w H (各腿和为 1,缺失 beta 权重 0);并列取平均名次;全并列报错
bab_returns
超额收益、beta、可选借款利差
BAB 与两条腿、腿的 beta 与杠杆;腿 beta 不为正报错;持有的证券下月缺收益报错
state_beta
资产、市场、布尔条件
条件内的斜率与截距
默认离线阅读入口是已接受读者包的 notebooks/ch27_carry_lowrisk.ipynb:RUN_FRENCH=False,外汇10种货币×360月(seed 20261114)、商品240月(seed 20261115),FX sweep默认60世界、beta噪声默认100世界×500名。只创建新的RUN_DIR;不输出历史图/CSV/JSON。下文200种子、French与本章四幅历史图是既有历史证据,不由默认路径重跑。 runner另存execution副本和状态。代码块保留完整供学习;下列是原工程源中的历史CLI/测试入口,非读者默认步骤,独立包未捆绑这些工程入口时不要运行:
.venv/bin/python code/ch27_carry_lowrisk.py
.venv/bin/python -m pytest tests/test_ch27_carry.py tests/test_ch27_lowrisk.py tests/test_ch27_workflow.py -q
频率:月;signal_time 是月末的最后一刻(UTC);beta 与波动率只用到该月末为止的数据;BAB 的收益是下个月;种子:外汇世界 20261114,商品世界 20261115。
代码段一:外汇、债券、商品的 carry(8.1–8.3 节)。
from quant_course.carry import (
commodity_curve_carry, fx_carry_from_rates, futures_carry, roll_down_approximation, zero_coupon_carry,
)
s, r_local, r_foreign = 100.0 , 0.02 , 0.06
f = s * (1 + r_local) / (1 + r_foreign)
assert abs (f - 96.2264 ) < 1e-4
c = futures_carry(s, f)
assert abs (c - fx_carry_from_rates(r_local, r_foreign)) < 1e-12 and abs (c - 0.04 / 1.02 ) < 1e-12
assert futures_carry(1 / s, 1 / f) < 0 < c
forward_return = (96.0 - f) / f
deposit_excess = (96.0 / s * (1 + r_foreign) - (1 + r_local)) / (1 + r_local)
assert abs (forward_return - deposit_excess) < 1e-12 and abs (forward_return + 0.0023529 ) < 1e-7
z = zero_coupon_carry([1 , 2 , 3 , 5 ], [0.02 , 0.03 , 0.035 , 0.04 ], 3.0 , 1.0 , financing_rate=0.02 )
assert abs (z["total" ] - (1.035 ** 3 / 1.03 ** 2 - 1 )) < 1e-12
assert abs ((1 + z["yield_component" ]) * (1 + z["roll_down_component" ]) - (1 + z["total" ])) < 1e-12
approx = roll_down_approximation(2 / 1.03 , 0.035 , 0.03 )
assert abs (approx - 0.0097087 ) < 1e-7 and approx < z["roll_down_component" ]
assert abs (commodity_curve_carry(100.0 , 101.0 , 1.0 , 2.0 ) + 1 / 101 ) < 1e-15
代码段二:换月,拼接价格与可交易收益(8.4 节)。
import numpy as np
import pandas as pd
from quant_course.carry import held_contract_returns, naive_splice_returns
dates = pd.period_range("2026-01" , periods=4 , freq="M" )
prices = pd.DataFrame({"A" : [102.0 , 101.0 , 100.0 , np.nan], "B" : [np.nan, np.nan, 103.0 , 102.0 ]}, index=dates)
chosen = pd.Series(["A" , "A" , "B" , "B" ], index=dates)
trade = held_contract_returns(prices, chosen).iloc[:3 ]
naive = naive_splice_returns(prices, chosen).iloc[:3 ]
assert np.allclose(trade, [101 / 102 - 1 , 100 / 101 - 1 , 102 / 103 - 1 ])
assert np.allclose(naive, [101 / 102 - 1 , 103 / 101 - 1 , 102 / 103 - 1 ])
gap = naive - trade
assert gap.iloc[0 ] == 0 and gap.iloc[2 ] == 0 and abs (gap.iloc[1 ] - (103 - 100 ) / 101 ) < 1e-12
assert abs ((1 + naive).prod() - 1 ) < 1e-12 and abs ((1 + trade).prod() - 1 + 0.029126 ) < 1e-6
代码段三:BAB 的权重、收益、中性与收缩(8.5、8.7 节)。
import pandas as pd
from quant_course.low_risk import bab_returns, bab_weights, vasicek_shrink
beta = pd.Series([0.6 , 0.9 , 1.1 , 1.4 ], index=list ("ABCD" ))
wl, wh = bab_weights(beta)
assert wl.tolist() == [0.75 , 0.25 , 0.0 , 0.0 ] and wh.tolist() == [0.0 , 0.0 , 0.25 , 0.75 ]
bl, bh = float (wl @ beta), float (wh @ beta)
assert abs (bl - 0.675 ) < 1e-12 and abs (bh - 1.325 ) < 1e-12
r = pd.Series([0.012 , 0.015 , 0.010 , 0.020 ], index=beta.index)
by_hand = (wl @ r) / bl - (wh @ r) / bh
idx = pd.period_range("2026-01" , periods=2 , freq="M" )
betas = pd.DataFrame([beta.to_numpy()] * 2 , index=idx, columns=beta.index)
out = bab_returns(pd.DataFrame([r.to_numpy()] * 2 , index=idx, columns=beta.index), betas)
assert abs (out["bab" ].iloc[0 ] - by_hand) < 1e-15 and abs (by_hand - 0.0056813 ) < 1e-7
neutral = bab_returns(pd.DataFrame([beta.to_numpy() * 0.01 ] * 2 , index=idx, columns=beta.index), betas)
assert abs (neutral["bab" ].iloc[0 ]) < 1e-15
g = lambda x, w: x / (w * x + 1 - w)
assert abs (g(0.7 , 0.6 ) - g(1.3 , 0.6 ) + 0.2480 ) < 1e-3
assert abs (g(0.7 , 1.0 ) - 1.0 ) < 1e-12 and abs (g(1.3 , 1.0 ) - 1.0 ) < 1e-12
assert abs (vasicek_shrink(0.5 ) - 0.7 ) < 1e-12 and abs (vasicek_shrink(1.8 ) - 1.48 ) < 1e-12
代码段四:收益分解与组合 carry(6.5、6.7 节)。
import numpy as np
import pandas as pd
from quant_course.carry import futures_carry, portfolio_carry
s0 = np.array([100.0 , 100.0 , 100.0 , 100.0 ])
f = np.array([99.0 , 99.7 , 100.2 , 100.6 ])
s1 = np.array([99.6 , 99.8 , 100.1 , 100.0 ])
c = futures_carry(s0, f)
r = (s1 - f) / f
assert np.allclose(r, c + (s1 - s0) / f)
w = pd.Series([0.5 , 0.5 , -0.5 , -0.5 ], index=list ("ABCD" ))
cp = portfolio_carry(w, pd.Series(c, index=w.index))
assert abs (cp - (c[:2 ].mean() - c[2 :].mean())) < 1e-15 and cp > 0
assert float (w.to_numpy() @ r) < cp
10. 图形解读
图 27-1:carry 组合的平滑累加与实际财富(构造世界)。 左图:橙色虚线是组合 carry 逐月累加(1 + ∑ C p 1+\sum C^{\mathrm p} 1 + ∑ C p ),蓝线是实际多空收益复利(起点 1,1996 年起的 359 个月),灰色竖线是全局冲击月。右图:月度多空收益的直方图,橙色是冲击月。读法:carry 累加是一条平滑向上的线,实际收益在冲击月大幅向下,之后恢复,但 359 个月的平均收益只有平均 carry 的约三分之一;最大回撤 32%,最差月份 − 12.2 % -12.2\% − 12.2% ,偏度 − 0.84 -0.84 − 0.84 。构造世界,已知被收回比例 γ = 0.5 \gamma=0.5 γ = 0.5 与冲击机制。
单一路径与 200 个新种子。 上图是一个种子(20261114)的一条路径,里面只有 3 个冲击月(平均 − 9.0 % -9.0\% − 9.0% ,其余月平均 + 0.26 % +0.26\% + 0.26% )。同一数据生成过程用 200 个新种子(20261115 至 20261314,均为整数seed而非日期;商品世界另用种子 20261115,相同整数出现在不同例子不自动证明随机流独立)各跑一遍:平均收益的中位数 0.148% 每月(5% 分位 − 0.072 % -0.072\% − 0.072% ,95% 分位 0.407%),11.5% 的世界平均收益为负;偏度全部为负(中位 − 1.42 -1.42 − 1.42 ,5% 分位 − 2.26 -2.26 − 2.26 ,95% 分位 − 0.36 -0.36 − 0.36 );最大回撤中位 32.2%(5% 与 95% 分位 51.7% 与 17.1%),74% 的世界超过 25%;所有 200 个世界的实际平均收益都低于平均组合 carry(后者 0.36% 至 0.91% 每月)。读法:本图的偏度与回撤是这个过程的典型特征,不是一次运气;但它们是我设定的冲击机制(冲击概率 1.2%、载荷与大小)的结果,不能说明真实外汇 carry 的左尾有多重。
图 27-2:同一批合约,三条序列(构造的商品世界)。 左图(对数纵轴,起点 1):蓝线是每月持有同一到期合约的一期收益并逐期复利(忽略抵押利息/费用,每期全额抵押、随财富调整名义金额,允许连续单位;不是固定一手现金账),橙线是拼接价格的复利,灰点线是现货价格。右图:曲线斜率 g = ( S − F ) / S g=(S-F)/S g = ( S − F ) / S ,蓝色阴影为现货升水(做多赚斜率),橙色为期货升水(做多付斜率)。读法:拼接价格几乎重合于现货,可交易序列偏离现货,偏离的方向由斜率的符号与持续时间决定(图中约 2010 至 2015 年长期期货升水,可交易序列大幅落后于现货;2016 年以后多数时间现货升水,可交易序列领先)。
图 27-3:行业组合的证券市场线与 beta 分组。 左图:10 个行业的全样本 beta(横轴,无量纲)与月均超额收益(纵轴,% 每月);灰色虚线是通过市场平均超额收益的 CAPM 线(0.70%/月),橙线是 10 个点的拟合线(斜率 0.41)。右图:按 60 个月滚动 beta(收缩 w = 0.6 w=0.6 w = 0.6 )排序的低 beta 一半与高 beta 一半(各 5 个行业,等权)的超额财富(对数纵轴,起点 1)。读法:拟合线比 CAPM 线平;低 beta 一半的长期财富更高。10 个点、全样本 beta 是事后估计,只做描述。
图 27-4:BAB 的月度收益与回撤(10 个行业)。 左图:每个点是一个月,横轴是该月市场超额收益(%),纵轴是 BAB 收益(% 每月);橙点是 BAB 最差的 10 个月。右图:BAB 复利财富的回撤。读法:散点向右下倾斜(样本市场回归 beta 估计为负,约 − 0.20 -0.20 − 0.20 ),最差 10 个月全部出现在市场上涨的月份;最大回撤 57%。已发布聚合收益之外的、10 个行业构造的 BAB,不含成本与融资利差。
图内“反弹”只指散点横轴的同一收益月市场上涨;它不表示先有市场反弹再造成BAB坏月份的事件顺序或因果。
11. 真实市场案例
数据与限制。 与第22–25章相同的冻结 French 10 行业价值加权月收益(处理后 CSV SHA-256 3b097d810c295d64eedfa1ece7067ff2a0707f5ca90e33935df9949251f70950,1926-07 至 2026-08 共 1,202 个月)以及 FF3 的 Mkt-RF 与 RF(处理后 SHA-256 c19770a19a0ac47ad1c29074f57234570aeaa9725212cb4fa8146a2846c52814)。行业按 4 位 SIC 码在每年 6 月末分配,7 月至次年 6 月持有(French 数据库说明页)。这是已修订的发布收益,10 个价值加权行业组合,不是个股,不是时点版本,不是可交易成交;所有收益都是超额收益(减去 RF)。第一个信号月 1929-06(需要至少 36 个月的 beta 历史),最后一个 2026-07,共 1,166 个信号月,收益月 1929-07 至 2026-08。本章没有真实的外汇远期、期货曲线或融资利率数据,所以 carry 部分没有真实数据实证,只有手算与构造世界。
设定(预先固定)。 beta:60 个月滚动 OLS(至少 36 个月),收缩 w = 0.6 w=0.6 w = 0.6 、先验 1(Frazzini 与 Pedersen 的常数);BAB:10 个行业的秩权重(式 (16)),不含融资利差;低 beta 一半与低波动一半:按收缩 beta 或过去 12 个月月收益标准差排序,最低 5 个等权对最高 5 个等权。主指标:BAB 的平均月收益及其对市场的回归。
低 beta 与低波动一半(1,166 个信号月,t t t 为把月份当独立样本的朴素值)。
组合(5 个行业,等权)
平均超额收益(% 每月)
t t t
月标准差(%)
年化夏普
对市场的 beta
alpha(% 每月,t t t )
低 beta 一半
0.706
5.42
4.44
0.55
0.78
0.196(4.21)
高 beta 一半
0.681
3.74
6.21
0.38
1.14
− 0.065 -0.065 − 0.065 (− 1.71 -1.71 − 1.71 )
低波动一半
0.623
4.60
4.63
0.47
0.82
0.085(1.95)
高波动一半
0.763
4.35
6.00
0.44
1.10
0.047(1.16)
两种排序平均有 3.6 个行业重合。低 beta 一半与高 beta 一半的平均超额收益几乎相同(0.71% 对 0.68%),所以前者的夏普更高、alpha 为正;这与证券市场线较平相符,但是 10 个行业、一个 100 年样本里的一个描述,不是对个股低 beta 效应的检验。10 个行业全样本的 beta 与平均超额收益的拟合线斜率 0.41(% 每月每单位 beta),市场平均超额收益 0.70%,拟合线比 CAPM 线平。
BAB(1,166 个月)。 平均 0.2045% 每月,t = 1.99 t=1.99 t = 1.99 (NW 滞后 6 为 2.01),标准差 3.50%,年化夏普 0.20;对市场回归:alpha 0.334 % 0.334\% 0.334% (t = 3.38 t=3.38 t = 3.38 ),beta = − 0.197 =-0.197 = − 0.197 (t = − 10.7 t=-10.7 t = − 10.7 ) ,R 2 = 0.09 R^2=0.09 R 2 = 0.09 。平均杠杆:长腿 1.27 倍,短腿 0.88 倍;长腿平均 beta 0.79,短腿 1.13;两条腿各自的平均超额收益 0.645% 与 0.715%。
缩放用 beta 的收缩权重(同一套排序,只改杠杆)。
缩放用 beta
平均(% 每月)
t t t
对市场的 beta
alpha(% 每月,t t t )
原始(w = 1.0 w=1.0 w = 1.0 )
0.466
3.94
+ 0.052 +0.052 + 0.052
0.432(3.63)
w = 0.8 w=0.8 w = 0.8
0.322
3.04
− 0.081 -0.081 − 0.081
0.375(3.54)
w = 0.6 w=0.6 w = 0.6 (预先固定的主设定)
0.205
1.99
− 0.197 -0.197 − 0.197
0.334(3.38)
在该行业样本中,缩放用的收缩越多,对市场的回归 beta 估计越负;不收缩设定的样本回归 beta 估计接近零。这与第6.9节的过度收缩机制相容,但仅凭这些回归结果不能识别最优收缩或其因果来源。但 w = 0.8 w=0.8 w = 0.8 与 w = 1.0 w=1.0 w = 1.0 是看到结果之后加的,不能把它们的更高 t t t 当作干净的检验:三种收缩设定相当于 3 次比较,若试验族确为这三项,且边际p值有效、以正态近似换算,双侧5%的Bonferroni参考门槛约为 z = 2.39 z=2.39 z = 2.39 (第22章);主设定 t = 1.99 t=1.99 t = 1.99 不超过它。这不调整本章所有分期、费用和分组变体,不能把朴素t直接当精确正态检验。
分期(w = 0.6 w=0.6 w = 0.6 )。
收益月区间
月数
平均(% 每月)
t t t
对市场 beta
alpha(% 每月,t t t )
1929-07 至 1963-06
408
0.103
0.72
− 0.18 -0.18 − 0.18
0.235(1.80)
1963-07 至 1999-12
438
0.153
1.05
− 0.14 -0.14 − 0.14
0.234(1.62)
2000-01 至 2026-08
320
0.405
1.56
− 0.33 -0.33 − 0.33
0.613(2.47)
三个分期的平均都为正,没有一个单独超过 2;2000 年后标准差更大(4.63%)。分期是按第23–26章沿用的日期划分,不是为本章选的。
融资利差敏感度(w = 0.6 w=0.6 w = 0.6 ,借款利率比无风险利率每年高 s s s ;这是假设,不是数据)。
s s s (年化)
0
0.5%
1%
2%
4%
平均(% 每月)
0.205
0.193
0.182
0.159
0.114
t t t
1.99
1.88
1.77
1.55
1.11
下跌与上涨月份。 把收益月按市场超额收益的正负事后分类(这是诊断,不是可交易的信号):下跌月 462 个,上涨月 704 个。低 beta 一半平均 − 2.86 % -2.86\% − 2.86% (下跌月)与 + 3.05 % +3.05\% + 3.05% (上涨月),高 beta 一半 − 4.55 % -4.55\% − 4.55% 与 + 4.11 % +4.11\% + 4.11% ;低 beta 一半的下跌 beta 与上涨 beta 分别为 0.81 与 0.79,高 beta 一半 1.13 与 1.19。低波动一半与高波动一半:− 3.16 % -3.16\% − 3.16% 对 − 4.25 % -4.25\% − 4.25% (下跌月)。
最差月份与回撤。 BAB 最差月是 2001-01:− 19.3 % -19.3\% − 19.3% (同月市场超额收益 + 3.3 % +3.3\% + 3.3% );最差的 10 个月(2001-01、2009-04、1933-04、1939-09、1938-06、2000-02、1999-01、1999-12、2023-01、2026-05)同月市场超额收益都为正,最大一个为 1933-04 的 + 38.8 % +38.8\% + 38.8% 。最大回撤 56.6%,谷底在 2025-10。与市场超额收益的相关 − 0.30 -0.30 − 0.30 ,与 SMB − 0.31 -0.31 − 0.31 ,与 HML + 0.03 +0.03 + 0.03 。
能说什么,不能说什么。 可以说:10 个价值加权行业组合在 1929–2026 的样本里,低 beta 一半的平均超额收益与高 beta 一半几乎相同、风险更低;BAB 的平均收益为正(+ 0.20 % +0.20\% + 0.20% 每月,t ≈ 2 t\approx2 t ≈ 2 ),在三个分期里均值为正但都不显著;样本市场回归 beta 估计为负,与收缩模型相容,但不能据此识别真实 beta、最优收缩或因果机制;最差月份是市场反弹月。不能说:(1)个股层面存在或不存在低 beta 溢价,10 个行业的结果不检验 Frazzini 与 Pedersen 的个股与跨资产结果;(2)BAB 的收益由融资约束解释,本章没有融资约束的数据;(3)可交易性:没有借券费用、保证金、做空约束与真实融资利率,成本是假设;(4)所有 t t t 值都是未经多重检验调整的朴素值,本章评价了 3 个收缩设定、3 个分期、5 个融资利差与 4 个分组(相互有重叠)。
逐资产 carry 研究缺什么。 外汇:每个货币对的现货与远期报价(含买卖价)、报价方向与交割日、对应期限的存款或隐含利率;商品:每个商品的相邻合约价格曲线、合约到期日、换月规则;债券:零息或息票收益率曲线与期货的最便宜可交割券;所有资产:融资利率、保证金与手续费,以及这些数据在 signal_time 是否已经可得。本章没有下载这些数据;Project 4 准备层的缺口表逐项列出。
12. 常见错误
错误 1:报价方向弄反。 把“外币/本币”的价格代入“本币/外币”的公式,carry 的符号就反了(8.1 节:− 3.77 % -3.77\% − 3.77% 对 + 3.92 % +3.92\% + 3.92% )。修复:每个公式旁写明 S S S 的单位,并写测试:倒数报价必须给出相反符号(代码段一)。
错误 2:把高利率当成 carry 的全部。 carry 是“价格不变”时的收益;外币升值或贬值才决定实际结果(8.1 节:高 4 个百分点的外币利率被 4% 的贬值抵消)。修复:报告 C C C 与价格变动两项(6.5)。
错误 3:把连续期货价格当作可交易盈亏。 拼接价格在换月日含新旧合约的价差(6.6、8.4)。修复:用单合约两端价格算收益,再复利(代码段二);报告换月规则与到期日。
错误 4:混用不同期限的合约而不除以期限差。 商品曲线的 carry 是每单位时间的量,T 2 − T 1 T_2-T_1 T 2 − T 1 不是 1 个月时必须除以它(6.4);比较不同商品时单位要统一。
错误 5:用错久期估计滑降。 滑降用滑降后(更短)债券的久期;用原债券久期会高估(8.2:1.449% 对精确的 0.973%)。
错误 6:把组合 carry 当作预期收益。 按 carry 排序,在第6.7节的同资本与腿权重条件下组合carry非负,严格正还需高低有差异;实际收益被价格变动收回一部分,还可能为负(10 节:平均收益只有平均 carry 的约 35%)。
错误 7:把低 beta 当低波动,或反过来。 σ 2 = β 2 σ m 2 + σ ε 2 \sigma^2=\beta^2\sigma_m^2+\sigma_\varepsilon^2 σ 2 = β 2 σ m 2 + σ ε 2 ,两个排序可以相反(27-E08);10 个行业里低 beta 一半与低波动一半平均只重合 3.6 个(11 节)。
错误 8:把收缩后的 beta 缩放当作市场中性。 第6.9节有噪声模型在腿估计跨1、缩放正分母及所给条件期望假设下,过度收缩给出负的条件真实暴露;无条件平均另需可积性。11节的 − 0.20 -0.20 − 0.20 是历史回归估计,不是该因果机制的识别。修复:永远报告 BAB 对市场的回归 beta,并报告缩放用的收缩权重;估计 beta 的代数中性不等于已知真实市场中性;经验评价须报告样本回归估计及其不确定性。
错误 9:杠杆没有成本。 BAB 的长腿需要借入 1 / β ^ L − 1 1/\hat\beta_L-1 1/ β ^ L − 1 单位;借款利差、保证金、做空费用都进收益(8.5、11 节的敏感度);比较杠杆后的夏普与未杠杆的夏普时要写明融资假设。
错误 10:beta 或波动率用了未来数据。 居中窗口或全样本 beta 在 signal_time 时不可得。修复:行 s s s 只用 ≤ s \le s ≤ s 的月份,并测试“改动最后一行不改变此前的 beta”:
import numpy as np
import pandas as pd
from quant_course.low_risk import rolling_beta
rng = np.random.default_rng(3 )
idx = pd.period_range("2000-01" , periods=60 , freq="M" )
m = pd.Series(rng.normal(0 , 0.04 , 60 ), index=idx)
a = pd.DataFrame({"x" : 1.2 * m + rng.normal(0 , 0.01 , 60 )}, index=idx)
b = rolling_beta(a, m, window=24 , min_periods=12 )
a2 = a.copy(); a2.iloc[-1 , 0 ] += 0.5
b2 = rolling_beta(a2, m, window=24 , min_periods=12 )
assert b["x" ].iloc[:-1 ].equals(b2["x" ].iloc[:-1 ]) and b["x" ].iloc[-1 ] != b2["x" ].iloc[-1 ]
错误 11:把事后的“下跌月份”当信号。 11 节按“该月市场是否下跌”分类是诊断,信号时点并不知道下个月的市场方向;可以用的状态变量必须只用 ≤ s \le s ≤ s 的信息(第25章的熊市状态)。
错误 12:用一条路径或一次选择下结论。 构造世界里 3 个冲击月就决定了偏度;真实数据里3收缩×3分期构成9格的相互重叠网格,但不覆盖费用/分组等全部已看变体(第22章)。修复:用新种子重复,记录所有变体,不拿事后选的设定当主结果。
13. 量化研究应用
跨资产方法候选的数据字段契约(不是当前Project 4机器字段)。
字段
来源
时间字段
单位
缺失与口径
spot、forward
外汇报价(买卖价)
报价时点、交割日
本币/外币
报价方向、期限、买卖价;本课程现有数据中没有
futures_curve
期货各到期合约的结算价
报价日、到期日
价格
换月规则;本课程现有数据中没有
yield_curve
零息或息票收益率曲线
日期
年化小数
复利约定;本课程现有数据中没有
financing_rate、margin
经纪商或回购
日期
小数、比例
借款利差、保证金;本课程现有数据中没有
market_excess
FF3 的 Mkt-RF
月
小数
与资产同一宇宙;已有(冻结快照)
beta、vol
计算
signal_time
无量纲、年化
窗口、最少月数、收缩权重写入计划;只用 ≤ s \le s ≤ s 的数据
研究流程(10 个行业,真实数据)。 冻结计划:假设“收缩后的 60 个月 beta 低的行业下月超额收益不更低,且 BAB 的平均收益为正”,信号为 vasicek_shrink(rolling_beta(...), 0.6),主指标:BAB 的平均月收益与对市场回归的 beta;先报告两个半组,再报告 BAB,收缩权重与窗口在看结果之前固定;其他设定全部进第22章的账本。结果见 11 节:BAB 平均 0.2045% 每月(t = 1.99 t=1.99 t = 1.99 ),样本市场回归 beta 估计 − 0.20 -0.20 − 0.20 ;三个分期均值都为正但都不显著;融资利差每年 2% 时平均 0.159%。构造世界的结果只为已核输入上的函数与流程提供有限工程证据,不证明任意输入都正确,不是真实世界的效应。
对 Project 4 的约束。 (1) beta、波动率只用 ≤ \le ≤ 信号月的数据,收缩权重与窗口写入计划;(2) 凡是声称“市场中性”的组合,报告对市场的回归 beta 与 t t t ;(3) 杠杆化组合报告杠杆倍数、借款假设与融资利差敏感度;(4) carry 与期货研究在没有真实报价、曲线与融资数据时不写任何经验结论,缺口表见上;(5) 报告最差月份、最大回撤与同月市场收益;(6) 所有变体进账本;(7) 低风险因子与价值、动量、质量的相关与拥挤放到第28章处理。
13.1 从因子家族到当前 Project 4:先核输入,再谈接入
当前 P4 的机器合同只合成股票价值、动量、质量的七个原始字段(第24–26章)。本章保留 carry、低风险和 BAB 作为方法候选;下面的接口表解释它们为什么尚未进入该合成,不把“本章讲过”当作“工程已实现”。
方法候选
此章能计算什么
当前P4缺少的对应输入/合同
FX carry
给定同期限报价的 ( S − F ) / X (S-F)/X ( S − F ) / X
同时点现货/远期、交割日、买卖价、资本与融资约定
债券 carry
不变曲线下持有与滑降
逐债现金流/曲线、期限与复利制、融资和可成交价格
商品 carry
相邻到期合约价差及同合约盈亏
带合约身份的曲线、到期/换月/抵押及费用
低波动/低beta/BAB
截至信号时估计风险、排序与缩放
逐股可用收益/市场基准、估计窗口、收缩与融资/借券规则
French 行业月收益只支持本章已有的聚合行业诊断,既不提供逐股上述字段,也不证明 carry 的真实溢价。将来要接入,先指定报价和分母、因果时钟、缺失与退化政策,再由第28章定义合成与组合约束。当前 C13 对 P4 的修复仅对齐已声明的上市支持集、60名门槛和行业投影/gross;不新增本章因子。第22–23章的研究账本与IC推断、第24–26章的七字段定义继续作为先修链接,不重作经验检验。
14. 本章小结
carry 是“市场条件不变时的收益”,期货里 C = ( S − F ) / X C=(S-F)/X C = ( S − F ) / X ,外汇远期 C = ( r ∗ − r ) / ( 1 + r ) C=(r^*-r)/(1+r) C = ( r ∗ − r ) / ( 1 + r ) (报价为本币/外币),零息债是收益率部分加滑降部分,商品是 ( F 1 − F 2 ) / ( F 2 ( T 2 − T 1 ) ) (F^1-F^2)/(F^2(T_2-T_1)) ( F 1 − F 2 ) / ( F 2 ( T 2 − T 1 )) ;收益 = C + =C+ = C + 价格变动,价格变动可以收回 carry 的一大部分;同资本口径的高减低组合carry按所述权重条件非负,实际收益仍可负。连续期货价格拼接不等于可交易收益,两者之差是换月价差。低 beta 与低波动不同:σ 2 = β 2 σ m 2 + σ ε 2 \sigma^2=\beta^2\sigma_m^2+\sigma_\varepsilon^2 σ 2 = β 2 σ m 2 + σ ε 2 ;BAB 把低 beta 腿加杠杆、高 beta 腿去杠杆,估计 beta 下对市场中性;无噪声模型在正分母区间内向1收缩给出负暴露;有噪声模型在第6.9节完整条件下最优收缩给出条件中性,过度/不足收缩的符号还需腿估计跨1和正分母;历史负beta不识别该机制。10 个行业组合上:低 beta 一半的平均超额收益与高 beta 一半几乎相同、风险更低;BAB 平均 0.20% 每月(t ≈ 2 t\approx2 t ≈ 2 ),样本市场回归 beta 估计 − 0.20 -0.20 − 0.20 ,分期均值为正但都不显著,最差月份是市场反弹月,最大回撤 57%。构造的外汇世界里,平均收益只有平均 carry 的约三分之一,偏度为负。适用边界:10 个行业不是个股;没有真实外汇、期货与融资数据;成本与融资利差是假设;构造世界的冲击机制是设定的。
15. 练习
27-E01(手算) 报价为美元/欧元,S = 1.10 S=1.10 S = 1.10 ;美元年利率 4 % 4\% 4% ,欧元年利率 2 % 2\% 2% ,一年期简单利率,CIP 成立。求 F F F 、做多欧元远期的 carry(用价格与用利率各算一次)、做空欧元远期的 carry;若一年后现货为 1.12,求做多远期的收益,并用存款比较验证。
27-E02(手算) 零息收益率(年复利):1 年 3%、2 年 3.5%、3 年 4%、5 年 4.5%。买入 3 年零息债持有 1 年,曲线不变。求总收益、收益率部分、滑降部分,以及扣除 3% 融资后的超额收益;再用修正久期近似滑降,并说明应该用哪个债券的久期。
27-E03(手算) 某商品近月(剩余 1 个月)80,次近月(剩余 3 个月)82。按第6.4节线性代理且以远月价82作资本,求每月carry;若同一抵押资本每月赚0.3%,总收益是多少?它是现货升水还是期货升水?
27-E04(手算) 合约 A 在第 0、1、2 期的价格是 60、59、58,合约 B 在第 2、3 期是 61、60;持有 A 到第 2 期,再持有 B;忽略利息与费用,逐期全额抵押、随财富调整名义金额(允许连续单位)。求该再平衡指数的逐期收益与累计、拼接价格的逐期收益与累计,以及换月日两者之差,并验证它等于新旧合约在换月日的价差除以旧价。
27-E05(手算) 四种货币每月 carry 为 0.5 % , 0.3 % , − 0.2 % , − 0.6 % 0.5\%,0.3\%,-0.2\%,-0.6\% 0.5% , 0.3% , − 0.2% , − 0.6% ,下月价格变动 Δ S / F \Delta S/F Δ S / F 为 − 0.4 % , − 0.2 % , + 0.1 % , + 0.5 % -0.4\%,-0.2\%,+0.1\%,+0.5\% − 0.4% , − 0.2% , + 0.1% , + 0.5% 。多头为前两个、空头为后两个,权重 ± 0.5 \pm0.5 ± 0.5 。求组合 carry、组合收益、被收回的比例,以及收益对 carry 的横截面回归斜率。
27-E06(手算) 四个证券的 beta 估计 0.5 , 0.8 , 1.3 , 1.6 0.5,0.8,1.3,1.6 0.5 , 0.8 , 1.3 , 1.6 ,下月超额收益 1.0 % , 1.2 % , 1.5 % , 2.5 % 1.0\%,1.2\%,1.5\%,2.5\% 1.0% , 1.2% , 1.5% , 2.5% 。求 BAB 的权重、两条腿的 beta 与杠杆、BAB 收益;若借款利率每月高 0.3 % 0.3\% 0.3% ,长腿借款成本与扣除成本后的收益。
27-E07(手算) 某低 beta 腿的真实 beta 为 0.4,高 beta 腿为 1.6,没有估计噪声。分别以 w = 1 w=1 w = 1 与 w = 0.6 w=0.6 w = 0.6 (先验 1)收缩的 beta 缩放,求两条腿的真实暴露与 BAB 的真实 beta。
27-E08(概念与手算) 市场波动率 16%;X:β = 0.5 \beta=0.5 β = 0.5 、特质波动 25%;Y:β = 1.2 \beta=1.2 β = 1.2 、特质波动 5%。求两者的总波动率,说明按 beta 与按波动率排序的名次,并说明低 beta 组合为什么需要杠杆才能与市场比较。
27-N01(现金流与接口诊断) 给定一份合约 S = 102 , F = 100 , r f = 1 % S=102,F=100,r^f=1\% S = 102 , F = 100 , r f = 1% ,真实到期现货 99。(a)分别用 X = 50 , 100 X=50,100 X = 50 , 100 算 carry、价格变动项、超额收益、抵押利息和总收益。(b)给定 BAB 腿 beta 为 0.675 , 1.325 0.675,1.325 0.675 , 1.325 ,说明风险资产净额/gross/估计beta和融资腿各是多少;能否据此称它美元中性?(c)若想把 FX carry 接入当前 P4,列出至少三项缺失输入,说明为何已有 mom_12_1 不能代替远期。
16. 编程练习
27-P01 用 zero_coupon_carry 复现 27-E02,断言总收益 = ( 1 + 收益率部分 ) ( 1 + 滑降部分 ) − 1 =(1+\text{收益率部分})(1+\text{滑降部分})-1 = ( 1 + 收益率部分 ) ( 1 + 滑降部分 ) − 1 与手算值一致,并断言久期近似小于精确滑降。验收:三条断言通过。
27-P02 用 held_contract_returns 与 naive_splice_returns 复现 27-E04,断言换月日的差等于新旧合约在该日的价差除以旧价,非换月日差为零,拼接累计为 0。验收:四条断言通过。
27-P03 模拟 500 只证券:真实 beta 均值 1、标准差 0.25,估计噪声标准差 0.25(最优收缩权重 0.5);用 bab_weights 构造 BAB,在 w = 1 , 0.5 , 0.2 w=1,0.5,0.2 w = 1 , 0.5 , 0.2 下计算 BAB 的真实 beta(用真实 beta 与缩放用 beta 之比),各取 200 个模拟的平均。验收:w = 1 w=1 w = 1 时大于 0.3,w = 0.5 w=0.5 w = 0.5 时绝对值小于 0.05,w = 0.2 w=0.2 w = 0.2 时小于 − 0.15 -0.15 − 0.15 。
17. 挑战题
27-C01(推导) 设 BAB 两条腿的真实 beta 为 0 < x L < 1 < x H 0<x_L<1<x_H 0 < x L < 1 < x H ,缩放用的 beta 为 β ^ = w x + ( 1 − w ) \hat\beta=wx+(1-w) β ^ = w x + ( 1 − w ) ,0 < w ≤ 1 0<w\le1 0 < w ≤ 1 (于是两条腿的缩放 beta 都严格为正)。推出真实组合 beta = g ( x L ) − g ( x H ) =g(x_L)-g(x_H) = g ( x L ) − g ( x H ) ,g ( x ) = x / ( w x + 1 − w ) g(x)=x/(wx+1-w) g ( x ) = x / ( w x + 1 − w ) ;证明 w < 1 w<1 w < 1 时它严格为负、w = 1 w=1 w = 1 时为零;再设估计带噪声 β ^ = β + e \hat\beta=\beta+e β ^ = β + e (各证券的 β i ∼ N ( 1 , σ β 2 ) \beta_i\sim N(1,\sigma_\beta^2) β i ∼ N ( 1 , σ β 2 ) 、e i ∼ N ( 0 , σ e 2 ) e_i\sim N(0,\sigma_e^2) e i ∼ N ( 0 , σ e 2 ) ,全部相互独立),证明用 w ∗ = σ β 2 / ( σ β 2 + σ e 2 ) w^*=\sigma_\beta^2/(\sigma_\beta^2+\sigma_e^2) w ∗ = σ β 2 / ( σ β 2 + σ e 2 ) 收缩时 E [ β i ∣ β ^ ] E[\beta_i\mid\hat\beta] E [ β i ∣ β ^ ] 等于缩放用的 beta,两条腿给定 β ^ \hat\beta β ^ 的条件真实暴露为 1(在 s L , s H ≠ 0 s_L,s_H\neq0 s L , s H = 0 的观测区域),并在 β ^ L < 1 < β ^ H \hat\beta_L<1<\hat\beta_H β ^ L < 1 < β ^ H 、s L , s H > 0 s_L,s_H>0 s L , s H > 0 的条件下说明为什么收缩不足与过度收缩给出相反符号的暴露(再举例说明去掉正分母条件时结论可能反号);只给矩与独立而不给正态时,结论要改成“最佳线性预测”。额外先修:线性最小二乘(第6章)。评分:第一部分 40,第二部分 40,符号讨论 20。
27-C02(开放) 为“外汇 carry 的真实数据研究”写数据缺口表与冻结计划:列出每个字段(现货、远期、买卖价、报价方向、交割日、利率、融资利差)的真实可得来源、时间字段与缺失规则;说明在没有这些数据时哪些结论不能写;给出把“carry 平均为正”与“carry 收益为正”分开检验的两个指标,以及崩溃风险的两个报告指标。评分:缺口表 30,冻结计划 30,不能写的结论 20,指标 20。
18. 完整答案与解题说明
27-E01 F = 1.10 × 1.04 / 1.02 = 1.12157 F=1.10\times1.04/1.02=1.12157 F = 1.10 × 1.04/1.02 = 1.12157 。做多欧元:C = ( S − F ) / F = ( 1.10 − 1.12157 ) / 1.12157 = − 1.923 % C=(S-F)/F=(1.10-1.12157)/1.12157=-1.923\% C = ( S − F ) / F = ( 1.10 − 1.12157 ) /1.12157 = − 1.923% ;用利率 ( r ∗ − r ) / ( 1 + r ) = ( 0.02 − 0.04 ) / 1.04 = − 1.923 % (r^*-r)/(1+r)=(0.02-0.04)/1.04=-1.923\% ( r ∗ − r ) / ( 1 + r ) = ( 0.02 − 0.04 ) /1.04 = − 1.923% ,一致。做空欧元:C = ( F − S ) / F = + 1.923 % C=(F-S)/F=+1.923\% C = ( F − S ) / F = + 1.923% (美元利率更高,持有美元一侧赚利差)。现货 1.12:做多远期收益 ( 1.12 − 1.12157 ) / 1.12157 = − 0.140 % (1.12-1.12157)/1.12157=-0.140\% ( 1.12 − 1.12157 ) /1.12157 = − 0.140% ;存款比较:欧元存款换回美元 1.12 / 1.10 × 1.02 = 1.03855 1.12/1.10\times1.02=1.03855 1.12/1.10 × 1.02 = 1.03855 ,美元存款 1.04 1.04 1.04 ,超额 ( 1.03855 − 1.04 ) / 1.04 = − 0.140 % (1.03855-1.04)/1.04=-0.140\% ( 1.03855 − 1.04 ) /1.04 = − 0.140% ,一致。超额不亏要求现货至少等于 F F F ,即欧元升值至少约 1.96 % 1.96\% 1.96% ;严格超过 F F F 才有正的远期超额收益。
27-E02 y 3 = 4 % y_3=4\% y 3 = 4% ,y 2 = 3.5 % y_2=3.5\% y 2 = 3.5% 。总收益 = 1.04 3 / 1.035 2 − 1 = 1.124864 / 1.071225 − 1 = 5.0073 % =1.04^3/1.035^2-1=1.124864/1.071225-1=5.0073\% = 1.0 4 3 /1.03 5 2 − 1 = 1.124864/1.071225 − 1 = 5.0073% 。收益率部分 4.0 % 4.0\% 4.0% ;滑降部分 ( 1.04 / 1.035 ) 2 − 1 = 0.9685 % (1.04/1.035)^2-1=0.9685\% ( 1.04/1.035 ) 2 − 1 = 0.9685% ;1.04 × 1.009685 = 1.050073 1.04\times1.009685=1.050073 1.04 × 1.009685 = 1.050073 。扣除 3% 融资:超额 2.0073 % 2.0073\% 2.0073% 。久期近似:滑降后的 2 年零息债修正久期 2 / 1.035 = 1.9324 2/1.035=1.9324 2/1.035 = 1.9324 ,滑降 ≈ 1.9324 × ( 0.04 − 0.035 ) = 0.9662 % \approx1.9324\times(0.04-0.035)=0.9662\% ≈ 1.9324 × ( 0.04 − 0.035 ) = 0.9662% ,与精确的 0.9685% 相差 0.002 个百分点;用滑降前 3 年债的久期 3 / 1.04 = 2.885 3/1.04=2.885 3/1.04 = 2.885 会得 1.442%,高估。
27-E03 C = ( 80 − 82 ) / ( 82 × 2 ) = − 1.2195 % C=(80-82)/(82\times2)=-1.2195\% C = ( 80 − 82 ) / ( 82 × 2 ) = − 1.2195% 每月(简单年化 − 14.63 % -14.63\% − 14.63% ,假设曲线不变);期货升水(远月更贵)。在题设线性每月代理与资本口径下,抵押资本赚0.3% 每月:总收益 − 1.2195 % + 0.3 % = − 0.9195 % -1.2195\%+0.3\%=-0.9195\% − 1.2195% + 0.3% = − 0.9195% 每月。
27-E04 可交易:A 的 59 / 60 − 1 = − 1.667 % 59/60-1=-1.667\% 59/60 − 1 = − 1.667% ,58 / 59 − 1 = − 1.695 % 58/59-1=-1.695\% 58/59 − 1 = − 1.695% ;B 的 60 / 61 − 1 = − 1.639 % 60/61-1=-1.639\% 60/61 − 1 = − 1.639% ;累计 0.98333 × 0.98305 × 0.98361 − 1 = − 4.918 % 0.98333\times0.98305\times0.98361-1=-4.918\% 0.98333 × 0.98305 × 0.98361 − 1 = − 4.918% 。拼接序列 60 , 59 , 61 , 60 60,59,61,60 60 , 59 , 61 , 60 :− 1.667 % -1.667\% − 1.667% 、+ 3.390 % +3.390\% + 3.390% (59→61)、− 1.639 % -1.639\% − 1.639% ,累计 0 0 0 。换月日差 3.390 − ( − 1.695 ) = 5.085 % 3.390-(-1.695)=5.085\% 3.390 − ( − 1.695 ) = 5.085% ,等于 ( 61 − 58 ) / 59 = 5.085 % (61-58)/59=5.085\% ( 61 − 58 ) /59 = 5.085% :新合约 61 与旧合约 58 在第 2 期的价差除以旧价 59(期货升水:新合约更贵)。拼接序列把这 5.1% 当作收益,实际没有人赚到。
27-E05 组合 carry = 0.5 ( 0.5 + 0.3 ) − 0.5 ( − 0.2 − 0.6 ) = 0.4 + 0.4 = 0.8 % =0.5(0.5+0.3)-0.5(-0.2-0.6)=0.4+0.4=0.8\% = 0.5 ( 0.5 + 0.3 ) − 0.5 ( − 0.2 − 0.6 ) = 0.4 + 0.4 = 0.8% 。各货币收益 = C + Δ S / F = 0.1 % , 0.1 % , − 0.1 % , − 0.1 % =C+\Delta S/F=0.1\%,0.1\%,-0.1\%,-0.1\% = C + Δ S / F = 0.1% , 0.1% , − 0.1% , − 0.1% ;组合收益 0.5 ( 0.2 ) − 0.5 ( − 0.2 ) = 0.2 % 0.5(0.2)-0.5(-0.2)=0.2\% 0.5 ( 0.2 ) − 0.5 ( − 0.2 ) = 0.2% ;被收回 0.6 % 0.6\% 0.6% ,占 75%,实际收益只有 carry 的 25%。回归:C ˉ = 0 \bar C=0 C ˉ = 0 ,r ˉ = 0 \bar r=0 r ˉ = 0 ,斜率 = ∑ C r / ∑ C 2 = ( 0.05 + 0.03 + 0.02 + 0.06 ) / ( 0.25 + 0.09 + 0.04 + 0.36 ) = 0.16 / 0.74 = 0.216 =\sum Cr/\sum C^2=(0.05+0.03+0.02+0.06)/(0.25+0.09+0.04+0.36)=0.16/0.74=0.216 = ∑ C r / ∑ C 2 = ( 0.05 + 0.03 + 0.02 + 0.06 ) / ( 0.25 + 0.09 + 0.04 + 0.36 ) = 0.16/0.74 = 0.216 (以百分点计,比例不变);若仅用第6.5节的线性斜率参数化,得到 1 − b ≈ 78.38 % 1-b\approx78.38\% 1 − b ≈ 78.38% ;它是该四货币截面OLS的描述,不是上面组合回吐75%的同一参数,也不识别总体精确 γ \gamma γ 。
27-E06 名次 1 , 2 , 3 , 4 1,2,3,4 1 , 2 , 3 , 4 :w L = ( 0.75 , 0.25 , 0 , 0 ) w_L=(0.75,0.25,0,0) w L = ( 0.75 , 0.25 , 0 , 0 ) ,w H = ( 0 , 0 , 0.25 , 0.75 ) w_H=(0,0,0.25,0.75) w H = ( 0 , 0 , 0.25 , 0.75 ) 。β ^ L = 0.75 × 0.5 + 0.25 × 0.8 = 0.575 \hat\beta_L=0.75\times0.5+0.25\times0.8=0.575 β ^ L = 0.75 × 0.5 + 0.25 × 0.8 = 0.575 ;β ^ H = 0.25 × 1.3 + 0.75 × 1.6 = 1.525 \hat\beta_H=0.25\times1.3+0.75\times1.6=1.525 β ^ H = 0.25 × 1.3 + 0.75 × 1.6 = 1.525 ;杠杆 1 / 0.575 = 1.739 1/0.575=1.739 1/0.575 = 1.739 、1 / 1.525 = 0.656 1/1.525=0.656 1/1.525 = 0.656 。r L = 0.75 × 1.0 + 0.25 × 1.2 = 1.05 % r_L=0.75\times1.0+0.25\times1.2=1.05\% r L = 0.75 × 1.0 + 0.25 × 1.2 = 1.05% ,r H = 0.25 × 1.5 + 0.75 × 2.5 = 2.25 % r_H=0.25\times1.5+0.75\times2.5=2.25\% r H = 0.25 × 1.5 + 0.75 × 2.5 = 2.25% ;r B A B = 1.05 / 0.575 − 2.25 / 1.525 = 1.826 % − 1.475 % = 0.351 % r^{\mathrm{BAB}}=1.05/0.575-2.25/1.525=1.826\%-1.475\%=0.351\% r BAB = 1.05/0.575 − 2.25/1.525 = 1.826% − 1.475% = 0.351% 。长腿借入 0.739 0.739 0.739 单位,借款成本 0.3 % × 0.739 = 0.222 % 0.3\%\times0.739=0.222\% 0.3% × 0.739 = 0.222% ;扣除后 0.351 − 0.222 = 0.129 % 0.351-0.222=0.129\% 0.351 − 0.222 = 0.129% 。短腿杠杆 0.656 < 1 0.656<1 0.656 < 1 ,不借款。
27-E07 w = 1 w=1 w = 1 :缩放用 beta 等于真实 beta,长腿真实暴露 0.4 / 0.4 = 1 0.4/0.4=1 0.4/0.4 = 1 ,短腿 1.6 / 1.6 = 1 1.6/1.6=1 1.6/1.6 = 1 ,BAB beta = 0 =0 = 0 。w = 0.6 w=0.6 w = 0.6 :缩放用 0.6 × 0.4 + 0.4 = 0.64 0.6\times0.4+0.4=0.64 0.6 × 0.4 + 0.4 = 0.64 与 0.6 × 1.6 + 0.4 = 1.36 0.6\times1.6+0.4=1.36 0.6 × 1.6 + 0.4 = 1.36 ;长腿真实暴露 0.4 / 0.64 = 0.625 0.4/0.64=0.625 0.4/0.64 = 0.625 ,短腿 1.6 / 1.36 = 1.176 1.6/1.36=1.176 1.6/1.36 = 1.176 ;BAB beta = 0.625 − 1.176 = − 0.551 =0.625-1.176=-0.551 = 0.625 − 1.176 = − 0.551 。向 1 收缩使低 beta 腿的杠杆不足、高 beta 腿的去杠杆不足,净暴露为负。真实中性所需的空头规模为 1 / 1.6 = 0.625 1/1.6=0.625 1/1.6 = 0.625 ,收缩后却取 1 / 1.36 = 0.735294 1/1.36=0.735294 1/1.36 = 0.735294 ,空头更大,因此其真实负暴露更大。
27-E08
σ X = ( 0.5 × 0.16 ) 2 + 0.25 2 = 0.0064 + 0.0625 = 26.2 % , σ Y = ( 1.2 × 0.16 ) 2 + 0.05 2 = 0.036864 + 0.0025 = 19.8 % .
\begin{aligned}\sigma_X&=\sqrt{(0.5\times0.16)^2+0.25^2}=\sqrt{0.0064+0.0625}=26.2\%,\\ \sigma_Y&=\sqrt{(1.2\times0.16)^2+0.05^2}=\sqrt{0.036864+0.0025}=19.8\%.\end{aligned}
σ X σ Y = ( 0.5 × 0.16 ) 2 + 0.2 5 2 = 0.0064 + 0.0625 = 26.2% , = ( 1.2 × 0.16 ) 2 + 0.0 5 2 = 0.036864 + 0.0025 = 19.8%. 按 beta:X 低 Y 高;按波动率:Y 低 X 高,名次相反。低 beta 组合 β p < 1 \beta_p<1 β p < 1 ,要与市场比较同样的市场暴露,需要 1 / β p 1/\beta_p 1/ β p 倍(β p = 0.7 \beta_p=0.7 β p = 0.7 时 1.43 倍),杠杆有融资成本与约束。
27-P01
from quant_course.carry import roll_down_approximation, zero_coupon_carry
z = zero_coupon_carry([1 , 2 , 3 , 5 ], [0.03 , 0.035 , 0.04 , 0.045 ], 3.0 , 1.0 , financing_rate=0.03 )
assert abs (z["total" ] - (1.04 ** 3 / 1.035 ** 2 - 1 )) < 1e-12 and abs (z["total" ] - 0.050073 ) < 1e-6
assert abs ((1 + z["yield_component" ]) * (1 + z["roll_down_component" ]) - 1 - z["total" ]) < 1e-12
assert abs (z["excess_total" ] - 0.020073 ) < 1e-6
assert roll_down_approximation(2 / 1.035 , 0.04 , 0.035 ) < z["roll_down_component" ]
27-P02
import numpy as np
import pandas as pd
from quant_course.carry import held_contract_returns, naive_splice_returns
dates = pd.period_range("2026-01" , periods=4 , freq="M" )
prices = pd.DataFrame({"A" : [60.0 , 59.0 , 58.0 , np.nan], "B" : [np.nan, np.nan, 61.0 , 60.0 ]}, index=dates)
chosen = pd.Series(["A" , "A" , "B" , "B" ], index=dates)
trade, naive = held_contract_returns(prices, chosen).iloc[:3 ], naive_splice_returns(prices, chosen).iloc[:3 ]
gap = naive - trade
assert abs (gap.iloc[1 ] - (61 - 58 ) / 59 ) < 1e-12 and gap.iloc[0 ] == 0 and gap.iloc[2 ] == 0
assert abs ((1 + naive).prod() - 1 ) < 1e-12 and abs ((1 + trade).prod() - 1 + 0.049180 ) < 1e-6
27-P03
import numpy as np
import pandas as pd
from quant_course.low_risk import bab_weights
n, worlds = 500 , 200
realised = {}
for w in (1.0 , 0.5 , 0.2 ):
betas = []
for k in range (worlds):
rng = np.random.default_rng(1000 + k)
true = rng.normal(1.0 , 0.25 , n)
est = true + rng.normal(0.0 , 0.25 , n)
scaled = pd.Series(w * est + (1 - w))
wl, wh = bab_weights(scaled)
betas.append((wl * true).sum () / (wl * scaled).sum () - (wh * true).sum () / (wh * scaled).sum ())
realised[w] = float (np.mean(betas))
assert realised[1.0 ] > 0.3 and abs (realised[0.5 ]) < 0.05 and realised[0.2 ] < -0.15
27-C01 真实组合 beta:长腿 w L ⊤ β T / β ^ L w_L^\top\beta^T/\hat\beta_L w L ⊤ β T / β ^ L ,短腿 w H ⊤ β T / β ^ H w_H^\top\beta^T/\hat\beta_H w H ⊤ β T / β ^ H ;无噪声时 β ^ = w x + ( 1 − w ) \hat\beta=wx+(1-w) β ^ = w x + ( 1 − w ) ,所以两条腿分别是 g ( x L ) g(x_L) g ( x L ) 与 g ( x H ) g(x_H) g ( x H ) ,g ( x ) = x / ( w x + 1 − w ) g(x)=x/(wx+1-w) g ( x ) = x / ( w x + 1 − w ) 。求导:g ′ ( x ) = [ ( w x + 1 − w ) − w x ] / ( w x + 1 − w ) 2 = ( 1 − w ) / ( w x + 1 − w ) 2 g'(x)=\bigl[(wx+1-w)-wx\bigr]/(wx+1-w)^2=(1-w)/(wx+1-w)^2 g ′ ( x ) = [ ( w x + 1 − w ) − w x ] / ( w x + 1 − w ) 2 = ( 1 − w ) / ( w x + 1 − w ) 2 ,w < 1 w<1 w < 1 时严格为正。g g g 在 x = − ( 1 − w ) / w x=-(1-w)/w x = − ( 1 − w ) / w 有极点,导数为正只说明它在极点两侧各自递增;题设 0 < x L < x H 0<x_L<x_H 0 < x L < x H 使两条腿的缩放 beta w x + 1 − w > 0 wx+1-w>0 w x + 1 − w > 0 ,即两点都在极点右侧同一区间,所以 g ( x L ) < g ( x H ) g(x_L)<g(x_H) g ( x L ) < g ( x H ) :BAB 的真实 beta < 0 <0 < 0 (反例:x L = − 1 x_L=-1 x L = − 1 ,x H = 2 x_H=2 x H = 2 ,w = 0.6 w=0.6 w = 0.6 时缩放 beta 为 − 0.2 -0.2 − 0.2 与 1.6 1.6 1.6 ,差为 5 − 1.25 = + 3.75 5-1.25=+3.75 5 − 1.25 = + 3.75 );w = 1 w=1 w = 1 时 g ≡ 1 g\equiv1 g ≡ 1 ,差为零。数值(x L = 0.7 x_L=0.7 x L = 0.7 ,x H = 1.3 x_H=1.3 x H = 1.3 ,w = 0.6 w=0.6 w = 0.6 ):0.7 / 0.82 − 1.3 / 1.18 = 0.8537 − 1.1017 = − 0.248 0.7/0.82-1.3/1.18=0.8537-1.1017=-0.248 0.7/0.82 − 1.3/1.18 = 0.8537 − 1.1017 = − 0.248 。噪声情形:腿的权重只由 β ^ \hat\beta β ^ 的名次决定。设各证券的 ( β i , e i ) (\beta_i,e_i) ( β i , e i ) 截面独立且联合正态,则给定整个向量 β ^ \hat\beta β ^ 的条件期望等于只给定 β ^ i \hat\beta_i β ^ i 的条件期望,E [ β i ∣ β ^ ] = E [ β i ∣ β ^ i ] = 1 + w ∗ ( β ^ i − 1 ) E[\beta_i\mid\hat\beta]=E[\beta_i\mid\hat\beta_i]=1+w^*(\hat\beta_i-1) E [ β i ∣ β ^ ] = E [ β i ∣ β ^ i ] = 1 + w ∗ ( β ^ i − 1 ) ,w ∗ = C o v ( β , β ^ ) / V a r ( β ^ ) = σ β 2 / ( σ β 2 + σ e 2 ) w^*=\mathrm{Cov}(\beta,\hat\beta)/\mathrm{Var}(\hat\beta)=\sigma_\beta^2/(\sigma_\beta^2+\sigma_e^2) w ∗ = Cov ( β , β ^ ) / Var ( β ^ ) = σ β 2 / ( σ β 2 + σ e 2 ) 。缩放用的收缩 beta s i = w β ^ i + 1 − w s_i=w\hat\beta_i+1-w s i = w β ^ i + 1 − w ,长腿 s L = ∑ i w L , i s i s_L=\sum_iw_{L,i}s_i s L = ∑ i w L , i s i ,真实腿 beta β L T = ∑ i w L , i β i \beta^T_L=\sum_iw_{L,i}\beta_i β L T = ∑ i w L , i β i ,所以 E [ β L T ∣ β ^ ] = w ∗ β ^ L + 1 − w ∗ E[\beta^T_L\mid\hat\beta]=w^*\hat\beta_L+1-w^* E [ β L T ∣ β ^ ] = w ∗ β ^ L + 1 − w ∗ 。取 w = w ∗ w=w^* w = w ∗ 时它恰好等于 s L s_L s L ,长腿给定 β ^ \hat\beta β ^ 的条件暴露 E [ β L T / s L ∣ β ^ ] = E [ β L T ∣ β ^ ] / s L = 1 E[\beta^T_L/s_L\mid\hat\beta]=E[\beta^T_L\mid\hat\beta]/s_L=1 E [ β L T / s L ∣ β ^ ] = E [ β L T ∣ β ^ ] / s L = 1 (s L s_L s L 是常数,没有 Jensen 项);短腿同理,所以给定 β ^ \hat\beta β ^ 时 BAB 的真实 beta 的条件期望为零(要求 s L , s H ≠ 0 s_L,s_H\ne0 s L , s H = 0 ;无条件期望还需要比值可积,正态尾部下不能默认,这里不证明)。w ≠ w ∗ w\ne w^* w = w ∗ :记 m = w ∗ β ^ + 1 − w ∗ m=w^*\hat\beta+1-w^* m = w ∗ β ^ + 1 − w ∗ 为条件期望,则 s − m = ( w − w ∗ ) ( β ^ − 1 ) s-m=(w-w^*)(\hat\beta-1) s − m = ( w − w ∗ ) ( β ^ − 1 ) 。设 β ^ L < 1 < β ^ H \hat\beta_L<1<\hat\beta_H β ^ L < 1 < β ^ H 且 s L , s H > 0 s_L,s_H>0 s L , s H > 0 (与 bab_returns 拒绝非正腿 beta 的政策一致;s H > 0 s_H>0 s H > 0 在 β ^ H > 1 \hat\beta_H>1 β ^ H > 1 时自动成立)。w > w ∗ w>w^* w > w ∗ 时 s L < m L s_L<m_L s L < m L ,除以正的 s L s_L s L 得比值 m L / s L > 1 m_L/s_L>1 m L / s L > 1 ;s H > m H s_H>m_H s H > m H ,比值 < 1 <1 < 1 ;净暴露为正(收缩不足)。w < w ∗ w<w^* w < w ∗ 时两个不等式都反向,为负(过度收缩)。正分母不能省:β ^ L = − 2 \hat\beta_L=-2 β ^ L = − 2 ,β ^ H = 2 \hat\beta_H=2 β ^ H = 2 ,w ∗ = 0.5 w^*=0.5 w ∗ = 0.5 ,w = 0.6 w=0.6 w = 0.6 时 s L = − 0.8 s_L=-0.8 s L = − 0.8 ,m L = − 0.5 m_L=-0.5 m L = − 0.5 ,比值 0.625 < 1 0.625<1 0.625 < 1 ,净暴露 0.625 − 1.5 / 1.6 = − 0.3125 0.625-1.5/1.6=-0.3125 0.625 − 1.5/1.6 = − 0.3125 。27-P03 的数值(+ 0.47 , − 0.0006 , − 0.24 +0.47,-0.0006,-0.24 + 0.47 , − 0.0006 , − 0.24 )与此一致。评分:第一部分(求导与符号)40,第二部分(条件期望)40,符号讨论 20。
27-C02(评分依据与参考) 本课程现有数据里:没有外汇现货与远期、没有期货曲线、没有收益率曲线、没有融资利差;有的是 French 的 Mkt-RF、RF 与 10 个行业月收益。缺口表每行写:字段、需要的真实来源(例如交易商报价历史或交易所结算价历史)、时间字段(报价时点、available_at)、缺失规则(买卖价缺失、节假日交割日调整);不能写:任何关于 carry 溢价大小、符号稳定性、崩溃概率与可交易性的经验结论,以及任何把构造世界的数值当成外汇市场估计的说法。两个指标:(1)“平均组合 carry”与“平均收益”之比及其置信区间;(2)按 carry 排序的横截面斜率 b b b (对应 1 − γ 1-\gamma 1 − γ )。崩溃的两个报告指标:偏度与最差月份(及同月全球冲击代理变量的取值)、最大回撤。冻结计划必须在看收益之前写明报价方向、期限、换月与融资假设与变体个数。
27-N01完整答案。 (a)合约carry盈亏 102 − 100 = 2 102-100=2 102 − 100 = 2 ,真实盈亏 99 − 100 = − 1 99-100=-1 99 − 100 = − 1 ,价格变动 99 − 102 = − 3 99-102=-3 99 − 102 = − 3 。X = 50 X=50 X = 50 :C = 4 % C=4\% C = 4% 、变动 − 6 % -6\% − 6% 、超额 − 2 % -2\% − 2% ;利息 0.5、权益49.5、总收益 − 1 % -1\% − 1% 。X = 100 X=100 X = 100 :C = 2 % C=2\% C = 2% 、变动 − 3 % -3\% − 3% 、超额 − 1 % -1\% − 1% ;利息1、权益100、总收益0。两种分解都等于真实盈亏除以资本,再加同期无风险收益。(b)L = 40 / 27 = 1.481481 L=40/27=1.481481 L = 40/27 = 1.481481 ,H = 40 / 53 = 0.754717 H=40/53=0.754717 H = 40/53 = 0.754717 ;风险净额 1040 / 1431 = 0.726765 1040/1431=0.726765 1040/1431 = 0.726765 ,gross 3200 / 1431 = 2.236198 3200/1431=2.236198 3200/1431 = 2.236198 ;估计beta L ( 0.675 ) − H ( 1.325 ) = 0 L(0.675)-H(1.325)=0 L ( 0.675 ) − H ( 1.325 ) = 0 ;融资腿 − 1040 / 1431 -1040/1431 − 1040/1431 。市场beta中性并不等于美元中性。此处是参考资本上的因子损益。(c)至少需要信号时的同期限现货和远期、报价方向/交割日、买卖价、抵押/融资假设;mom_12_1 是已发生股票收益窗口,远期是今天订约的未来交割价格,经济对象与可得时间不同。当前P4没有FX字段,不可用动量填洞。
19. 进一步阅读
Must Know:Koijen、Moskowitz、Pedersen 与 Vrugt,Carry (NBER 工作稿 w19325,2013 年 8 月版),读第 2 节的定义(式 (2)–(7)、(9)、(10)、(13)–(15))与组合 carry(式 (24)、(25));期刊版未读。
Should Know:Frazzini 与 Pedersen,Betting Against Beta (作者稿,2013-05-10 版)的 BAB 构造(式 (14)–(17))与摘要里的五个预测;其理论与实证部分、期刊版本未读。
Should Know:本课程第10章(金融市场)里远期、期货与债券的现金流,第18章(波动率)里事前波动率的估计。
Advanced:Lustig 等关于外汇 carry 的原文、Brunnermeier 与 Pedersen 关于融资流动性与市场流动性的原文,核对 carry 崩溃与融资约束的经验结论;本章未读。
Optional:任何一份交易所公布的期货合约规格与结算价历史,练习找出到期日、换月规则与保证金。
20. 参考文献
引用键与读取范围见 source_notes.md 。
CH27_KMPV2013:Koijen, R. S. J., Moskowitz, T. J., Pedersen, L. H., Vrugt, E. B. Carry . NBER Working Paper 19325,2013 年 8 月版(工作稿,期刊版未读);式 (2)–(7)、(9)–(10)、(13)–(15)、(24)–(25) 与脚注 6。
CH27_FP2013:Frazzini, A., Pedersen, L. H. Betting Against Beta ,作者稿,2013-05-10 版(工作稿,期刊版未读);摘要、式 (14)–(17)、页 16–21 的相关文字。
CH27_FRENCH_IND:Kenneth R. French Data Library,“Detail for 10 Industry Portfolios”页面。
CH25_AMP2013:Asness, Moskowitz, Pedersen (2013),商品期货收益构造(第25章来源笔记)。
FRENCH:French 10 行业与 FF3 冻结快照(data/manifests/french_industries_2026-10-05.json、data/manifests/french_factors_2026-10-05.json)。