QuantWeft量化经纬
English
本章小节

第 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 组合为什么需要杠杆才能与市场比较,而杠杆的融资成本和约束又怎样改变结论。

  1. 写出期货的 carry 定义 Ct=(St−Ft)/XtC_t=(S_t-F_t)/X_t(StS_t 现货价,FtF_t 期货价,XtX_t 抵押资本),并由它推出外汇远期、零息债与商品期货曲线的 carry,写清每个公式的报价方向、频率与假设。
  2. 把一个头寸的收益分解成 rt+1=Ct+ΔSt+1/Xtr_{t+1}=C_t+\Delta S_{t+1}/X_t(全额抵押 Xt=FtX_t=F_t 时才用 FtF_t 作分母),说明“价格不变”的假设在哪里是反事实的,以及价格变动里“被收回”的部分(take-back)如何决定 carry 的预测力。
  3. 说明连续期货价格(把不同到期合约的价格首尾相接)与可交易的单合约收益的区别,用换月价差把两者的差算出来,并在构造世界里验证 可交易=carry+价格变动\text{可交易}=\text{carry}+\text{价格变动}。
  4. 区分低波动(low volatility)、低 beta(low beta)与防御(defensive);用 σi2=βi2σm2+σε,i2\sigma_i^2=\beta_i^2\sigma_m^2+\sigma_{\varepsilon,i}^2 说明低 beta 不等于低波动。
  5. 写出 BAB 的权重、杠杆与收益式,证明估计 beta 下的对市场中性,区分无噪声与有噪声模型:在第6.9节的排序、正分母和条件期望假设下推导真实暴露的符号;噪声模型中最优收缩给出条件中性,无条件期望另需可积性。
  6. 在冻结的 French 10 行业月度数据上报告:低 beta 一半与高 beta 一半的平均超额收益与 alpha、BAB 的收益、样本市场回归 beta 估计、分期、成本敏感度与最差月份;并说明这是 10 个价值加权行业组合,不是个股,也不是可交易的成交序列。
  7. 在一个已知数据生成过程的构造世界里复现“carry 组合平均 carry 为正,但收益偏负偏度、回撤深,且被收回的部分很大”,用 200 个新种子说明单一路径能证明什么、不能证明什么。

完成标准:任何 carry 或低风险信号都附一张字段表,写明报价方向、期限、signal_time、融资与抵押假设、换月规则,以及哪些结论在没有真实远期、期货曲线与融资利率数据时不能写。

2. 为什么 Quant 需要它

价值、动量、质量回答“买什么”;本章继续问“这笔收益从哪里来,比较时承担了多少市场暴露”。外汇远期通常只需保证金而非支付合约全额本金,远期升贴水反映两国利率差,但汇率变动可能抵消其 carry。这里的 carry 是给定报价与资本口径下的反事实计算,不保证实际平均收益。

低风险部分从 CAPM 的基准 E[ri]=βiE[rm]E[r_i]=\beta_iE[r_m] 出发:若预期超额收益正比于 beta,单位 beta 的预期收益应相同。证券市场线在数据中是否更平坦,是需要检验的问题;只有在相应关系成立时,低 beta 组合按 beta 缩放后的收益比较才可能有利。将两组都缩放到相同估计市场暴露,再报告收益、风险与估计误差,才能判断差异。杠杆还要融资,利差、保证金及被迫平仓可能改变结论,所以融资约束是研究内容,不能先假定低风险组合一定更赚钱。

三个常见错误解释了为什么要把它们写精确。第一,把“高利率”当成“高 carry”:报价方向一反,符号就反。第二,把连续期货价格当成交易盈亏:拼接价格在换月日有一个任何人都赚不到的跳跃。第三,把“杠杆后的低 beta”当成“市场中性”:如果用来缩放的 beta 是向 1 收缩过的,给定模型下的真实暴露未必为零(第6.9节);第11节历史样本对市场回归的 beta 估计约为 −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/1011/101。这笔钱不是价格涨跌,是曲线形状。连续合约价格把近月和远月首尾相连,在换月日会看到一个价格“跳升”,这个跳升不是任何人的收益。

低波动与低 beta 的直觉是:若风险溢价与 beta 成比例,则每单位 beta 的收益相同;若证券市场线比理论更平,则低 beta 资产每单位 beta 的收益更高,高 beta 资产更低。把低 beta 资产加杠杆到 beta=1,就得到比市场更高的预期收益,代价是杠杆。要把杠杆的约束、成本和风险写进研究,否则“更高的夏普比率”只是账面上的。

简化的边界:本章的真实案例只有 10 个行业组合(已修订的价值加权月收益),没有外汇远期、期货曲线或融资利率的真实数据;carry 的数值例子是手算与构造世界。

3.1 先画一张现金流账,再给收益命名

为什么同一个远期价差会报出不同的收益率?因为合约盈亏以货币计量,收益率还要指定投入资本。抵押资本(collateral capital) XX 是分母;合约名义金额(notional) 是价格乘合约单位数,二者不是同一个对象。下面固定一份合约、单位乘数为 1。期货与远期的实际结算/保证金机制不同;此处沿用本章一期结算、抵押账户按无风险利率计息的简化账,不模拟每日追缴。

时点 此时已知 账户动作 尚未知道什么
信号/建仓 tt 现货 StS_t、到期远期 FtF_t、资本 XtX_t、一期利率 抵押账户放入 XtX_t,订约做多一单位标的 未来现货、保证金变化与成交冲击
反事实计算 仅用上述当前报价 假设到期现货仍为 StS_t,算 (St−Ft)/Xt(S_t-F_t)/X_t 这是 carry,不是未来观测
到期 t+1t+1 现在才知道 St+1S_{t+1} 抵押账户返还 Xt(1+rf)X_t(1+r^f),合约盈亏 St+1−FtS_{t+1}-F_t 先分别记两笔,再除以 XtX_t

第8节外汇例取 X=FX=F,所以 C=S/F−1C=S/F-1;它不是“零成本合约有无穷收益”。债券第6.3节则先算现金债的持有期总收益,再减同期融资基准。阅读不同资产的 carry 时,先问“现金流是什么、分母是什么、扣了什么”,再比较数值。真实融资利差、追缴及借券限制需要额外输入,不能藏进无风险抵押假设。

4. 数学基础

记号。 以一期(一个月)为单位。StS_t:时点 tt 的现货价格,单位是“本币/单位标的”(外汇里是本币每单位外币);FtF_t:到期日恰为 t+1t+1 的期货(远期)价格,同单位;XtX_t:配置给一份合约的资本(抵押),至少等于保证金;rfr^f:该期的无风险利率(小数,当期),抵押资本赚取它。所有价格为正。频率:月;signal_time 是月末 tt(此时 St,FtS_t,F_t 已知);收益区间是 tt 到 t+1t+1。

期货收益。 配置 XtX_t 并持有合约一期,期末价值是 Xt(1+rf)+Ft+1−FtX_t(1+r^f)+F_{t+1}-F_t,所以每单位资本的总收益与超额收益是

rt+1tot=Ft+1−FtXt+rf,rt+1=Ft+1−FtXt. 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}.

到期收敛。 合约到期时价格等于现货:Ft+1=St+1F_{t+1}=S_{t+1}。

carry。 令现货价格不变 St+1=StS_{t+1}=S_t,则 Ft+1=StF_{t+1}=S_t,

Ct=St−FtXt,Xt=Ft 时 Ct=StFt−1. C_t=\frac{S_t-F_t}{X_t},\qquad X_t=F_t\ \text{时}\ C_t=\frac{S_t}{F_t}-1 .

收益分解。 StS_t 加减一次得到恒等式

rt+1=St+1−FtXt=St−FtXt⏟Ct+St+1−StXt⏟价格变动 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{价格变动}}

(Xt=FtX_t=F_t 时分母相同)。以上是 Koijen、Moskowitz、Pedersen 与 Vrugt 的定义(NBER 工作稿 w19325,2013 年 8 月版,式 (2)–(6))。

beta 与波动率。 资产超额收益 rir_i 对市场超额收益 rmr_m 回归:ri=αi+βirm+εir_i=\alpha_i+\beta_ir_m+\varepsilon_i,βi=Cov(ri,rm)/Var(rm)=ρimσi/σm\beta_i=\mathrm{Cov}(r_i,r_m)/\mathrm{Var}(r_m)=\rho_{im}\sigma_i/\sigma_m,这里假设有限二阶矩、市场方差严格为正,且 εi\varepsilon_i 是总体线性投影残差,与市场正交;于是 σi2=βi2σm2+σε,i2\sigma_i^2=\beta_i^2\sigma_m^2+\sigma_{\varepsilon,i}^2。任意指定的误差项不自动满足这个分解。

BAB 权重。 某月末 nn 个证券的 beta 估计向量 β^\hat\beta,zi=rank⁡(β^i)z_i=\operatorname{rank}(\hat\beta_i)(并列取平均名次),zˉ=1n∑zi\bar z=\frac1n\sum z_i,k=2/∑i∣zi−zˉ∣k=2/\sum_i|z_i-\bar z|,则

wH=k (z−zˉ)+,wL=k (z−zˉ)−,1⊤wH=1⊤wL=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 ,

x+=max⁡(x,0)x^+=\max(x,0),x−=max⁡(−x,0)x^-=\max(-x,0)。低 beta 腿 wLw_L 在 beta 最低的证券上权重最大。(Frazzini 与 Pedersen 的草稿,2013-05-10,式 (16)。)

