“借日元、买澳元,赚两边利差。“——外汇套息(Carry Trade)可能是金融里最朴素、也最持久的策略:低息货币(融资货币,如日元、瑞郎)做空,高息货币(投资货币,如澳元、巴西雷亚尔)做多,每个月把利差落袋。它不需要预测方向,长期看却往往能赚钱。
这就成了著名的套息之谜(Carry Trade Puzzle):如果这是免费午餐,套利早该把它抹平。Brunnermeier、Nagel 与 Pedersen(2008)给出答案——套息赚的不是无风险利差,而是风险补偿:它在常态小赚,却在每一次全球风险事件里剧烈亏损,像一份被持续卖出的”保险”。本文用 G10 货币从零模拟一个套息组合,把”利差 vs 风险补偿”的争论跑成看得见的数据。

一、策略构造:按利差排序,多高息、空低息#
套息组合不预测谁涨,只按利率高低下注。每月按名义利率排序,做多最高的几只、做空最低的几只,等权持有、月末再平衡:
import numpy as np
CURRENCIES = ["AUD","NZD","BRL","ZAR","MXN","USD","JPY","CHF","EUR","SEK"]
RATES = np.array([5.6, 5.2, 11.5, 8.3, 6.8, 4.8, 0.1, 0.4, 2.1, 2.6]) # 年化 %
def build_portfolio(ret, rates, n=3):
"""做多利率最高 n 只、做空最低 n 只,等权。ret: (T, n_assets) 对数收益。"""
T = ret.shape[0]
port = np.zeros(T)
for t in range(T):
order = np.argsort(rates)[::-1]
longs, shorts = order[:n], order[-n:]
pr = 0.0
for j in longs: pr += (1/n) * ret[t, j]
for j in shorts: pr += (1/n) * (-ret[t, j]) # 做空 = 负收益
port[t] = pr
return portpython这就是套息的”无脑”之处:它不猜方向,只赌”高息货币相对低息货币不会跌太多”。但下面会看到,这个看似安全的赌注在危机里有多凶。
二、从零模拟:把”危机”写进汇率#
汇率收益拆成三块:利差成分(持有高息赚到的漂移)、风险因子暴露(全球风险规避时高息货币贬值、低息避险货币升值)、特质噪声。关键设定是符号——高息货币对”风险因子”负向敏感(风险规避时跌),低息避险货币正向(风险规避时涨):
np.random.seed(20260713)
BETA_FX = np.array([-0.7,-0.65,-1.0,-0.95,-0.8, 0.0, 0.55,0.5,0.25,0.15]) # 高息负、低息正
T = 300 # 约 25 年月度数
# 风险因子:HIGH = 风险规避/流动性紧张。常态小幅正漂移,含 3 次危机冲击
risk_factor = np.random.normal(0.002, 0.025, T)
crisis_idx = [120, 200, 265]
for ci in crisis_idx:
risk_factor[ci], risk_factor[ci + 1] = 0.13, 0.08
ret = np.zeros((T, len(CURRENCIES)))
for j in range(len(CURRENCIES)):
carry_drift = (RATES[j] - RATES[5]) / 100.0 / 12.0 # 相对美元利差月度漂移
ret[:, j] = carry_drift + BETA_FX[j] * risk_factor + np.random.normal(0, 0.012, T)
port_ret = build_portfolio(ret, RATES, n=3)
eq_ret = risk_factor + np.random.normal(0, 0.02, T) # 全球股票基准代理python注意危机设定:风险因子飙升(而非下跌)。因为因子定义成”风险规避程度”,越高越糟糕。此时高息货币 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() * 100python实际跑出来:年化收益 ≈ 3.5%、年化波动 ≈ 14.2%、Sharpe ≈ 0.25、最大回撤 ≈ −38.2%。
图 2 把套息净值(蓝)和全球股票(灰)叠在对数轴上:长期它确实往上爬,但三次危机(红线)处都同步重挫。图 3 的水下曲线更刺眼——套息的致命伤不是慢慢跌,而是危机里几个月内回撤 30%+,远超股票同期的回撤。


四、核心检验:负向 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。

