halo 的技术博客

返回

“借日元、买澳元,赚两边利差。“——外汇套息(Carry Trade)可能是金融里最朴素、也最持久的策略:低息货币(融资货币,如日元、瑞郎)做空,高息货币(投资货币,如澳元、巴西雷亚尔)做多,每个月把利差落袋。它不需要预测方向,长期看却往往能赚钱。

这就成了著名的套息之谜(Carry Trade Puzzle):如果这是免费午餐,套利早该把它抹平。Brunnermeier、Nagel 与 Pedersen(2008)给出答案——套息赚的不是无风险利差,而是风险补偿:它在常态小赚,却在每一次全球风险事件里剧烈亏损,像一份被持续卖出的”保险”。本文用 G10 货币从零模拟一个套息组合,把”利差 vs 风险补偿”的争论跑成看得见的数据。

G10 货币利率:红=套息做多端(高息),蓝=做空端(低息/融资货币)

一、策略构造:按利差排序,多高息、空低息#

套息组合不预测谁涨,只按利率高低下注。每月按名义利率排序,做多最高的几只、做空最低的几只,等权持有、月末再平衡:

这就是套息的”无脑”之处:它不猜方向,只赌”高息货币相对低息货币不会跌太多”。但下面会看到,这个看似安全的赌注在危机里有多凶。

二、从零模拟:把”危机”写进汇率#

汇率收益拆成三块:利差成分(持有高息赚到的漂移)、风险因子暴露(全球风险规避时高息货币贬值、低息避险货币升值)、特质噪声。关键设定是符号——高息货币对”风险因子”负向敏感(风险规避时跌),低息避险货币正向(风险规避时涨):

注意危机设定:风险因子飙升(而非下跌)。因为因子定义成”风险规避程度”,越高越糟糕。此时高息货币 BETA_FX<0 收益被压低(long 亏),低息避险货币 BETA_FX>0 升值(short 也亏)——套息的两端同时亏损,这正是它崩盘的机制。

三、结果:长期能赚,但尾巴极肥#

nav_port = np.cumprod(1 + port_ret)
nav_eq   = np.cumprod(1 + eq_ret)

ann  = port_ret.mean() * 12
vol  = port_ret.std()  * np.sqrt(12)
sharpe = ann / vol
def drawdown(nav):
    peak = np.maximum.accumulate(nav)
    return nav / peak - 1.0
maxdd = drawdown(nav_port).min() * 100
python

实际跑出来:年化收益 ≈ 3.5%、年化波动 ≈ 14.2%、Sharpe ≈ 0.25、最大回撤 ≈ −38.2%

图 2 把套息净值(蓝)和全球股票(灰)叠在对数轴上:长期它确实往上爬,但三次危机(红线)处都同步重挫。图 3 的水下曲线更刺眼——套息的致命伤不是慢慢跌,而是危机里几个月内回撤 30%+,远超股票同期的回撤。

套息组合累积净值 vs 全球股票:长期跑赢,但风险因子飙升期同步重挫

套息组合的回撤:危机中回撤可达 −38%,远超常态波动

四、核心检验:负向 beta 就是”风险补偿”的证据#

套息之谜的答案,藏在一次回归里。把套息的超额收益对全球风险因子回归:

excess = port_ret - 0.0025                       # 减去月度无风险
X = np.column_stack([np.ones(T), risk_factor])
beta, _, _, _ = np.linalg.lstsq(X, excess, rcond=None)
resid = excess - X @ beta
sig2  = resid @ resid / (T - 2)
se    = np.sqrt(np.diag(sig2 * np.linalg.inv(X.T @ X)))
corr  = np.corrcoef(risk_factor, excess)[0, 1]
python

结果:风险因子 β = −1.36(t ≈ −44.8),与超额收益负相关 ρ ≈ −0.7

套息超额收益 vs 全球风险因子:显著负斜率,因子越高(越避险)套息越亏

这个负 beta 是整篇文章的题眼:套息组合相当于做空一份”全球风险保险”。平时大家风险偏好高、因子低,你稳稳收利差(保费);一旦风险事件来袭、因子飙升,你得巨额赔付(组合暴跌)。正收益就是市场付给你的风险溢价——不是白赚的利差,而是承担崩盘风险的补偿。这和管理期货、卖出波动率异曲同工:正偏度被换成负偏度,赚小钱、亏大钱。

