1. 课程导入

欢迎进入《固定收益组合估值与风险完整项目实战》。在正式动手构建估值引擎之前,本章先解决三个问题:这门课要学什么、固定收益组合的估值与风险到底在管什么、以及我们将用怎样的实战项目把知识串起来。固定收益与股票最大的不同在于:它的现金流、贴现率、期限结构和信用利差都是可被精确定义和建模的对象,因此估值与风险管理的工程化程度更高,也更适合用一套完整的项目来训练。

一、学习目标:从"会算价格"到"能管组合"

本课程的学习目标分为四个递进层次,建议你在学习过程中不断回看这张清单,确认自己处在哪一层。

  • 定价层:掌握债券现金流贴现、应计利息、全价与净价、到期收益率(YTM)的求解逻辑,能独立计算单只债券的公允价值。
  • 曲线层:理解即期利率、远期利率与贴现因子之间的等价关系,能用息票剥离法或自助法(Bootstrap)从市场报价构建零息曲线。
  • 风险层:掌握久期、凸性、DV01、关键利率久期(KRD)等指标的金融含义与计算,能解释组合价值对利率变动的敏感度来源。
  • 组合层:能对多只债券构成的组合做整体估值、归因与压力测试,输出可解释的风险报告。
学习建议:不要跳过"曲线层"。很多学员能背出久期公式,却说不清久期为什么依赖贴现曲线,导致后续KRD和情景分析全部变成黑箱。曲线是固定收益的"坐标系"。

二、核心概念:先建立统一的语言

固定收益领域术语密集,且同一概念常有多种叫法。下表梳理了本课程贯穿始终的核心概念,请务必先建立统一口径,后续所有代码和报告都以此为准。

概念 含义 在本课程中的用途
贴现因子 DF(t) 未来t时刻1元钱的现值 估值引擎的最底层输入
即期利率 z(t) 零息债券的年化收益率 由DF换算,用于曲线展示
远期利率 f(t) 未来某区间的隐含利率 情景分析与加息路径建模
到期收益率 YTM 使现金流现值等于全价的单一贴现率 单券报价与横向比较
久期 / 凸性 价格对利率的一阶 / 二阶敏感度 风险度量与对冲
DV01 收益率变动1个基点带来的价格变化 组合风险汇总与限额管理
信用利差 信用债收益率与基准曲线之差 信用风险与利差归因

需要特别强调:全价(Dirty Price)与净价(Clean Price)的区别是实务中最容易出错的地方。市场报价通常是净价,但现金流贴现得到的是全价,两者相差应计利息。结算、损益和风险计算必须使用全价,而报价和比较习惯用净价。

三、整体框架:估值与风险的双轮结构

本课程的知识体系可以概括为"一条曲线、两个引擎、三层输出"。一条曲线指基准利率曲线(含信用利差调整);两个引擎指估值引擎与风险引擎;三层输出指单券层、组合层和情景层的结果。下图展示了这一整体结构及其数据流向。

固定收益组合估值与风险整体框架 市场数据 报价 / 成交 / 利差 曲线构建 Bootstrap / 插值 DF(t) 贴现因子 估值引擎 现金流生成 贴现 → 全价/净价 风险引擎 久期 / 凸性 / DV01 KRD / 情景冲击 单券层输出 价格 / YTM / 敏感度 组合层输出 市值 / 加权DV01 / 归因 情景层输出 压力测试 / 损益分布

理解这张图的关键在于:估值引擎和风险引擎共享同一条曲线。如果曲线口径不一致,估值和风险就会互相矛盾——这是实务中非常隐蔽的错误来源。因此本课程会先统一曲线,再分别驱动两个引擎。

四、实战项目概览:一个可运行的小型组合系统

贯穿全课程的项目是"一个固定收益组合估值与风险系统"。它不是玩具示例,而是按真实业务逻辑搭建的最小可用系统。项目输入、处理与输出如下:

  1. 输入:一组债券静态信息(票面、到期日、付息频率、信用等级)与市场数据(基准曲线报价、信用利差)。
  2. 处理:构建贴现曲线 → 生成现金流 → 估值 → 计算风险指标 → 组合汇总 → 情景冲击。
  3. 输出:单券估值表、组合市值与DV01、关键利率久期分布、压力测试损益。

项目核心接口的伪代码约定如下,后续章节会逐步实现:

# 曲线对象:输入期限与贴现因子,输出任意时点DF
curve = build_curve(tenors, quotes, method="bootstrap")

# 单券估值:输入债券与曲线,输出全价、净价、YTM
bond_price = price_bond(bond, curve, settle_date)

# 风险指标:输入债券与曲线,输出久期、凸性、DV01
risk = compute_risk(bond, curve, settle_date)

# 组合汇总:输入持仓与曲线,输出组合市值与加权风险
portfolio = aggregate(positions, curve, settle_date)
项目设计原则:所有计算必须可复现、可解释、可对账。每一步都要能回答"这个数字从哪来、为什么是这个值",而不是只给一个结果。

五、常见误区与复盘提示

在开课之前,先列出初学者最容易踩的坑,帮助你在后续学习中保持警觉:

  • 误区一:用YTM代替曲线做风险。YTM是单券的"平均"收益率,无法反映现金流在不同期限上的风险差异,用它算组合久期会掩盖期限结构风险。
  • 误区二:忽略应计利息。用净价直接贴现会导致结算日附近的估值和损益出现系统性偏差。
  • 误区三:把久期当成"到期时间"。久期是价格敏感度,零息债的久期等于到期时间,但附息债的久期显著小于到期时间。
  • 误区四:曲线插值随意选择。不同插值方法(线性、三次样条、Nelson-Siegel)在曲线拐点处差异明显,会直接影响KRD和情景结果。
复盘建议:每完成一个模块,用一只真实债券做"手工验算 + 代码验算"的双重核对。手工算一遍现金流和贴现,再与代码结果比对,差异超过1分钱就要查原因。这个习惯能帮你避开绝大多数隐蔽错误。

本章建立了课程的目标、概念、框架与项目轮廓。接下来你将进入具体的债券定价与现金流建模,把上面这张框架图中的"估值引擎"真正落地为可运行的代码。