mcpField
F
fixed-income-structured

fixed-income-structured

github.com/joellewis其他218672 次安装15 周前更新
代码仓库

关于 fixed-income-structured

面向金融从业者的结构化产品分析技能,涵盖 MBS、ABS 和 CLO 的估值与风险。内容结合核心概念、公式、案例、常见误区及可运行的 Python 示例。

主要功能

  1. 01MBS 提前还款与负凸性概念
  2. 02PSA、CPR 和 SMM 计算
  3. 03WAL 与分层结构分析
  4. 04结构化产品 OAS 估值概念
  5. 05可验证输出的 Python 示例

适用场景

  1. 01按 PSA 假设估算月度提前还款
  2. 02比较 CMO 各分层的风险
  3. 03分析 CLO 次级保护与现金流瀑布
  4. 04运行并验证所附计算示例

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/joellewis/finance_skills --skill fixed-income-structured

安装后在 Claude Code 中输入/fixed-income-structured确认已加载。

附带文件scripts/fixed_income_structured.py

详细介绍

固定收益 — 结构化产品

核心概念

MBS 过手证券

由一组抵押贷款组成,其现金流(本金、利息、提前还款)按比例转交给投资者。机构 MBS(Ginnie Mae、Fannie Mae、Freddie Mac)享有政府或政府支持企业的信用损失担保,因此主要风险是提前还款风险。非机构 MBS 不享有此类担保,因此同时承担信用风险和提前还款风险。

提前还款风险

利率下降时,借款人可以通过再融资提前偿还本金。这会产生负凸性——利率下跌时,MBS 的价格涨幅低于可比美国国债,因为提前还款加快,缩短了债券的有效期限。提前还款风险有两个方面:

期限缩短风险: 利率下跌,提前还款加快,久期缩短。投资者收回本金时,再投资利率已经降低。

期限延长风险: 利率上升,提前还款放缓,久期延长。投资者被锁定在低于市场水平的票息中,时间比预期更长。

PSA 提前还款模型

公共证券协会模型提供了一个基准提前还款速度:

100% PSA = 前 30 个月的 CPR 从 0% 线性上升至 6%,此后保持在 6% CPR。

在 150% PSA 下,所有速度乘以 1.5(例如,平台值为 9% CPR)。在 200% PSA 下,平台值为 12% CPR。

CPR 和 SMM

CPR(条件提前还款率): 按年计算的提前还款率,占剩余资产池余额的百分比。

SMM(单月死亡率): 月度提前还款率。

SMM = 1 - (1 - CPR)^(1/12)

加权平均期限(WAL)

WAL = sum(t × Principal_t) / Total Principal。与到期日不同,WAL 会考虑本金偿还的时间(包括计划还款和提前还款)。对于摊还型证券,WAL 短于到期日,且会受到提前还款假设的影响。

CMO 分档

抵押贷款担保债券将 MBS 现金流重新分配到风险特征各异的分档中:

顺序偿付: 本金先流向第一档,直至其偿还完毕,然后流向第二档,以此类推。较早偿还的分档久期较短,较晚偿还的分档久期较长。

PAC(计划摊还类别): 在一定的提前还款速度区间内(例如,100-250% PSA)提供可预测的本金偿还计划。其稳定性是以由伴随/支持档承担提前还款变动风险为代价的。

支持/伴随档: 吸收超出预期或低于预期的提前还款,以保护 PAC 档。久期波动性很高。

ABS(资产支持证券)

由非抵押贷款资产组成的证券化资产池:

  • 汽车贷款:分期摊还,现金流相对可预测
  • 信用卡:循环信贷,先经历循环期,随后进入受控摊还期
  • 学生贷款:期限较长,由收入驱动的还款方式带来不确定性
CLO(抵押贷款债务凭证)

由杠杆贷款组成的分档投资组合(通常包含 150-250 笔贷款)。AAA 档受益于显著的次级保护(其下方的结构部分占 30-40%)。权益档在所有优先级分档获得偿付后接收剩余现金流。当投资组合表现恶化时,瀑布测试(超额抵押测试和利息覆盖测试)会重新分配现金流,以保护优先级分档。