BAB 收益。 β^L=wL⊤β^\hat\beta_L=w_L^\top\hat\beta,β^H=wH⊤β^\hat\beta_H=w_H^\top\hat\beta,下一期超额收益 rer^e,rL=wL⊤rer_L=w_L^\top r^e,rH=wH⊤rer_H=w_H^\top r^e:

rBAB=1β^L rL−1β^H rH. r^{\mathrm{BAB}}=\frac1{\hat\beta_L}\,r_L-\frac1{\hat\beta_H}\,r_H .

(式 (17),草稿里写成 r−rfr-r^f 的形式,等价于超额收益。)两条腿的估计beta必须严格为正,所有beta全并列时秩权重无定义。

频率约定:月频;beta 用截至月末 ss 的数据估计;BAB 收益是 s+1s+1 月。

5. 正式定义

套息(carry)。 一个头寸在“市场条件不变”下的收益;对期货是 Ct=(St−Ft)/XtC_t=(S_t-F_t)/X_t。它是预期收益的一个可事前计算的成分,不等于预期收益。

外汇套息交易(currency carry trade)。 做多高 carry 货币、做空低 carry 货币的组合;carry 对远期是利差 (r∗−r)/(1+r)(r^*-r)/(1+r)。

远期升贴水(forward premium)。 F/S−1F/S-1:远期价格相对现货的比例,正值为远期升水。

抛补利率平价(covered interest parity, CIP)。 简单利率下 F=S(1+r)/(1+r∗)F=S(1+r)/(1+r^*),SS 为“本币/外币”,rr 为本币利率,r∗r^* 为外币利率。

期限结构与曲线斜率(term structure, curve slope)。 同一标的不同到期合约的价格或收益率排成的曲线;本章的曲线斜率 g=(S−F)/Sg=(S-F)/S 在构造世界里度量商品曲线形状。

现货升水(backwardation)与期货升水(contango)。 近月高于远月(曲线向下倾斜,持有远月 carry 为正)称现货升水;远月高于近月称期货升水(carry 为负)。

便利收益(convenience yield)。 持有实物商品(而不是期货)带来的、扣除仓储成本后的净收益,记 δ\delta。

展期收益(roll yield)。 本章指:曲线不变时,持有一个合约并随到期滑动所获得的收益,就是 carry 在期货曲线上的体现;它是价格曲线形状带来的收益,与现货价格涨跌无关。

滑降(roll-down)。 债券随时间缩短到期、沿不变的收益率曲线滑向较低收益率而产生的价格变化。

连续合约(continuous contract)。 把不同到期合约的价格首尾相接得到的价格序列;换月日含有两个合约的价差,不是收益。

组合 carry。 Cp=∑iwiCiC^{\mathrm p}=\sum_iw_iC_i(KMPV 式 (24))。

低波动(low volatility)。 按(事前)波动率排序,买入低波动证券。低 beta(low beta)。 按(事前)beta 排序,买入低 beta 证券。两者不同:σ2=β2σm2+σε2\sigma^2=\beta^2\sigma_m^2+\sigma_\varepsilon^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

一份期货合约不需要付出全额本金,所以配置一份资本 XtX_t(保证金之上的抵押,比如买短期国债),期末拿回 Xt(1+rf)X_t(1+r^f) 加上合约的盈亏 Ft+1−FtF_{t+1}-F_t。每单位资本的总收益 =rf+(Ft+1−Ft)/Xt=r^f+(F_{t+1}-F_t)/X_t,减去无风险利率得超额收益 (Ft+1−Ft)/Xt(F_{t+1}-F_t)/X_t(第 4 节)。到期收敛 Ft+1=St+1F_{t+1}=S_{t+1} 把合约的收益与现货联系起来:rt+1=(St+1−Ft)/Xtr_{t+1}=(S_{t+1}-F_t)/X_t。令 St+1=StS_{t+1}=S_t 得 Ct=(St−Ft)/XtC_t=(S_t-F_t)/X_t。读法:期货价格低于现货(F<SF<S)时 carry 为正;高于现货时为负。X=FX=F 称为全额抵押,此时 C=S/F−1C=S/F-1。

这是一期、合约恰在期末到期的情形。对更长到期的合约,“价格不变”要换成“曲线不变”(6.3、6.4)。

6.2 外汇远期:利差与报价方向

报价 SS 为“本币/外币”,本币利率 rr、外币利率 r∗r^*(同一期的简单利率)。CIP:F=S(1+r)/(1+r∗)F=S(1+r)/(1+r^*)。做多外币远期(以 FF 买入 1 单位外币,期末交割)的 carry

C=S−FF=SF−1=1+r∗1+r−1=r∗−r1+r. C=\frac{S-F}{F}=\frac SF-1=\frac{1+r^*}{1+r}-1=\frac{r^*-r}{1+r}.

外币利率更高(r∗>rr^*>r)则 F<SF<S、C>0C>0。含义:远期是零成本的合约,收益是超额收益,carry 是以 X=FX=F 归一的利差。KMPV 式 (7) 与脚注6确实使用本币利率倒数作其归一化说明;不能把该归一化直接解释为固定终值1单位外币的同名义复制:后者今天须存入 1/(1+r∗)1/(1+r^*) 单位外币,花费 S/(1+r∗)=F/(1+r)S/(1+r^*)=F/(1+r) 单位本币。复制的金额与报收益率所用的分母要分开。

分母明确后的存款比较。 把 1 单位本币换成外币存一期,期末兑回本币:STS(1+r∗)\frac{S_{T}}{S}(1+r^*);留在本币存款:1+r1+r。因为 (1+r∗)/S=(1+r)/F(1+r^*)/S=(1+r)/F,超额收益 [STS(1+r∗)−(1+r)]/(1+r)=ST−FF\bigl[\frac{S_T}{S}(1+r^*)-(1+r)\bigr]/(1+r)=\frac{S_T-F}{F}:这与 X=FX=F 远期的超额收益代数相等(8.1节),因为这里除以本币存款终值 1+r1+r,不是初始本金1。外币存款的总收益为 ST(1+r∗)/S−1S_T(1+r^*)/S-1,算术超额为该总收益减 rr;二者都不能直接与远期总收益混称。这里要分开两个场景。若汇率不变 ST=SS_T=S,外币存款在初始本币资本1上的算术超额是 r∗−rr^*-r;除以本币存款终值 1+r1+r,相对超额为 (r∗−r)/(1+r)(r^*-r)/(1+r),等于 X=FX=F 时的远期 carry。若 ST=FS_T=F,则是另一种场景:外币恰好贬值 1−(1+r)/(1+r∗)1-(1+r)/(1+r^*),抵消利率优势,外币存款相对本币存款的超额为零。这里的“保本”是相对本币存款基准,不是相对初始本金;两种场景不能混称。

报价方向。 用倒数报价 S′=1/SS'=1/S、F′=1/FF'=1/F,套用同一公式 (S′−F′)/F′(S'-F')/F' 得到 F/S−1F/S-1(符号相反)。所以必须固定:公式里的 S,FS,F 是“本币/外币”,carry 是做多外币的 carry(8.1 节的反例)。

UIP 与套息交易。 无抛补利率平价说 E[ST]=FE[S_T]=F,即外币的预期贬值恰好抵消利差,此时做多远期的平均收益为零。套息交易的盈利来自 E[ST]>FE[S_T]>F,也就是 UIP 平均失败。这是一个经验问题;本章没有真实外汇数据,只在构造世界里放入一个已知的“被收回”比例(6.5、10 节)。

6.3 零息债:收益率、滑降与不变曲线

设年化复利的零息收益率曲线 y(τ)y(\tau)(τ\tau 年),面值 1 的零息债价格 PT=(1+yT)−TP_T=(1+y_T)^{-T},yT=y(T)y_T=y(T)。持有 hh 年(h<Th<T),曲线不变,债券变成 (T−h)(T-h) 年的债券,价格 (1+yT−h)−(T−h)(1+y_{T-h})^{-(T-h)}。总收益

1+carry=(1+yT)T(1+yT−h)T−h=(1+yT)h⏟1+收益率部分×(1+yT1+yT−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+yT)T=(1+yT)h(1+yT)T−h(1+y_T)^T=(1+y_T)^h(1+y_T)^{T-h}。平坦曲线 yT−h=yTy_{T-h}=y_T 时滑降部分为 1;向上倾斜(yT−h<yTy_{T-h}<y_T)时滑降为正:债券向短端滑落、收益率下降、价格上升。超额收益 == 总收益 −[(1+yh)h−1]-[(1+y_h)^h-1](用 hh 年短期利率融资)。KMPV(式 (13)–(15))对息票债写出同样的结构:carry 是收益率加滑降,扣短期利率后的收益率部分是期限利差;用修正久期可近似为

滑降≈−Dmod (yT−h−yT), \text{滑降}\approx-D_{\mathrm{mod}}\,(y_{T-h}-y_T),

其中 DmodD_{\mathrm{mod}} 取滑降后的债券(T−hT-h 年零息债,(T−h)/(1+y)(T-h)/(1+y))。8.2 节的数值:用 TT 年的久期去乘会高估滑降。

假设:零息、年复利、收益率对到期线性插值、无信用与流动性溢价、“曲线不变”是一个反事实(真实曲线每天在变)。

6.4 商品:便利收益与曲线斜率