图 5 把这点画到极致:常态月份收益围绕小正紧密聚集,而 6 根红线(危机月)平均 −13.6%,最深的单月亏损把多年累积吞噬。

这层关系放到学术史里,正好对应 Fama(1984)提出的远期溢价之谜:按无抛补利率平价,高息货币的未来贬值应恰好抵消利差,但实证里高息货币反而常常升值(forward rate 是 biased predictor)。负的 crisis beta 给出了统一解释——高息货币因为要在危机里暴跌,平时才被「风险溢价」推着相对升值,利差不是白送的,而是为那次暴跌预先付的代价。

常态小赚 vs 危机大亏:6 根红线为危机月,均值 −13.6%,印证利差是风险补偿

五、能不能”既要利差、又要少崩”?#

既然崩盘来自对风险因子的负暴露,自然想到用趋势/波动过滤降低危机暴露:

  • 波动目标化:按套息组合自身波动缩放仓位,危机波动放大时自动减仓,能压低回撤但也会削掉部分收益。
  • 趋势过滤:当高息货币相对低息货币跌破均线(趋势转弱)时空仓,本质是止损,把”死扛到崩盘”换成”早走一步”。
  • 分散化篮子:单对 AUD/JPY 的崩盘相关极高,扩展到多对、跨新兴市场与 G10,能把 idiosyncratic 部分对冲掉,但系统性危机(全局风险因子)无法靠分散消除——因为负 beta 是整个策略的结构性特征。

换句话说:过滤能减伤,但套息的正收益与危机风险是一体两面,想完全去掉崩盘,就等价于去掉了它的收益来源。

六、真实陷阱(实盘必看)#

  1. 交易成本与展期:每次月末再平衡都有买卖价差与隔夜拆借点差,高息端借入/低息端融出的 basis 会吃掉一部分利差,尤其利率高位时。
  2. 融资流动性风险:Brunnermeier 等强调,套息在”别人都在平仓”时最痛——流动性干涸时被迫平仓,亏损被放大成踩踏,这不是模型波动能 capture 的。
  3. 央行干预:低息融资货币(如日元)一旦被央行压制或政策转向,单日跳变可吞掉数月利差;瑞士央行 2015 年放弃汇率下限就是经典一刀。
  4. 低利率环境压缩空间:当全球利率趋零,可套的利差变薄,而风险因子的崩溃幅度不变,风险收益比急剧恶化——近年套息吸引力下降的主因。
  5. 新兴市场的更大崩盘:BRL、ZAR 这类高息 EM 货币,危机 beta 绝对值更大(本文 BETA_FX 给到 −1.0 以上),收益更肥但崩得更狠,需用更大分散与更紧止损。
  6. FX basis 与 Cross-currency swap:真实融资成本和”利率差”之间隔着外汇基差,大资金的实际 carry 远低于名义利差,个人模拟常忽略这点而高估收益。

结论#

套息交易不是免费的利差午餐,而是一张被持续签发的危机保险单:用常态的小赚,去赌自己不会在风险事件里被迫巨额赔付。本文的模拟把这点跑成了硬数据——负向 risk beta(−1.36)、危机月均值 −13.6%、最大回撤 −38%,三件事说的是同一句话:你赚的每一分利差,都是市场为你承担崩盘风险付的保费。理解了这一点,就不会在 2008 或 2020 的套息崩盘里问”为什么”,而会提前问”我的仓位扛不扛得住那次赔付”。这也是为什么专业套息基金从不全仓裸做、必然配套波动目标与趋势止损:他们卖保险,但一定先算清自己赔不赔得起。

本文组合与图表基于 G10 利率与汇率的模拟数据从零构建,用于演示套息的收益结构与风险补偿机制;实盘需接入真实利率、外汇即远掉报价与交易成本,并注意第六节的六类真实陷阱。

Carry Trade 套息:赚的是利差还是风险补偿
https://blog.halo26812.eu.org/blog/carry-trade-strategy
Author halo
Published at 2026年7月13日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