瀑布结构

现金流按优先级分配:优先级分档先获得利息和本金,其次是夹层,最后是权益档。若资产池表现恶化,较低级别的分档会先吸收损失(次级保护为优先级分档提供保障)。违反超额抵押(OC)测试和利息覆盖(IC)测试时,会触发现金流转移。

结构化产品的 OAS

OAS 对 MBS 至关重要,因为它能反映提前还款期权性。标准修正久期不适用于 MBS——应使用有效久期(通过 OAS 模型计算)或经验久期。对利率路径及相应提前还款反应进行蒙特卡洛模拟,是 MBS 的标准估值方法。

关键公式

公式表达式用途
根据 CPR 计算 SMMSMM = 1 - (1-CPR)^(1/12)月度提前还款率
根据 SMM 计算 CPRCPR = 1 - (1-SMM)^12将月度利率年化
PSA CPR(第 t 个月,t<=30)CPR = 6% × (t/30) × PSA/100递增式提前还款模型
PSA CPR(第 t 个月,t>30)CPR = 6% × PSA/100平台式提前还款模型
WALsum(t × Principal_t) / Total Principal本金偿还的平均时间
OAS 价格P = E[sum CF_t(path) / (1+s_t+OAS)^t]MBS 估值

示例详解

示例 1:将 PSA 转换为 CPR

已知: 150% PSA,第 20 个月 计算: 第 20 个月的 CPR 和 SMM 解答: 100% PSA 下,第 20 个月:CPR = 6% × (20/30) = 4.0% 150% PSA 下:CPR = 4.0% × 1.5 = 6.0% SMM = 1 - (1 - 0.06)^(1/12) = 1 - (0.94)^(0.0833) = 1 - 0.99486 = 0.00514 = 0.514%

在 150% PSA 下,第 20 个月的每个月约有 0.514% 的剩余资产池余额提前还款,相当于年化 6.0%。

示例 2:CLO 分层分析

已知: 一笔总资产为 $500M 的 CLO。AAA 层 = $325M(65%),AA 层 = $50M(10%),A 层 = $37.5M(7.5%),BBB 层 = $25M(5%),BB 层 = $12.5M(2.5%),权益层 = $50M(10%)。 计算: AAA 层的次级保护水平 解答: AAA 层以下的次级保护 = AA + A + BBB + BB + 权益层 = $50M + $37.5M + $25M + $12.5M + $50M = $175M 次级保护比例 = $175M / $500M = 35%

AAA 层有 35% 的次级保护——组合价值必须损失超过 35%,AAA 投资者才会遭受本金损失。这种显著的信用增级,是 CLO AAA 层历来未发生违约的原因。

常见误区

  • 忽略 MBS 的负凸性——无论市场上涨(期限缩短)还是下跌(期限延长),MBS 的表现都逊于美国国债
  • 对 MBS 使用修正久期——应改用有效久期/OAS 久期,因为现金流会随利率变化
  • 假设提前还款速度恒定——提前还款速度会随利率、季节性、借款人特征和住房交易情况而变化
  • 不了解偿付顺序机制对不同分层的风险影响各异——同一笔交易中的优先层和次级层,风险特征截然不同

交叉引用

  • fixed-income-sovereign(wealth-management 插件):美国国债收益率曲线以及久期/凸性概念
  • fixed-income-corporate(wealth-management 插件):将信用利差概念应用于非机构 MBS 和 CLO
  • real-assets(wealth-management 插件):MBS 背后的房地产市场基本面
  • asset-allocation(wealth-management 插件):多资产投资组合中的结构化产品

运行脚本

uv run scripts/fixed_income_structured.py            # run the demo (uses PEP 723 inline deps)
uv run scripts/fixed_income_structured.py --verify   # check demo outputs against the worked examples (exit 1 on mismatch)
python3 scripts/fixed_income_structured.py            # alternative (requires: pip install numpy)

演示会输出上文介绍的计算结果;其数值与本技能中的示例一致。运行 --help 可查看类和函数列表。如需以编程方式使用,请导入模块而不是运行该脚本——演示仅会在 python fixed_income_structured.py 下执行。

评论

支持 Markdown