持有实物商品的现金流视角:买入现货 SS 并持有一期,收益是 δ\delta(净便利收益)减去融资成本 rr(借钱买现货)。无套利给出 F=S(1+r−δ)F=S(1+r-\delta)(KMPV 式 (9) 以下)。令现货不变,做多期货的 carry

C=S−FF=δ−r1+r−δ. C=\frac{S-F}{F}=\frac{\delta-r}{1+r-\delta}.

商品现货常常没有干净的价格,所以用两个相邻期货合约的价差:近月 F1F^1(剩余 T1T_1 期)、次近月 F2F^2(T2>T1T_2>T_1)。假设近月价格不变,则持有 F2F^2 的合约在 T2−T1T_2-T_1 期内滑向 F1F^1,线性每期 carry 代理

C=F1−F2F2 (T2−T1) C=\frac{F^1-F^2}{F^2\,(T_2-T_1)}

(KMPV 式 (10))。这是期限差上的价格差除以资本再除以期数,不是任意期限的精确月复利;若把端点总价格比等分复利,应另算 (F1/F2)1/(T2−T1)−1(F^1/F^2)^{1/(T_2-T_1)}-1,还须明确不变曲线路径。若 Fi=S(1+(r−δ)Ti)F^i=S(1+(r-\delta)T_i) 线性,则 F1−F2=S(r−δ)(T1−T2)F^1-F^2=S(r-\delta)(T_1-T_2),C=(δ−r)S/F2C=(\delta-r)S/F^2,与上式一致。读法:现货升水(F1>F2F^1>F^2)时 C>0C>0,期货升水时 C<0C<0。8.3 节数值:近月 100、次近月 101,相隔 1 个月,C=−1/101=−0.99%C=-1/101=-0.99\% 每月。

6.5 收益分解与“被收回”

第 4 节的恒等式 rt+1=Ct+ΔSt+1/Ftr_{t+1}=C_t+\Delta S_{t+1}/F_t(X=FX=F)取条件期望:

Et[rt+1]=Ct+Et[ΔSt+1Ft]. E_t[r_{t+1}]=C_t+E_t\Bigl[\frac{\Delta S_{t+1}}{F_t}\Bigr].

carry 是预期收益的一部分,另一部分是预期的价格变动,它取决于风险溢价与预期方式(KMPV 式 (6))。设预期价格变动是 carry 的一个比例:Et[ΔS/F]=−γCtE_t[\Delta S/F]=-\gamma C_t,则 Et[r]=(1−γ)CtE_t[r]=(1-\gamma)C_t。γ=1\gamma=1:价格变动恰好抵消 carry(外汇里 UIP 成立的情形),平均收益为零;γ=0\gamma=0:价格是鞅,carry 全部兑现;0<γ<10<\gamma<1:部分被收回。如果截面回归 ri,t+1=a+bCi,t+ur_{i,t+1}=a+bC_{i,t}+u 的斜率 b=1−γb=1-\gamma:b=1b=1 说明 carry 完全兑现,b=0b=0 说明完全被价格变动抵消。构造世界(10 节)里取 γ=0.5\gamma=0.5,但冲击载荷 ℓi=2 pcti−1\ell_i=2\,\mathrm{pct}_i-1 是 carry 排名的函数,所以无条件的月度截面斜率的期望低于 1−γ1-\gamma:E[b]≈(1−γ)−p E[m] Cov(ℓ,C)/Var(C)‾E[b]\approx(1-\gamma)-p\,E[m]\,\overline{\mathrm{Cov}(\ell,C)/\mathrm{Var}(C)},p=1.2%p=1.2\% 是每月冲击概率,E[m]=0.05+0.022/π=0.066E[m]=0.05+0.02\sqrt{2/\pi}=0.066 是冲击大小的期望,最后一项是各月 Cov(ℓ,C)/Var(C)\mathrm{Cov}(\ell,C)/\mathrm{Var}(C) 的平均。本路径的理论值 0.23;200 个新种子的月度斜率均值的中位数 0.273(理论值的中位数 0.272,5% 与 95% 分位数 −0.14-0.14 与 0.56)。本路径实测 0.44:只有 3 个冲击月(期望 4.3 个),没有冲击的 356 个月平均 0.65,冲击月平均 −24.0-24.0。所以斜率小于 1−γ1-\gamma 是被设定的崩溃载荷造成的,不是单纯的抽样误差。

6.6 连续合约拼接与可交易盈亏

设日期 tt 持有的合约是 c(t)c(t),价格 Ft,cF_{t,c}。可交易收益是持有同一合约两个日期的价格比:

rttrade=Ft+1,c(t)Ft,c(t)−1. r^{\mathrm{trade}}_t=\frac{F_{t+1,c(t)}}{F_{t,c(t)}}-1 .

拼接价格 St∗=Ft,c(t)S^*_t=F_{t,c(t)} 的收益是

rt∗=St+1∗St∗−1=Ft+1,c(t+1)Ft,c(t)−1. r^{*}_t=\frac{S^*_{t+1}}{S^*_t}-1=\frac{F_{t+1,c(t+1)}}{F_{t,c(t)}}-1 .

两者之差

rt∗−rttrade=Ft+1,c(t+1)−Ft+1,c(t)Ft,c(t) r^*_t-r^{\mathrm{trade}}_t=\frac{F_{t+1,c(t+1)}-F_{t+1,c(t)}}{F_{t,c(t)}}

在不换合约(c(t+1)=c(t)c(t+1)=c(t))时为零;换合约时等于“新合约与旧合约在 t+1t+1 的价格差”除以旧价。期货升水(新合约更贵)时拼接价格在换月日向上跳,但没有人赚到这笔钱:交易者在 t+1t+1 以各自的报价卖出旧合约、买入新合约,换月本身不产生盈亏;期货升水的代价体现在后续新合约向现货收敛的下跌里。累计起来,拼接序列近似现货,可交易序列是现货加展期收益(8.4 节与 10 节的构造世界)。拼接价格里还会出现负价格或比率失效的问题,所以研究里应使用单合约收益再复利,而不是拼接价格(Asness、Moskowitz 与 Pedersen 2013 的商品期货收益构造,见第25章来源笔记)。

6.7 高减低的组合 carry 非负,不保证实际收益

组合权重 wiw_i(多头和为 +1+1、空头和为 −1-1,或按排名),组合 carry Cp=∑iwiCi=C‾多头−C‾空头C^{\mathrm p}=\sum_iw_iC_i=\overline{C}_{\text{多头}}-\overline{C}_{\text{空头}}(KMPV 式 (24)、(25))。按 carry 排序做多高、做空低,所以 Cp≥0C^{\mathrm p}\ge0 是构造的结果。收益分解(6.5)给出实际收益 =Cp+价格变动=C^{\mathrm p}+\text{价格变动},价格变动的平均部分可以大幅抵消 carry。这里的非负结论要求多空各用非负腿权重、资本口径可比,且多头每项carry不低于空头每项;全相同或边界并列时可为零。形成时已知的carry仍会跨期变化:令 DtD_t 为组合价格变动项,Var(r)=Var(Cp)+Var(D)+2Cov(Cp,D)\mathrm{Var}(r)=\mathrm{Var}(C^{\mathrm p})+\mathrm{Var}(D)+2\mathrm{Cov}(C^{\mathrm p},D),偏度也受联合分布影响。给定形成时信息集后,已知carry不贡献当期条件创新;这与无条件时间序列风险不同。所以“组合 carry 为正”与“收益为正”是两个不同的陈述。10 节的构造世界:平均组合 carry 0.516% 每月,平均收益 0.179% 每月。

6.8 低波动与低 beta:分解

σi2=βi2σm2+σε,i2\sigma_i^2=\beta_i^2\sigma_m^2+\sigma_{\varepsilon,\allowbreak i}^2。设 σm=16%\sigma_m=16\%,资产 X:β=0.5\beta=0.5、特质波动 25%;资产 Y:β=1.2\beta=1.2、特质波动 5%。则

σX=(0.5×0.16)2+0.252=26.2%,σY=(1.2×0.16)2+0.052=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 的 beta 更低、波动更高:按波动排序与按 beta 排序给出相反的名次(27-E08)。所以“低波动”与“低 beta”是两个不同的信号,实证里常常相关但不相同(11 节:10 个行业中,低 beta 一半与低波动一半平均重合 3.6 个行业)。

CAPM 说 E[ri]=βiE[rm]E[r_i]=\beta_iE[r_m](超额收益)。如果证券市场线比这条线更平,αi=E[ri]−βiE[rm]\alpha_i=E[r_i]-\beta_iE[r_m] 对低 beta 为正、对高 beta 为负。一个低 beta 组合 βp=0.7\beta_p=0.7,持有 1 倍;要与市场比较,把它杠杆到 beta=1 需要 1/0.7=1.431/0.7=1.43 倍,若预期超额收益与 beta 无关(SML 平坦),杠杆后的预期超额收益是 1.43E[rp]1.43E[r_p],高于市场。杠杆在 CAPM 里没有成本,现实里有融资成本与约束(6.10)。

6.9 BAB:权重、中性与收缩

构造。 第 4 节的 wL,wHw_L,w_H;估计 beta 下的两条腿 β^L,β^H\hat\beta_L,\hat\beta_H;收益 rBAB=rL/β^L−rH/β^Hr^{\mathrm{BAB}}=r_L/\hat\beta_L-r_H/\hat\beta_H。每条腿都被缩放到 beta 为 1(两腿beta必须正;只有 0<β^L<1<β^H0<\hat\beta_L<1<\hat\beta_H 时才分别有 1/β^L>11/\hat\beta_L>1 与 1/β^H<11/\hat\beta_H<1,高低排序本身不保证跨1)。草稿提到美国股票的 BAB 平均做多 1.4 美元的低 beta 股票(融资 1.4 美元的无风险资产)、做空 0.7 美元的高 beta 股票(该文样本,草稿页 19)。