这个负 beta 是整篇文章的题眼:套息组合相当于做空一份”全球风险保险”。平时大家风险偏好高、因子低,你稳稳收利差(保费);一旦风险事件来袭、因子飙升,你得巨额赔付(组合暴跌)。正收益就是市场付给你的风险溢价——不是白赚的利差,而是承担崩盘风险的补偿。这和管理期货、卖出波动率异曲同工:正偏度被换成负偏度,赚小钱、亏大钱。
图 5 把这点画到极致:常态月份收益围绕小正紧密聚集,而 6 根红线(危机月)平均 −13.6%,最深的单月亏损把多年累积吞噬。
这层关系放到学术史里,正好对应 Fama(1984)提出的远期溢价之谜:按无抛补利率平价,高息货币的未来贬值应恰好抵消利差,但实证里高息货币反而常常升值(forward rate 是 biased predictor)。负的 crisis beta 给出了统一解释——高息货币因为要在危机里暴跌,平时才被「风险溢价」推着相对升值,利差不是白送的,而是为那次暴跌预先付的代价。

五、能不能”既要利差、又要少崩”?#
既然崩盘来自对风险因子的负暴露,自然想到用趋势/波动过滤降低危机暴露:
- 波动目标化:按套息组合自身波动缩放仓位,危机波动放大时自动减仓,能压低回撤但也会削掉部分收益。
- 趋势过滤:当高息货币相对低息货币跌破均线(趋势转弱)时空仓,本质是止损,把”死扛到崩盘”换成”早走一步”。
- 分散化篮子:单对 AUD/JPY 的崩盘相关极高,扩展到多对、跨新兴市场与 G10,能把 idiosyncratic 部分对冲掉,但系统性危机(全局风险因子)无法靠分散消除——因为负 beta 是整个策略的结构性特征。
换句话说:过滤能减伤,但套息的正收益与危机风险是一体两面,想完全去掉崩盘,就等价于去掉了它的收益来源。
六、真实陷阱(实盘必看)#
- 交易成本与展期:每次月末再平衡都有买卖价差与隔夜拆借点差,高息端借入/低息端融出的 basis 会吃掉一部分利差,尤其利率高位时。
- 融资流动性风险:Brunnermeier 等强调,套息在”别人都在平仓”时最痛——流动性干涸时被迫平仓,亏损被放大成踩踏,这不是模型波动能 capture 的。
- 央行干预:低息融资货币(如日元)一旦被央行压制或政策转向,单日跳变可吞掉数月利差;瑞士央行 2015 年放弃汇率下限就是经典一刀。
- 低利率环境压缩空间:当全球利率趋零,可套的利差变薄,而风险因子的崩溃幅度不变,风险收益比急剧恶化——近年套息吸引力下降的主因。
- 新兴市场的更大崩盘:BRL、ZAR 这类高息 EM 货币,危机 beta 绝对值更大(本文 BETA_FX 给到 −1.0 以上),收益更肥但崩得更狠,需用更大分散与更紧止损。
- FX basis 与 Cross-currency swap:真实融资成本和”利率差”之间隔着外汇基差,大资金的实际 carry 远低于名义利差,个人模拟常忽略这点而高估收益。
结论#
套息交易不是免费的利差午餐,而是一张被持续签发的危机保险单:用常态的小赚,去赌自己不会在风险事件里被迫巨额赔付。本文的模拟把这点跑成了硬数据——负向 risk beta(−1.36)、危机月均值 −13.6%、最大回撤 −38%,三件事说的是同一句话:你赚的每一分利差,都是市场为你承担崩盘风险付的保费。理解了这一点,就不会在 2008 或 2020 的套息崩盘里问”为什么”,而会提前问”我的仓位扛不扛得住那次赔付”。这也是为什么专业套息基金从不全仓裸做、必然配套波动目标与趋势止损:他们卖保险,但一定先算清自己赔不赔得起。
本文组合与图表基于 G10 利率与汇率的模拟数据从零构建,用于演示套息的收益结构与风险补偿机制;实盘需接入真实利率、外汇即远掉报价与交易成本,并注意第六节的六类真实陷阱。