1. 课程导入

欢迎进入《QuantLib固定收益定价与曲线构建实战》。在动手写第一行定价代码之前,我们需要先建立一张“地图”:固定收益市场到底由哪些品种构成,价格与风险从哪里来,QuantLib 在整个技术栈中扮演什么角色,以及本课程最终要交付哪些可运行、可复用的能力。本章不涉及复杂公式推导,而是帮你把后续 29 章的知识挂到一张清晰的认知框架上。

一、固定收益市场概览:从现金流到曲线

固定收益产品的本质,是一组未来现金流与一条贴现曲线之间的映射关系。无论是国债、政策性金融债、同业存单,还是利率互换、利率期权,定价的核心问题都可以归结为三件事:现金流发生在什么时间、金额是多少、用哪条曲线贴现。债券价格、到期收益率、久期、凸性、远期利率、互换利差,都是这一映射在不同视角下的投影。

从市场结构看,固定收益可分为现货与衍生品两大块。现货包括国债、地方债、金融债、信用债、资产支持证券等;衍生品包括利率互换、国债期货、利率期权、利率上限/下限等。它们共享同一条基准曲线,但各自又有独立的流动性溢价、信用溢价与期限结构。理解这一点,才能明白为什么 QuantLib 要把“曲线”抽象成独立对象,而不是把收益率硬编码进定价函数。

核心认知:固定收益定价不是“套公式”,而是“构建曲线 + 映射现金流 + 求解价格与风险”。曲线是定价的基础设施,QuantLib 的价值正是把这套基础设施工程化。

二、QuantLib 的定位:不是黑箱,而是可组装的定价引擎

QuantLib 是一个开源的量化金融 C++ 库,并提供 Python 绑定(QuantLib-Python)。它覆盖了日期计算、日历、计息规则、曲线构建、定价引擎、随机过程、数值方法等模块。与商业软件相比,QuantLib 的优势在于透明、可扩展、可测试;劣势在于学习曲线陡峭,文档分散,很多默认参数需要你理解其金融含义后才能正确使用。

在本课程中,我们把 QuantLib 定位为“可组装的定价引擎”:你负责定义市场数据与产品条款,QuantLib 负责日期推进、曲线插值、现金流生成与数值求解。下面这张图展示了从市场数据到定价结果的典型数据流,也是后续章节反复出现的结构。

QuantLib 固定收益定价数据流 市场数据 存款/债券/互换报价 曲线构建 Bootstrap + 插值 产品条款 债券/互换/期权 定价引擎 NPV / 风险 日期系统:Calendar / DayCounter / Schedule 计息规则、节假日、期限生成 输出:NPV / 收益率 价格、YTM、久期、凸性 输出:风险指标 DV01、关键期限暴露 输出:曲线对象 贴现因子、远期利率

三、安装与环境配置:一次做对,避免后续踩坑

QuantLib-Python 的安装方式主要有两种:pip 安装预编译包,或从源码编译。对于本课程,推荐使用 pip 安装,版本选择 1.31 及以上,以保证与 Python 3.10+ 的兼容性。安装完成后,务必验证日期系统与曲线构建模块可用。

# 推荐环境:Python 3.10+,虚拟环境隔离
python -m venv ql_env
source ql_env/bin/activate        # Windows 使用 ql_env\Scripts\activate

# 安装 QuantLib-Python
pip install QuantLib==1.31
pip install pandas numpy matplotlib

# 验证安装
python -c "import QuantLib as ql; print(ql.__version__)"
# 预期输出:1.31
建议固定 QuantLib 版本并写入 requirements.txt。QuantLib 不同版本之间 API 偶有调整,固定版本可避免“本地能跑、换机报错”的问题。

安装完成后,用一段最小代码验证日期与曲线对象是否正常。这段代码不涉及定价,只确认环境健康。

import QuantLib as ql

today = ql.Date(15, 1, 2025)
ql.Settings.instance().evaluationDate = today

calendar = ql.China()
day_counter = ql.ActualActual(ql.ActualActual.ISDA)

print("Evaluation Date:", today)
print("Calendar:", calendar.name())
print("DayCounter:", day_counter.name())
# 预期输出:
# Evaluation Date: January 15th, 2025
# Calendar: China
# DayCounter: Actual/Actual (ISDA)

四、学习路径与实战目标:30章如何形成闭环

本课程按“基础—曲线—定价—风险—实战”五段推进。前几章建立日期系统与市场数据认知;中间章节重点攻克曲线构建,包括 Bootstrap、插值方法、多曲线框架;随后进入债券、互换、期权定价;最后落到风险指标计算与一个完整的曲线构建实战项目。每一章都配有可运行代码,建议边学边改参数,观察输出变化。

阶段 核心内容 实战目标
基础认知 日期系统、日历、计息规则、市场数据 能正确构造 Schedule 与 DayCounter
曲线构建 Bootstrap、插值、多曲线、贴现因子 能从报价构建一条可用的贴现曲线
产品定价 债券、利率互换、期权定价引擎 能对典型产品计算 NPV 与 YTM
风险分析 DV01、久期、凸性、关键期限暴露 能输出风险指标并解释其含义
综合实战 完整曲线构建与定价项目 能独立完成从数据到报告的闭环
常见误区:很多初学者直接复制网上的定价代码,却忽略了日历、计息规则与曲线插值方式。固定收益定价对日期细节极其敏感,差一天可能导致 NPV 出现明显偏差。请务必先理解每个参数的含义,再运行代码。