估计 beta 下的中性。 直接把组合权重作用于所用的估计 beta:β^BAB=β^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。这一代数结论只需两条估计腿 beta 非零,不要求估计等于真值;本章构造另要求两者严格为正。若进一步假设估计 beta 恰好等于真实 beta,才可由此得到真实市场中性。8.5节的特例中,每个资产的收益恰好等于用于缩放的 βi×\beta_i\times 市场收益,因而 BAB 收益为0。

真实暴露。 实际的组合 beta 是 βBAB=βLT/β^L−βHT/β^H\beta^{\mathrm{BAB}}=\beta^T_L/\hat\beta_L-\beta^T_H/\hat\beta_H,βT\beta^T 是两条腿的真实 beta。

收缩。 Frazzini 与 Pedersen 用 β^=wβ^TS+(1−w)⋅1\hat\beta=w\hat\beta^{\mathrm{TS}}+(1-w)\cdot1,w=0.6w=0.6(式 (15) 与其后;草稿页 17):向横截面均值 1 收缩。共同且严格为正的 ww 不改变排名;w=0w=0 使所有估计为1、秩消失,bab_weights 因全并列报错;严格正的共同权重因此不改变两条腿选了谁,只改变缩放(杠杆)的大小。分两种情形。

(a)无噪声,用收缩后的 beta 作缩放,而真实 beta 就是未收缩的 xx:β^=wx+(1−w)\hat\beta=wx+(1-w)。令 g(x)=x/(wx+1−w)g(x)=x/(wx+1-w),则 βBAB=g(xL)−g(xH)\beta^{\mathrm{BAB}}=g(x_L)-g(x_H),0<xL<1<xH0<x_L<1<x_H,0<w≤10<w\le1。定义域要先说清:gg 在 x=−(1−w)/wx=-(1-w)/w 处有极点,g′(x)=(1−w)/(wx+1−w)2>0g'(x)=(1-w)/(wx+1-w)^2>0(w<1w<1)只保证 gg 在极点两侧各自递增,不能跨极点比较。两条腿的缩放 beta wxL+1−wwx_L+1-w 与 wxH+1−wwx_H+1-w 都严格为正,等价于 xL,xHx_L,x_H 都在极点右侧的同一区间;xL>0x_L>0 时这自动成立。于是 g(xL)<g(xH)g(x_L)<g(x_H):βBAB<0\beta^{\mathrm{BAB}}<0;w=1w=1 时 g(x)=1g(x)=1,βBAB=0\beta^{\mathrm{BAB}}=0。去掉正分母条件结论就会反号:xL=−1x_L=-1,xH=2x_H=2,w=0.6w=0.6 时低 beta 腿的缩放 beta 为 −0.2-0.2,g(xL)−g(xH)=5−1.25=+3.75g(x_L)-g(x_H)=5-1.25=+3.75;w=1w=1、xL=0x_L=0 时是 0/00/0。这正是 bab_returns 的既有政策:任何一个月的加权腿 beta ≤0\le0 都直接报错,不能把负 beta 腿“杠杆到 1”。数值:xL=0.7x_L=0.7,xH=1.3x_H=1.3,w=0.6w=0.6:0.7/0.82−1.3/1.18=0.854−1.102=−0.2480.7/0.82-1.3/1.18=0.854-1.102=-0.248(27-C01)。

(b)有噪声:β^=β+e\hat\beta=\beta+e,ee 与 β\beta 独立,β∼(1,σβ2)\beta\sim(1,\sigma_\beta^2),e∼(0,σe2)e\sim(0,\sigma_e^2)。则 E[β∣β^]=1+w∗(β^−1)E[\beta\mid\hat\beta]=1+w^*(\hat\beta-1),w∗=σβ2/(σβ2+σe2)w^*=\sigma_\beta^2/(\sigma_\beta^2+\sigma_e^2)(各证券的 (βi,ei)(\beta_i,e_i) 截面独立且联合正态时是精确的;否则只是最佳线性预测,而且若估计误差跨证券相关,按极值排名选入腿会引入额外的选择偏倚)。所以用 w=w∗w=w^* 收缩的 beta 恰好是真实 beta 的条件期望,给定整个向量 β^\hat\beta 时,腿权重与缩放分母 sL,sHs_L,s_H 都是常数,所以两条腿的条件真实暴露精确为 E[βLT∣β^]/sL=1E[\beta^T_L\mid\hat\beta]/s_L=1、E[βHT∣β^]/sH=1E[\beta^T_H\mid\hat\beta]/s_H=1,BAB 的条件真实 beta 为 0(没有 Jensen 修正项;条件是 sL,sH≠0s_L,s_H\ne0,即分母有定义的观测区域。无条件期望还需要这个比值可积,正态尾部下不能默认,本章不声称);符号比较另需条件:两条腿的估计 beta 满足 β^L<1<β^H\hat\beta_L<1<\hat\beta_H,且缩放分母 sL,sHs_L,s_H 都严格为正(sH>0s_H>0 在 β^H>1\hat\beta_H>1 时自动成立)。在此条件下,w>w∗w>w^*(收缩不足)时低beta腿的条件平均真实beta高于缩放用的,BAB条件平均暴露为正;w<w∗w<w^*(过度收缩)时条件平均暴露为负。只要求分母非零不够:β^L=−2\hat\beta_L=-2,β^H=2\hat\beta_H=2,w∗=0.5w^*=0.5,w=0.6w=0.6 时 sL=−0.8s_L=-0.8,条件净暴露为 −0.3125-0.3125,与“收缩不足为正”相反。27-P03 的模拟:真实 beta 均值 1、标准差 0.25,噪声标准差 0.25(w∗=0.5w^*=0.5),500 只证券,200 个模拟取平均:w=1w=1 时 βBAB=+0.47\beta^{\mathrm{BAB}}=+0.47,w=0.5w=0.5 时 −0.0006-0.0006,w=0.2w=0.2 时 −0.24-0.24。

含义。 一个常数收缩权重(0.6)是否使 BAB 中性,取决于 beta 估计的噪声有多大。11节行业样本中 w=0.6w=0.6 的回归beta约 −0.20-0.20,不收缩时约 +0.05+0.05,与该模型中收缩改变暴露的机制相容。但“大组合、60月窗口”并不识别估计噪声方差,也不能推出 w∗w^* 接近1;本章没有估计真实beta或识别负暴露的因果来源。

6.10 杠杆、融资与崩溃

融资。 长腿需要借入 max⁡(1/β^L−1,0)\max(1/\hat\beta_L-1,0) 单位(11 节平均 0.27)。若借款利率比无风险利率高 ss(每月,小数),每月成本 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]。年化 1% 的融资利差使 10 个行业的 BAB 均值从 0.2045% 降到 0.1818% 每月(11 节)。融资利差只是成本的一个来源,保证金要求、被迫平仓、做空约束没有进入本章的计算。

崩溃。 设一个全局冲击 JJ 以小概率发生,高 carry 货币的损失与它们的 carry 排名成比例:ri=(1−γ)Ci+噪声−ℓi m Jr_i=(1-\gamma)C_i+\text{噪声}-\ell_i\,m\,J,载荷 ℓi=2 pcti−1∈[−1,1]\ell_i=2\,\mathrm{pct}_i-1\in[-1,1](pcti\mathrm{pct}_i 是 carry 的百分位名次)。组合多头的 ℓ\ell 约 +0.8+0.8、空头约 −0.8-0.8,所以组合对 JJ 的载荷约 1.6,所有货币共享同一个冲击,不会被货币个数分散掉。每月的期望崩溃损失约 p E[m]×1.6p\,E[m]\times1.6,共同的 JJ 冲击制造集中左尾,噪声、carry跨期变化及其依赖也影响波动与偏度,不能说全部风险只来自 JJ 月(10 节:3 个冲击月平均 −9.0%-9.0\%,其余月平均 +0.26%+0.26\%)。

6.11 BAB 的“中性”是哪一种中性

BAB 的两腿权重先各自和为 1,再乘 L=1/β^LL=1/\hat\beta_L、H=1/β^HH=1/\hat\beta_H。风险资产权重 w=LwL−HwHw=Lw_L-Hw_H 的净额是 L−HL-H,gross 是 L+HL+H(两腿无重叠)。估计 beta 暴露是 Lβ^L−Hβ^H=0L\hat\beta_L-H\hat\beta_H=0,却一般不是美元净额为零。为得到自融资损益表达式,再配无风险资产权重 −(L−H)-(L-H);风险腿与融资腿权重总和为零。这是一个按单位参考资本记账的自融资因子,不是可以对零初始财富计算百分比收益的存款。

第8.5节 L=1.4815,H=0.7547L=1.4815,H=0.7547,风险净额 0.72680.7268、gross 2.23622.2362。直接用总收益会多出 (L−H)rf(L-H)r^f,无风险融资腿恰好抵消它,所以 LrLe−HrHeLr_L^e-Hr_H^e 与完整自融资账等价。第6.10节的额外借款成本使用课程的分腿融资约定 s[max⁡(L−1,0)+max⁡(H−1,0)]s[\max(L-1,0)+\max(H-1,0)]:本例只计长腿超出一单位的 0.48150.4815。它不是完整经纪商净融资/保证金账,不能与 L−HL-H 的净融资额或借券费互换。原敏感度保留为这个明确约定下的结果。

若希望另作 gross=2 的齐次组合比较,可令 k=2/(L+H)>0k=2/(L+H)>0 同时缩放两腿;估计 beta 的零约束仍成立,收益及该约定下直接按头寸计量的费用须重新核口径,净额仍是 k(L−H)k(L-H),不会自动为零。本章旧 BAB 数值没有作这种缩放;P4 的 gross=2 是第28章股票行业约束的另一份合同,不应套回 BAB 历史结果。正分母、真实/估计 beta 与收缩条件继续按第6.9节判断。

7. 金融解释

carry 是预期收益的机械成分,不是全部。 它可以只用今天的价格算出(外汇用利率或远期,商品用曲线斜率,债券用收益率曲线),不需要估计任何风险溢价模型。但 6.5 的恒等式说明,预期价格变动同样重要:价格变动可以收回 carry(外汇 UIP),也可以放大。研究者能直接观察的是 CtC_t,需要检验的是 γ\gamma。

carry 的收益分布偏负。 6.10 的崩溃机制说明:carry 头寸在平时赚取稳定的小额收益,在全局冲击(融资紧张、风险厌恶上升)时集中亏损。10 节的构造世界里,200 个新种子无一例外偏度为负,中位偏度 −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\% 对 −4.55%-4.55\%),但它的下跌 beta 与上涨 beta 几乎相同(0.81 对 0.79),在这个样本内未显示明显的上下行beta非对称;较低beta与少亏相容,但该诊断不能把全部损失差异因果归于beta。

8. 数值例题:手算每一步

所有数字由 hand_examples() 产生,并由 历史独立复核脚本 用不同实现复核。公司、货币与合约均为教学构造。

8.1 外汇远期:利差、报价方向与保本汇率

8.2 零息债的 carry 与滑降

收益率曲线(年复利):1 年 2%、2 年 3%、3 年 3.5%、5 年 4%。买入 3 年零息债,持有 1 年,曲线不变。现价 1.035−3=0.901941.035^{-3}=0.90194;一年后变成 2 年期,按 3% 定价 1.03−2=0.942601.03^{-2}=0.94260。总收益 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.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 年期利率 2% 的融资:超额 carry =2.5073%=2.5073\%。久期近似:2 年零息债修正久期 2/1.03=1.94172/1.03=1.9417,滑降 ≈1.9417×(0.035−0.03)=0.9709%\approx1.9417\times(0.035-0.03)=0.9709\%,与精确的 0.9732% 相差 0.002 个百分点;若误用 3 年债的久期 3/1.035=2.8993/1.035=2.899,得 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\%(期货升水,做多次近月在曲线不变时每月亏 0.99%)。反过来近月 100、次近月 98: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\% −0.980%-0.980\%
第 1→2 期 A:100/101−1=−0.990%100/101-1=-0.990\% 拼接序列 101→103:+1.980%+1.980\%
第 2→3 期 B:102/103−1=−0.971%102/103-1=-0.971\% −0.971%-0.971\%

可交易的累计收益 −2.913%-2.913\%(现货没动,期货升水每月吃掉约 1%);拼接序列 102→101→103→102102\to101\to103\to102 累计 0%0\%,和现货一样。第 1→2 期的差 1.980−(−0.990)=2.970%=(103−100)/1011.980-(-0.990)=2.970\%=(103-100)/101:新合约与旧合约在第 2 期的价差除以旧价(6.6 节)。拼接序列里这个 +1.98%+1.98\% 没有任何人赚到。

8.5 BAB:权重、杠杆、收益与中性

四个证券的 beta 估计 0.6,0.9,1.1,1.40.6,0.9,1.1,1.4:名次 1,2,3,41,2,3,4,zˉ=2.5\bar z=2.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,k=2/4=0.5k=2/4=0.5。低 beta 腿 wL=(0.75,0.25,0,0)w_L=(0.75,0.25,0,0),高 beta 腿 wH=(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,β^H=0.25×1.1+0.75×1.4=1.325\hat\beta_H=0.25\times1.1+0.75\times1.4=1.325。杠杆:低 beta 腿 1/0.675=1.48151/0.675=1.4815,高 beta 腿 1/1.325=0.75471/1.325=0.7547。下月超额收益 (1.2%,1.5%,1.0%,2.0%)(1.2\%,1.5\%,1.0\%,2.0\%):rL=1.275%r_L=1.275\%,rH=1.75%r_H=1.75\%,

rBAB=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\%.

中性检验:若每个证券下月超额收益恰好等于 βi×1%\beta_i\times1\%(市场涨 1%),则 rL=0.675%r_L=0.675\%,rH=1.325%r_H=1.325\%,rBAB=1%−1%=0r^{\mathrm{BAB}}=1\%-1\%=0。融资成本:长腿借入 1.4815−1=0.48151.4815-1=0.4815 单位,若借款利率每月高 0.2%0.2\%,成本 0.2%×0.4815=0.0963%0.2\%\times0.4815=0.0963\%,BAB 变为 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.5\pm0.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.3% 减空头平均 −0.2%-0.2\%”(KMPV 式 (25))。若下月价格变动 ΔS/F\Delta S/F 分别为 −0.3%,−0.1%,0,+0.2%-0.3\%,-0.1\%,0,+0.2\%,各货币收益 =C+ΔS/F=C+\Delta S/F 为 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\%,只有组合 carry 的 40%:价格变动收回了 60%。

8.7 收缩与真实暴露

原始 beta 0.5 收缩后 0.6×0.5+0.4=0.70.6\times0.5+0.4=0.7;1.8 收缩后 1.481.48。若低 beta 腿的真实 beta 是 0.7、高 beta 腿是 1.3,而缩放用的是收缩后的 0.820.82 与 1.181.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(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,XX 默认 FF;价格须为正;数组按位置对应
forward_premium 现货、远期 F/S−1F/S-1
fx_carry_from_rates 本币利率、外币利率 (r∗−r)/(1+r)(r^*-r)/(1+r);利率须大于 −1-1;报价为本币/外币
commodity_curve_carry F1,F2,T1,T2F^1,F^2,T_1,T_2 (F1−F2)/(F2(T2−T1))(F^1-F^2)/(F^2(T_2-T_1));T2>T1T_2>T_1
zero_coupon_carry 曲线、到期、持有期、可选融资利率 总收益、收益率部分、滑降部分、超额;曲线须覆盖 TT 与 T−hT-h
roll_down_approximation 修正久期、两个收益率 −D(y滑后−y现)-D(y_{\text{滑后}}-y_{\text{现}})
portfolio_carry 权重、carry(同标签) ∑wiCi\sum w_iC_i;非零权重缺 carry 报错
held_contract_returns 合约价格表、每日持有的合约 Ft+1,c/Ft,c−1F_{t+1,c}/F_{t,c}-1;持有合约缺价格报错;最后一行 NaN
naive_splice_returns 同上 拼接序列的收益(换月日含价差);最后一行 NaN
rolling_beta 资产超额收益、市场超额收益、窗口、最少月数 行 ss 只用 s−window+1..ss-\text{window}+1..s 的月份;市场须无缺失
vol_corr_beta 同上,波动窗口与相关窗口 ρσi/σm\rho\sigma_i/\sigma_m,默认 12 与 60 个月,至少 12 与 36 个月
vasicek_shrink beta、权重、先验 wβ^+(1−w)⋅先验w\hat\beta+(1-w)\cdot\text{先验},默认 0.6 与 1
bab_weights 某月的 beta 向量 wL,wHw_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)                       # covered parity; quote = local currency per 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                    # the inverted quote flips the sign
forward_return = (96.0 - f) / f                               # spot ends at 96
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   # new minus old price at the roll, over the old price
assert abs((1 + naive).prod() - 1) < 1e-12 and abs((1 + trade).prod() - 1 + 0.029126) < 1e-6    # stitched 0%, tradable -2.91%

代码段三: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                    # every asset returns exactly beta x market: BAB = 0
g = lambda x, w: x / (w * x + 1 - w)                          # true beta / scaling beta when the scaling beta is shrunk with weight w
assert abs(g(0.7, 0.6) - g(1.3, 0.6) + 0.2480) < 1e-3         # realised BAB beta -0.248
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])                       # contango makes the last two carry negative
s1 = np.array([99.6, 99.8, 100.1, 100.0])                      # month-end spot
c = futures_carry(s0, f)
r = (s1 - f) / f
assert np.allclose(r, c + (s1 - s0) / f)                       # return = carry + price change
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                            # the price change took part of the carry back

10. 图形解读

图 27-1:carry 组合的平滑累加与实际财富(构造世界)。 左图:橙色虚线是组合 carry 逐月累加(1+∑Cp1+\sum C^{\mathrm p}),蓝线是实际多空收益复利(起点 1,1996 年起的 359 个月),灰色竖线是全局冲击月。右图:月度多空收益的直方图,橙色是冲击月。读法:carry 累加是一条平滑向上的线,实际收益在冲击月大幅向下,之后恢复,但 359 个月的平均收益只有平均 carry 的约三分之一;最大回撤 32%,最差月份 −12.2%-12.2\%,偏度 −0.84-0.84。构造世界,已知被收回比例 γ=0.5\gamma=0.5 与冲击机制。

图27-1:构造世界里 carry 的累加与实际财富

单一路径与 200 个新种子。 上图是一个种子(20261114)的一条路径,里面只有 3 个冲击月(平均 −9.0%-9.0\%,其余月平均 +0.26%+0.26\%)。同一数据生成过程用 200 个新种子(20261115 至 20261314,均为整数seed而非日期;商品世界另用种子 20261115,相同整数出现在不同例子不自动证明随机流独立)各跑一遍:平均收益的中位数 0.148% 每月(5% 分位 −0.072%-0.072\%,95% 分位 0.407%),11.5% 的世界平均收益为负;偏度全部为负(中位 −1.42-1.42,5% 分位 −2.26-2.26,95% 分位 −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)/Sg=(S-F)/S,蓝色阴影为现货升水(做多赚斜率),橙色为期货升水(做多付斜率)。读法:拼接价格几乎重合于现货,可交易序列偏离现货,偏离的方向由斜率的符号与持续时间决定(图中约 2010 至 2015 年长期期货升水,可交易序列大幅落后于现货;2016 年以后多数时间现货升水,可交易序列领先)。

图27-2:可交易收益、拼接价格与现货

图 27-3:行业组合的证券市场线与 beta 分组。 左图:10 个行业的全样本 beta(横轴,无量纲)与月均超额收益(纵轴,% 每月);灰色虚线是通过市场平均超额收益的 CAPM 线(0.70%/月),橙线是 10 个点的拟合线(斜率 0.41)。右图:按 60 个月滚动 beta(收缩 w=0.6w=0.6)排序的低 beta 一半与高 beta 一半(各 5 个行业,等权)的超额财富(对数纵轴,起点 1)。读法:拟合线比 CAPM 线平;低 beta 一半的长期财富更高。10 个点、全样本 beta 是事后估计,只做描述。

图27-3:证券市场线与 beta 分组

图 27-4:BAB 的月度收益与回撤(10 个行业)。 左图:每个点是一个月,横轴是该月市场超额收益(%),纵轴是 BAB 收益(% 每月);橙点是 BAB 最差的 10 个月。右图:BAB 复利财富的回撤。读法:散点向右下倾斜(样本市场回归 beta 估计为负,约 −0.20-0.20),最差 10 个月全部出现在市场上涨的月份;最大回撤 57%。已发布聚合收益之外的、10 个行业构造的 BAB,不含成本与融资利差。

图内“反弹”只指散点横轴的同一收益月市场上涨;它不表示先有市场反弹再造成BAB坏月份的事件顺序或因果。

图27-4: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.6w=0.6、先验 1(Frazzini 与 Pedersen 的常数);BAB:10 个行业的秩权重(式 (16)),不含融资利差;低 beta 一半与低波动一半:按收缩 beta 或过去 12 个月月收益标准差排序,最低 5 个等权对最高 5 个等权。主指标:BAB 的平均月收益及其对市场的回归。

低 beta 与低波动一半(1,166 个信号月,tt 为把月份当独立样本的朴素值)。

组合(5 个行业,等权) 平均超额收益(% 每月) tt 月标准差(%) 年化夏普 对市场的 beta alpha(% 每月,tt)
低 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(−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.99t=1.99(NW 滞后 6 为 2.01),标准差 3.50%,年化夏普 0.20;对市场回归:alpha 0.334%0.334\%(t=3.38t=3.38),beta =−0.197=-0.197(t=−10.7t=-10.7),R2=0.09R^2=0.09。平均杠杆:长腿 1.27 倍,短腿 0.88 倍;长腿平均 beta 0.79,短腿 1.13;两条腿各自的平均超额收益 0.645% 与 0.715%。

缩放用 beta 的收缩权重(同一套排序,只改杠杆)。

缩放用 beta 平均(% 每月) tt 对市场的 beta alpha(% 每月,tt)
原始(w=1.0w=1.0) 0.466 3.94 +0.052+0.052 0.432(3.63)
w=0.8w=0.8 0.322 3.04 −0.081-0.081 0.375(3.54)
w=0.6w=0.6(预先固定的主设定) 0.205 1.99 −0.197-0.197 0.334(3.38)

在该行业样本中,缩放用的收缩越多,对市场的回归 beta 估计越负;不收缩设定的样本回归 beta 估计接近零。这与第6.9节的过度收缩机制相容,但仅凭这些回归结果不能识别最优收缩或其因果来源。但 w=0.8w=0.8 与 w=1.0w=1.0 是看到结果之后加的,不能把它们的更高 tt 当作干净的检验:三种收缩设定相当于 3 次比较,若试验族确为这三项,且边际p值有效、以正态近似换算,双侧5%的Bonferroni参考门槛约为 z=2.39z=2.39(第22章);主设定 t=1.99t=1.99 不超过它。这不调整本章所有分期、费用和分组变体,不能把朴素t直接当精确正态检验。

分期(w=0.6w=0.6)。

收益月区间 月数 平均(% 每月) tt 对市场 beta alpha(% 每月,tt)
1929-07 至 1963-06 408 0.103 0.72 −0.18-0.18 0.235(1.80)
1963-07 至 1999-12 438 0.153 1.05 −0.14-0.14 0.234(1.62)
2000-01 至 2026-08 320 0.405 1.56 −0.33-0.33 0.613(2.47)

三个分期的平均都为正,没有一个单独超过 2;2000 年后标准差更大(4.63%)。分期是按第23–26章沿用的日期划分,不是为本章选的。

融资利差敏感度(w=0.6w=0.6,借款利率比无风险利率每年高 ss;这是假设,不是数据)。

ss(年化) 0 0.5% 1% 2% 4%
平均(% 每月) 0.205 0.193 0.182 0.159 0.114
tt 1.99 1.88 1.77 1.55 1.11

下跌与上涨月份。 把收益月按市场超额收益的正负事后分类(这是诊断,不是可交易的信号):下跌月 462 个,上涨月 704 个。低 beta 一半平均 −2.86%-2.86\%(下跌月)与 +3.05%+3.05\%(上涨月),高 beta 一半 −4.55%-4.55\% 与 +4.11%+4.11\%;低 beta 一半的下跌 beta 与上涨 beta 分别为 0.81 与 0.79,高 beta 一半 1.13 与 1.19。低波动一半与高波动一半:−3.16%-3.16\% 对 −4.25%-4.25\%(下跌月)。

最差月份与回撤。 BAB 最差月是 2001-01:−19.3%-19.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\%。最大回撤 56.6%,谷底在 2025-10。与市场超额收益的相关 −0.30-0.30,与 SMB −0.31-0.31,与 HML +0.03+0.03。

能说什么,不能说什么。 可以说:10 个价值加权行业组合在 1929–2026 的样本里,低 beta 一半的平均超额收益与高 beta 一半几乎相同、风险更低;BAB 的平均收益为正(+0.20%+0.20\% 每月,t≈2t\approx2),在三个分期里均值为正但都不显著;样本市场回归 beta 估计为负,与收缩模型相容,但不能据此识别真实 beta、最优收缩或因果机制;最差月份是市场反弹月。不能说:(1)个股层面存在或不存在低 beta 溢价,10 个行业的结果不检验 Frazzini 与 Pedersen 的个股与跨资产结果;(2)BAB 的收益由融资约束解释,本章没有融资约束的数据;(3)可交易性:没有借券费用、保证金、做空约束与真实融资利率,成本是假设;(4)所有 tt 值都是未经多重检验调整的朴素值,本章评价了 3 个收缩设定、3 个分期、5 个融资利差与 4 个分组(相互有重叠)。

逐资产 carry 研究缺什么。 外汇:每个货币对的现货与远期报价(含买卖价)、报价方向与交割日、对应期限的存款或隐含利率;商品:每个商品的相邻合约价格曲线、合约到期日、换月规则;债券:零息或息票收益率曲线与期货的最便宜可交割券;所有资产:融资利率、保证金与手续费,以及这些数据在 signal_time 是否已经可得。本章没有下载这些数据;Project 4 准备层的缺口表逐项列出。

12. 常见错误

错误 1:报价方向弄反。 把“外币/本币”的价格代入“本币/外币”的公式,carry 的符号就反了(8.1 节:−3.77%-3.77\% 对 +3.92%+3.92\%)。修复:每个公式旁写明 SS 的单位,并写测试:倒数报价必须给出相反符号(代码段一)。

错误 2:把高利率当成 carry 的全部。 carry 是“价格不变”时的收益;外币升值或贬值才决定实际结果(8.1 节:高 4 个百分点的外币利率被 4% 的贬值抵消)。修复:报告 CC 与价格变动两项(6.5)。

错误 3:把连续期货价格当作可交易盈亏。 拼接价格在换月日含新旧合约的价差(6.6、8.4)。修复:用单合约两端价格算收益,再复利(代码段二);报告换月规则与到期日。

错误 4:混用不同期限的合约而不除以期限差。 商品曲线的 carry 是每单位时间的量,T2−T1T_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σm2+σε2\sigma^2=\beta^2\sigma_m^2+\sigma_\varepsilon^2,两个排序可以相反(27-E08);10 个行业里低 beta 一半与低波动一半平均只重合 3.6 个(11 节)。

错误 8:把收缩后的 beta 缩放当作市场中性。 第6.9节有噪声模型在腿估计跨1、缩放正分母及所给条件期望假设下,过度收缩给出负的条件真实暴露;无条件平均另需可积性。11节的 −0.20-0.20 是历史回归估计,不是该因果机制的识别。修复:永远报告 BAB 对市场的回归 beta,并报告缩放用的收缩权重;估计 beta 的代数中性不等于已知真实市场中性;经验评价须报告样本回归估计及其不确定性。

错误 9:杠杆没有成本。 BAB 的长腿需要借入 1/β^L−11/\hat\beta_L-1 单位;借款利差、保证金、做空费用都进收益(8.5、11 节的敏感度);比较杠杆后的夏普与未杠杆的夏普时要写明融资假设。

错误 10:beta 或波动率用了未来数据。 居中窗口或全样本 beta 在 signal_time 时不可得。修复:行 ss 只用 ≤s\le 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                          # change only the last month
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 的信息(第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 的数据

研究流程(10 个行业,真实数据)。 冻结计划:假设“收缩后的 60 个月 beta 低的行业下月超额收益不更低,且 BAB 的平均收益为正”,信号为 vasicek_shrink(rolling_beta(...), 0.6),主指标:BAB 的平均月收益与对市场回归的 beta;先报告两个半组,再报告 BAB,收缩权重与窗口在看结果之前固定;其他设定全部进第22章的账本。结果见 11 节:BAB 平均 0.2045% 每月(t=1.99t=1.99),样本市场回归 beta 估计 −0.20-0.20;三个分期均值都为正但都不显著;融资利差每年 2% 时平均 0.159%。构造世界的结果只为已核输入上的函数与流程提供有限工程证据,不证明任意输入都正确,不是真实世界的效应。

对 Project 4 的约束。 (1) beta、波动率只用 ≤\le 信号月的数据,收缩权重与窗口写入计划;(2) 凡是声称“市场中性”的组合,报告对市场的回归 beta 与 tt;(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 同时点现货/远期、交割日、买卖价、资本与融资约定
债券 carry 不变曲线下持有与滑降 逐债现金流/曲线、期限与复利制、融资和可成交价格
商品 carry 相邻到期合约价差及同合约盈亏 带合约身份的曲线、到期/换月/抵押及费用
低波动/低beta/BAB 截至信号时估计风险、排序与缩放 逐股可用收益/市场基准、估计窗口、收缩与融资/借券规则

French 行业月收益只支持本章已有的聚合行业诊断,既不提供逐股上述字段,也不证明 carry 的真实溢价。将来要接入,先指定报价和分母、因果时钟、缺失与退化政策,再由第28章定义合成与组合约束。当前 C13 对 P4 的修复仅对齐已声明的上市支持集、60名门槛和行业投影/gross;不新增本章因子。第22–23章的研究账本与IC推断、第24–26章的七字段定义继续作为先修链接,不重作经验检验。

14. 本章小结

carry 是“市场条件不变时的收益”,期货里 C=(S−F)/XC=(S-F)/X,外汇远期 C=(r∗−r)/(1+r)C=(r^*-r)/(1+r)(报价为本币/外币),零息债是收益率部分加滑降部分,商品是 (F1−F2)/(F2(T2−T1))(F^1-F^2)/(F^2(T_2-T_1));收益 =C+=C+ 价格变动,价格变动可以收回 carry 的一大部分;同资本口径的高减低组合carry按所述权重条件非负,实际收益仍可负。连续期货价格拼接不等于可交易收益,两者之差是换月价差。低 beta 与低波动不同:σ2=β2σm2+σε2\sigma^2=\beta^2\sigma_m^2+\sigma_\varepsilon^2;BAB 把低 beta 腿加杠杆、高 beta 腿去杠杆,估计 beta 下对市场中性;无噪声模型在正分母区间内向1收缩给出负暴露;有噪声模型在第6.9节完整条件下最优收缩给出条件中性,过度/不足收缩的符号还需腿估计跨1和正分母;历史负beta不识别该机制。10 个行业组合上:低 beta 一半的平均超额收益与高 beta 一半几乎相同、风险更低;BAB 平均 0.20% 每月(t≈2t\approx2),样本市场回归 beta 估计 −0.20-0.20,分期均值为正但都不显著,最差月份是市场反弹月,最大回撤 57%。构造的外汇世界里,平均收益只有平均 carry 的约三分之一,偏度为负。适用边界:10 个行业不是个股;没有真实外汇、期货与融资数据;成本与融资利差是假设;构造世界的冲击机制是设定的。

15. 练习

27-E01(手算) 报价为美元/欧元,S=1.10S=1.10;美元年利率 4%4\%,欧元年利率 2%2\%,一年期简单利率,CIP 成立。求 FF、做多欧元远期的 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\%,下月价格变动 ΔS/F\Delta S/F 为 −0.4%,−0.2%,+0.1%,+0.5%-0.4\%,-0.2\%,+0.1\%,+0.5\%。多头为前两个、空头为后两个,权重 ±0.5\pm0.5。求组合 carry、组合收益、被收回的比例,以及收益对 carry 的横截面回归斜率。

27-E06(手算) 四个证券的 beta 估计 0.5,0.8,1.3,1.60.5,0.8,1.3,1.6,下月超额收益 1.0%,1.2%,1.5%,2.5%1.0\%,1.2\%,1.5\%,2.5\%。求 BAB 的权重、两条腿的 beta 与杠杆、BAB 收益;若借款利率每月高 0.3%0.3\%,长腿借款成本与扣除成本后的收益。

27-E07(手算) 某低 beta 腿的真实 beta 为 0.4,高 beta 腿为 1.6,没有估计噪声。分别以 w=1w=1 与 w=0.6w=0.6(先验 1)收缩的 beta 缩放,求两条腿的真实暴露与 BAB 的真实 beta。

27-E08(概念与手算) 市场波动率 16%;X:β=0.5\beta=0.5、特质波动 25%;Y:β=1.2\beta=1.2、特质波动 5%。求两者的总波动率,说明按 beta 与按波动率排序的名次,并说明低 beta 组合为什么需要杠杆才能与市场比较。

27-N01(现金流与接口诊断) 给定一份合约 S=102,F=100,rf=1%S=102,F=100,r^f=1\%,真实到期现货 99。(a)分别用 X=50,100X=50,100 算 carry、价格变动项、超额收益、抵押利息和总收益。(b)给定 BAB 腿 beta 为 0.675,1.3250.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 与手算值一致,并断言久期近似小于精确滑降。验收:三条断言通过。

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.2w=1,0.5,0.2 下计算 BAB 的真实 beta(用真实 beta 与缩放用 beta 之比),各取 200 个模拟的平均。验收:w=1w=1 时大于 0.3,w=0.5w=0.5 时绝对值小于 0.05,w=0.2w=0.2 时小于 −0.15-0.15。

17. 挑战题

27-C01(推导) 设 BAB 两条腿的真实 beta 为 0<xL<1<xH0<x_L<1<x_H,缩放用的 beta 为 β^=wx+(1−w)\hat\beta=wx+(1-w),0<w≤10<w\le1(于是两条腿的缩放 beta 都严格为正)。推出真实组合 beta =g(xL)−g(xH)=g(x_L)-g(x_H),g(x)=x/(wx+1−w)g(x)=x/(wx+1-w);证明 w<1w<1 时它严格为负、w=1w=1 时为零;再设估计带噪声 β^=β+e\hat\beta=\beta+e(各证券的 βi∼N(1,σβ2)\beta_i\sim N(1,\sigma_\beta^2)、ei∼N(0,σe2)e_i\sim N(0,\sigma_e^2),全部相互独立),证明用 w∗=σβ2/(σβ2+σe2)w^*=\sigma_\beta^2/(\sigma_\beta^2+\sigma_e^2) 收缩时 E[βi∣β^]E[\beta_i\mid\hat\beta] 等于缩放用的 beta,两条腿给定 β^\hat\beta 的条件真实暴露为 1(在 sL,sH≠0s_L,s_H\neq0 的观测区域),并在 β^L<1<β^H\hat\beta_L<1<\hat\beta_H、sL,sH>0s_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.12157F=1.10\times1.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\%;用利率 (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\%(美元利率更高,持有美元一侧赚利差)。现货 1.12:做多远期收益 (1.12−1.12157)/1.12157=−0.140%(1.12-1.12157)/1.12157=-0.140\%;存款比较:欧元存款换回美元 1.12/1.10×1.02=1.038551.12/1.10\times1.02=1.03855,美元存款 1.041.04,超额 (1.03855−1.04)/1.04=−0.140%(1.03855-1.04)/1.04=-0.140\%,一致。超额不亏要求现货至少等于 FF,即欧元升值至少约 1.96%1.96\%;严格超过 FF 才有正的远期超额收益。

27-E02 y3=4%y_3=4\%,y2=3.5%y_2=3.5\%。总收益 =1.043/1.0352−1=1.124864/1.071225−1=5.0073%=1.04^3/1.035^2-1=1.124864/1.071225-1=5.0073\%。收益率部分 4.0%4.0\%;滑降部分 (1.04/1.035)2−1=0.9685%(1.04/1.035)^2-1=0.9685\%;1.04×1.009685=1.0500731.04\times1.009685=1.050073。扣除 3% 融资:超额 2.0073%2.0073\%。久期近似:滑降后的 2 年零息债修正久期 2/1.035=1.93242/1.035=1.9324,滑降 ≈1.9324×(0.04−0.035)=0.9662%\approx1.9324\times(0.04-0.035)=0.9662\%,与精确的 0.9685% 相差 0.002 个百分点;用滑降前 3 年债的久期 3/1.04=2.8853/1.04=2.885 会得 1.442%,高估。

27-E03 C=(80−82)/(82×2)=−1.2195%C=(80-82)/(82\times2)=-1.2195\% 每月(简单年化 −14.63%-14.63\%,假设曲线不变);期货升水(远月更贵)。在题设线性每月代理与资本口径下,抵押资本赚0.3% 每月:总收益 −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\%,58/59−1=−1.695%58/59-1=-1.695\%;B 的 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\%。拼接序列 60,59,61,6060,59,61,60:−1.667%-1.667\%、+3.390%+3.390\%(59→61)、−1.639%-1.639\%,累计 00。换月日差 3.390−(−1.695)=5.085%3.390-(-1.695)=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\%。各货币收益 =C+ΔS/F=0.1%,0.1%,−0.1%,−0.1%=C+\Delta 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.6%0.6\%,占 75%,实际收益只有 carry 的 25%。回归:Cˉ=0\bar C=0,rˉ=0\bar r=0,斜率 =∑Cr/∑C2=(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(以百分点计,比例不变);若仅用第6.5节的线性斜率参数化,得到 1−b≈78.38%1-b\approx78.38\%;它是该四货币截面OLS的描述,不是上面组合回吐75%的同一参数,也不识别总体精确 γ\gamma。

27-E06 名次 1,2,3,41,2,3,4:wL=(0.75,0.25,0,0)w_L=(0.75,0.25,0,0),wH=(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;β^H=0.25×1.3+0.75×1.6=1.525\hat\beta_H=0.25\times1.3+0.75\times1.6=1.525;杠杆 1/0.575=1.7391/0.575=1.739、1/1.525=0.6561/1.525=0.656。rL=0.75×1.0+0.25×1.2=1.05%r_L=0.75\times1.0+0.25\times1.2=1.05\%,rH=0.25×1.5+0.75×2.5=2.25%r_H=0.25\times1.5+0.75\times2.5=2.25\%;rBAB=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\%。长腿借入 0.7390.739 单位,借款成本 0.3%×0.739=0.222%0.3\%\times0.739=0.222\%;扣除后 0.351−0.222=0.129%0.351-0.222=0.129\%。短腿杠杆 0.656<10.656<1,不借款。

27-E07 w=1w=1:缩放用 beta 等于真实 beta,长腿真实暴露 0.4/0.4=10.4/0.4=1,短腿 1.6/1.6=11.6/1.6=1,BAB beta =0=0。w=0.6w=0.6:缩放用 0.6×0.4+0.4=0.640.6\times0.4+0.4=0.64 与 0.6×1.6+0.4=1.360.6\times1.6+0.4=1.36;长腿真实暴露 0.4/0.64=0.6250.4/0.64=0.625,短腿 1.6/1.36=1.1761.6/1.36=1.176;BAB beta =0.625−1.176=−0.551=0.625-1.176=-0.551。向 1 收缩使低 beta 腿的杠杆不足、高 beta 腿的去杠杆不足,净暴露为负。真实中性所需的空头规模为 1/1.6=0.6251/1.6=0.625,收缩后却取 1/1.36=0.7352941/1.36=0.735294,空头更大,因此其真实负暴露更大。

27-E08

σX=(0.5×0.16)2+0.252=0.0064+0.0625=26.2%,σY=(1.2×0.16)2+0.052=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}

按 beta:X 低 Y 高;按波动率:Y 低 X 高,名次相反。低 beta 组合 βp<1\beta_p<1,要与市场比较同样的市场暴露,需要 1/βp1/\beta_p 倍(βp=0.7\beta_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)                           # true betas
        est = true + rng.normal(0.0, 0.25, n)                     # noisy estimates; optimal weight 0.25^2 / (0.25^2 + 0.25^2) = 0.5
        scaled = pd.Series(w * est + (1 - w))                     # shrunk beta used for ranking and scaling
        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:长腿 wL⊤βT/β^Lw_L^\top\beta^T/\hat\beta_L,短腿 wH⊤βT/β^Hw_H^\top\beta^T/\hat\beta_H;无噪声时 β^=wx+(1−w)\hat\beta=wx+(1-w),所以两条腿分别是 g(xL)g(x_L) 与 g(xH)g(x_H),g(x)=x/(wx+1−w)g(x)=x/(wx+1-w)。求导:g′(x)=[(wx+1−w)−wx]/(wx+1−w)2=(1−w)/(wx+1−w)2g'(x)=\bigl[(wx+1-w)-wx\bigr]/(wx+1-w)^2=(1-w)/(wx+1-w)^2,w<1w<1 时严格为正。gg 在 x=−(1−w)/wx=-(1-w)/w 有极点,导数为正只说明它在极点两侧各自递增;题设 0<xL<xH0<x_L<x_H 使两条腿的缩放 beta wx+1−w>0wx+1-w>0,即两点都在极点右侧同一区间,所以 g(xL)<g(xH)g(x_L)<g(x_H):BAB 的真实 beta <0<0(反例:xL=−1x_L=-1,xH=2x_H=2,w=0.6w=0.6 时缩放 beta 为 −0.2-0.2 与 1.61.6,差为 5−1.25=+3.755-1.25=+3.75);w=1w=1 时 g≡1g\equiv1,差为零。数值(xL=0.7x_L=0.7,xH=1.3x_H=1.3,w=0.6w=0.6):0.7/0.82−1.3/1.18=0.8537−1.1017=−0.2480.7/0.82-1.3/1.18=0.8537-1.1017=-0.248。噪声情形:腿的权重只由 β^\hat\beta 的名次决定。设各证券的 (βi,ei)(\beta_i,e_i) 截面独立且联合正态,则给定整个向量 β^\hat\beta 的条件期望等于只给定 β^i\hat\beta_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),w∗=Cov(β,β^)/Var(β^)=σβ2/(σβ2+σe2)w^*=\mathrm{Cov}(\beta,\hat\beta)/\mathrm{Var}(\hat\beta)=\sigma_\beta^2/(\sigma_\beta^2+\sigma_e^2)。缩放用的收缩 beta si=wβ^i+1−ws_i=w\hat\beta_i+1-w,长腿 sL=∑iwL,isis_L=\sum_iw_{L,i}s_i,真实腿 beta βLT=∑iwL,iβi\beta^T_L=\sum_iw_{L,i}\beta_i,所以 E[βLT∣β^]=w∗β^L+1−w∗E[\beta^T_L\mid\hat\beta]=w^*\hat\beta_L+1-w^*。取 w=w∗w=w^* 时它恰好等于 sLs_L,长腿给定 β^\hat\beta 的条件暴露 E[βLT/sL∣β^]=E[βLT∣β^]/sL=1E[\beta^T_L/s_L\mid\hat\beta]=E[\beta^T_L\mid\hat\beta]/s_L=1(sLs_L 是常数,没有 Jensen 项);短腿同理,所以给定 β^\hat\beta 时 BAB 的真实 beta 的条件期望为零(要求 sL,sH≠0s_L,s_H\ne0;无条件期望还需要比值可积,正态尾部下不能默认,这里不证明)。w≠w∗w\ne w^*:记 m=w∗β^+1−w∗m=w^*\hat\beta+1-w^* 为条件期望,则 s−m=(w−w∗)(β^−1)s-m=(w-w^*)(\hat\beta-1)。设 β^L<1<β^H\hat\beta_L<1<\hat\beta_H 且 sL,sH>0s_L,s_H>0(与 bab_returns 拒绝非正腿 beta 的政策一致;sH>0s_H>0 在 β^H>1\hat\beta_H>1 时自动成立)。w>w∗w>w^* 时 sL<mLs_L<m_L,除以正的 sLs_L 得比值 mL/sL>1m_L/s_L>1;sH>mHs_H>m_H,比值 <1<1;净暴露为正(收缩不足)。w<w∗w<w^* 时两个不等式都反向,为负(过度收缩)。正分母不能省:β^L=−2\hat\beta_L=-2,β^H=2\hat\beta_H=2,w∗=0.5w^*=0.5,w=0.6w=0.6 时 sL=−0.8s_L=-0.8,mL=−0.5m_L=-0.5,比值 0.625<10.625<1,净暴露 0.625−1.5/1.6=−0.31250.625-1.5/1.6=-0.3125。27-P03 的数值(+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 排序的横截面斜率 bb(对应 1−γ1-\gamma)。崩溃的两个报告指标:偏度与最差月份(及同月全球冲击代理变量的取值)、最大回撤。冻结计划必须在看收益之前写明报价方向、期限、换月与融资假设与变体个数。

27-N01完整答案。 (a)合约carry盈亏 102−100=2102-100=2,真实盈亏 99−100=−199-100=-1,价格变动 99−102=−399-102=-3。X=50X=50:C=4%C=4\%、变动 −6%-6\%、超额 −2%-2\%;利息 0.5、权益49.5、总收益 −1%-1\%。X=100X=100:C=2%C=2\%、变动 −3%-3\%、超额 −1%-1\%;利息1、权益100、总收益0。两种分解都等于真实盈亏除以资本,再加同期无风险收益。(b)L=40/27=1.481481L=40/27=1.481481,H=40/53=0.754717H=40/53=0.754717;风险净额 1040/1431=0.7267651040/1431=0.726765,gross 3200/1431=2.2361983200/1431=2.236198;估计beta L(0.675)−H(1.325)=0L(0.675)-H(1.325)=0;融资腿 −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)。

搜索教材

输入关键词开始搜索。