QuantLib · the free/open-source library for quantitative finance

QuantLib 中文实战手册:从金融约定、收益率曲线到定价与风险管理

QuantLib 是开源的 C++ 衍生品定价与风险管理库(Python 绑定为 QuantLib-Python)。本站不只是把代码抄一遍:每一页都标注测试版本、估值日、日历、计息约定与数据来源,并给出在本机 QuantLib 1.43 上跑出来的数字——让你既能复制代码算出价格,也能解释这个价格用了什么日期、哪条曲线、哪个引擎,并独立验证它。

语言:C++ 核心 + Python 绑定覆盖:期权 / 债券 / 曲线 / 利率模型本机实测:QuantLib 1.43

项目来源

项目页面显示约 7.6k Star(采集于 2026-09-10,该数字会随社区活动变化);GitHub 标注许可 BSD-3-Clause。

QuantLib GitHub 仓库页面截图:文件列表与 About 信息

截图仅用于证明仓库当前状态,不代表本机安装成功,也不代表本站结论已被官方认可。

查看源码
测试版本QuantLib 1.43(PyPI wheel,cp39-abi3)Python 版本3.11.9 / Windows(platform 字符串 Windows-10-10.0.26200-SP0)最后核验2026-10-09(本页与站内各页的实测数值同批跑出)实验设置估值日 2024-01-15;标的为虚构债券与期权(S=K=100, vol=20%, r=5%)数据来源官方仓库与文档 + 本站本机实验输出(不接行情、不接实盘)计息与日历Actual/Actual (ISDA) + TARGET;中国市场用 China.SSE / China.IB 单独标注可直接复现是(每页都给出参数、代码与预期输出)本站边界QuantLib 与 EasyClaw 无已证实集成;内容不构成投资建议
开源定价库BSD-3-Clause · 约 7.6k Star(2026-09 采集)
本机实测QuantLib 1.43 / Python 3.11.9
可验证页面7 个主题页 + 对照页,全部带实测数值
官方依据quantlib.org 文档 + GitHub 源码
What it solves

QuantLib 能解决什么问题?两条主线先分清

QuantLib 的定位是「把金融工具、市场约定与数值方法组织成可复现的定价框架」。对中文用户最常用的两条主线是固收与衍生品,本站围绕这两条线组织全部页面。

固收主线:现金流与风险指标

固定利率债券、零息债、浮息债、利率掉期,以及净价/全价/应计、收益率、久期、凸性、DV01。本站实测:一只 3% 票息债券的 11 条现金流金额在 2.9839 ~ 3.0164 之间波动,原因是计息约定而非数据错误。

衍生品主线:定价与 Greeks

欧式/美式/亚式/障碍期权,解析、二叉树、有限差分、蒙特卡洛四类引擎,以及 Delta/Gamma/Vega/Theta/Rho。本站实测:解析引擎与手写 Black-Scholes 公式差 1.78e-15,而 801 步 CRR 树差 201.75 ppm。

可选第三条线:利率模型与校准

Hull-White、Vasicek、Heston 等模型用于波动率与利率动态建模。本站实测:同一 Heston 参数下 rho 从 −0.6 改到 +0.4,隐含波动率曲线斜率从 −5.6 个百分点翻转到 +2.7 个百分点。

不适合什么:QuantLib 不提供行情数据、不做自动交易、不做收益预测。它不包含任何交易信号或策略逻辑,也不接入券商接口;拿它当「选股工具」或「赚钱神器」会直接走错方向。组合绩效分析(如夏普、回撤报告)属于另一类库的任务,不在本站范围。
How it works

QuantLib 的定价流程:五步,每步都可能改变结果

同一个工具换一项约定就会得到不同价格,所以本站把「先定约定、再算价格」作为全站主线。下面五步是从本站各页实测中提炼出来的执行顺序。

  • 1. 固定估值日与市场约定

    先设 ql.Settings.instance().evaluationDate,再选日历、营业日规则与计息约定。本机实测:把计息约定从 Actual/Actual (ISDA) 换成 Actual/360,同一只债券净价从 99.75408467 变成 99.99419065。
  • 2. 准备市场数据

    把报价整理成曲线节点:存款、FRA/期货、互换报价,再由 RateHelper 与分段曲线做 bootstrap。本站实测:存款 1W–6M + 互换 1Y–30Y 建出的曲线,反算输入互换的偏差在 +0.018 ~ −1.364 bp 之间。
  • 3. 建金融工具

    用 Schedule + Calendar + DayCounter 描述现金流,再交给 FixedRateBond、VanillaSwap、VanillaOption 等类。
  • 4. 选择定价引擎

    解析解最快且精确、树适合美式、有限差分适合带边界条件、蒙特卡洛适合路径依赖。实测同一期权:解析 0 ppm、有限差分 37.91 ppm、CRR 801 步 201.75 ppm、蒙特卡洛 100 万路径 88.93 ppm。
  • 5. 产出价格与风险指标

    NPV 得价格,Greeks 得敏感度,bond 系列函数得久期/凸性/DV01。实测提醒:BondFunctions.basisPointValue 返回负值,市场口径需自己确认符号。
  • first_price.py(本页数值的生成脚本,QuantLib 1.43 实测通过)import QuantLib as ql # ① 先定估值日:所有定价都以它为锚点 today = ql.Date(15, 1, 2024) ql.Settings.instance().evaluationDate = today # ② 市场约定:曲线 + 波动率(本页用固定 5% 与 20% 做可复现实验) dc = ql.Actual365Fixed() spot = ql.QuoteHandle(ql.SimpleQuote(100.0)) rts = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.05, dc)) # 无风险曲线 dts = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.00, dc)) # 分红曲线 vts = ql.BlackVolTermStructureHandle(ql.BlackConstantVol(today, ql.NullCalendar(), 0.20, dc)) process = ql.BlackScholesMertonProcess(spot, dts, rts, vts) # ③ 工具:欧式看涨期权的 payoff + 行权日 option = ql.VanillaOption(ql.PlainVanillaPayoff(ql.Option.Call, 100.0), ql.EuropeanExercise(ql.Date(15, 1, 2025))) # ④ 引擎:解析解(Black-Scholes 公式) option.setPricingEngine(ql.AnalyticEuropeanEngine(process)) # ⑤ 价格与 Greeks print(option.NPV()) # 10.4681483852 print(option.delta(), option.vega() / 100.0) # 0.6370104228 0.3756909739
    Learning path

    从零上手的学习路径:10 步认知顺序

    参考中文与官方资料里较合理的认知顺序整理。前 5 步不写一行定价代码也能先理解,第 6 步之后开始进入需要动手验证的部分。

    学习路径(顺序依据公开中文资料与官方文档的常见组织方式整理)
    顺序要弄懂的东西本站对应的页为什么放在这个位置
    1QuantLib 是什么、C++ 与 Python 绑定的关系本页 + 安装页先判断工具是否适合自己的任务
    2怎么装上并验证能跑(pip / conda / 源码编译)安装页环境不通后面都做不了
    3Date、Calendar、Schedule、BusinessDayConvention金融约定审计页现金流的日期先要对,价格才有意义
    4DayCounter、Compounding、Frequency金融约定审计页计息口径决定每期算多少天
    5Quote / Handle / Observer / Settings、evaluationDate金融约定审计页 + 本页估值日是全部计算的锚点
    6收益率曲线:FlatForward、ZeroCurve、bootstrap期限结构页折现因子是定价的地基
    7金融工具与现金流:债券、掉期金融工具页把工具拆成现金流是定价的前置
    8定价引擎:解析、树、有限差分、蒙特卡洛定价引擎页同一工具换引擎要能解释差异
    9Greeks 与风险指标:久期、凸性、DV01期权页 + 金融工具页有了价格才能谈风险
    10模型与校准:Hull-White、Heston利率模型页最后才进入模型,避免先入为主
    建议的动手门槛:前 5 步不写定价代码也能先弄懂;到第 6 步之后,建议每学一个概念就在本机跑一遍最小例子,并把四个输入写下来:估值日、日历、计息约定、折现口径。本站实测表明,同一只债券只换计息约定就会得到不同价格,所以「先记约定、再记结果」比「先抄代码」更能减少后续对账时间。
    Capabilities

    核心能力速览:能算到什么程度、卡在哪

    下表把 QuantLib 的主要能力、对应类与本站在本机的实测状态放在一起。「本站实测」一列说明该能力在本站是否有可复现的数字。

    能力与坑(类名依据官方文档与本机 dir(QuantLib) 核对)
    能力典型类 / 方法本站实测状态容易踩的坑
    现金流与日期Schedule / Calendar / DayCounter已实测(14 种 DayCounter、4 种日历)日历选错不一定报错,可能只是日期悄悄错开
    债券定价FixedRateBond + DiscountingBondEngine已实测(11 条现金流 + 8 项指标)不设引擎直接取价格会抛 null pricing engine
    期权定价VanillaOption + Analytic/Binomial/FD/MC 引擎已实测(5 类引擎对照)美式配欧式解析引擎会抛 not an European option
    Greeksoption.delta() / gamma() / vega()已实测(解析 vs 差分校验)树与蒙特卡洛引擎不提供 vega;Heston 不提供 delta
    收益率曲线DepositRateHelper / SwapRateHelper / Piecewise*已实测(4 种插值 + 曲线 bump)曲线取到末端之外会抛 past max curve time
    利率模型HullWhite / Vasicek / HestonModel已实测(互换期权 + Heston 微笑)HestonProcess 前两个参数是无风险曲线与分红曲线,传反会让远期错位
    中国市场ql.China(SEA/IB) 日历已实测日历与示意曲线;中债数据未测试没有中国计息口径,也没有中债估值规则与行情
    扩展与其它语言QuantLibAddin / RQuantLib / SWIG 绑定只核对存在性,未实测不同封装层的函数命名与版本可能不同
    行情与数据接入不提供未实测(因为库本身不含此能力)报价、波动率、利率节点需自备,并记录数据日期与口径
    可视化与报表不提供未实测(需配合其它工具)曲线图、风险报表要自己出图,数据仍需先从本库算出
    Evidence

    本站和别处的中文 QuantLib 内容差在哪:6 个可验证入口

    同一批实测数据被组织成 6 个入口。每个入口都回答一个别处常见含糊的问题,并且给出你可以自己复算的数字或报错原文。

    6 个入口与该入口的可验证证据
    入口回答的问题本站给出的可验证证据
    金融约定审计为什么同一只债券的价格对不上?14 种 DayCounter + 4 种日历 + settlementDays T+0~T+90 的实测表;应计口径可让净价差 0.24 元
    收益率曲线 bootstrap曲线是怎么从报价推出来的、准不准?四种插值的零息与折现因子表、反算偏差 +0.018~−1.364 bp、逐节点 1bp bump 结果
    引擎交叉验证为什么两个引擎结果不一样、差多少算正常?5 类引擎同期权对照(0 ~ 201.75 ppm)、二叉树与蒙特卡洛收敛表、ppm 容差判据
    债券全链条一笔债券定价要准备哪些输入?11 条真实现金流 + 净价/全价/应计/久期/凸性/DV01,含 DV01 负号陷阱
    错误与排查为什么程序不报错、价格却是 0?13 条真实报错原文 + 「价格为 0」的 4 种成因 + 10 类静默错误结果
    中国市场实践中国日历与人民币曲线能直接用吗?SSE/IB 2024 年非营业日 124/115 天实测;示意人民币曲线;明确列出必须自备的规则
    实测数据索引:上述每个数字都能用页内给出的参数与代码复算
    实测指标本机数值出自哪一页
    本机测试版本QuantLib 1.43(cp39-abi3 wheel)安装页
    欧式看涨期权解析价10.4681483852(S=K=100, vol=20%, r=5%)期权页
    解析价 vs 手写 BS 公式差1.7763568394e-15期权页
    CRR 801 步树误差201.75 ppm(LR 801 步仅 0.05 ppm)定价引擎页
    Heston 隐含波动率微笑(rho=−0.6)22.918% → 17.273%(K=80→120)利率模型页
    曲线反算输入互换的偏差+0.018 bp ~ −1.364 bp期限结构页
    曲线逐节点 +1bp 的影响5Y 报价 → 5Y 零息 +1.0571bp期限结构页
    债券净价 / 应计 / 全价99.75408467 / 0.01639344 / 99.77047812金融工具页
    计息约定对净价的影响区间99.7535 ~ 99.9942(每 100 面值)金融约定审计页
    China.SSE 2024 年非营业日124 天(IB 115 天,TARGET 110 天)金融约定审计页、期限结构页
    真实报错原文条数13 条(含「不报错但结果为 0」的情形)错误与排查页
    亚式期权(12 个观察日)算术 MC vs 差分6.1646871 vs 6.18993503期权页
    障碍期权敲出/敲入up-out 130 = 3.32633974;down-out 80 = 10.36788009期权页
    掉期 fairRate 与曲线水平fairRate 3.3268428%(曲线水平 3.00%)金融工具页
    蒙特卡洛复现性与方差削减同种子逐位一致;对偶变量标准误 0.0329 → 0.0164定价引擎页
    计息口径导致的债券价差净价差 0.24(每 100 面值),收益率差 4.5bp金融约定审计页
    二叉树收敛样例CRR 10 步 19458 ppm → 2000 步 98.65 ppm定价引擎页
    曲线陡峭时单一收益率的局限递增曲线净价 97.69124475,反解收益率 3.43261594%期限结构页
    怎么复现本站的数字:每页都写出三样东西——① 测试版本与 Python 版本;② 估值日、日历、计息约定与折现口径;③ 生成该数值的代码片段与预期输出。你可以把代码存成文件、在同版本环境里直接运行,得到同样的数字;若环境或约定不同,数字会不同,这正好能用来验证「差异是约定造成的,而不是代码写错了」。需要提醒的是:本页所有实验都是受控设置(虚构债券、固定平价曲线、固定波动率),目的是让口径差异可比较、可复现;真实定价必须按发行文件与市场数据取值,并记录数据日期与字段口径。
    Setup and route

    自建 QuantLib 还是用 EasyClaw 量化 Skill 路线?

    两条路线的准备成本与适用任务不同,先确认你要解决的问题属于哪一类。

    QuantLib 自建适合做衍生品定价、曲线构造与风险管理
    装环境→定约定→建工具→定价与风险

    灵活度高、可控性强,但 C++ 环境、曲线数据与模型假设都要自己维护;本站实测的报错里有三条就是「输入没补齐」造成的。

    免部署技能路线适合免部署、用一句话发起量化研究任务
    装客户端→一句话提问

    技能覆盖的数据源与市场各不相同;它不替代量化金融定价库,也不代表 QuantLib 已集成 EasyClaw。

    路线边界:QuantLib 与 EasyClaw 无已证实集成。EasyClaw 内置的是量化研究类技能(如 quant-analyst 的方法论与回测、akshare-finance 的行情数据),定位是免部署研究;它不做 C++ 衍生品定价库的替代,结果仅供研究,不构成投资建议。
    Demo

    免部署路线怎么用?量化 Skill 演示对话

    下面两张是本机量化研究技能的实际对话截图(左右点击翻页),用于说明「不用装环境、一句话发起量化研究」这条路线长什么样。截图与 QuantLib 的定价结果无关,也不代表两者已集成。

    Fit check

    选型:什么时候该用 QuantLib、什么时候别用

    两个方向都写清,避免把工具用在不适合的任务上。

    选型判断(依据官方文档说明的能力范围与本站实测边界)
    你的任务该用 QuantLib 吗原因更合适的做法
    给期权定价并计算 Greeks适合提供多类期权与多类引擎,Greeks 可与手写公式互验—
    从市场报价构建收益率曲线适合RateHelper + 分段曲线体系完整,可反算自洽性—
    债券现金流、久期、DV01 计量适合BondFunctions 覆盖价格与风险指标注意口径与符号约定
    组合绩效与回撤报告不适合QuantLib 不做组合统计与报告用绩效分析类库
    行情数据获取与存储不适合库本身不提供行情接口用数据接口或本地数据源
    自动交易与下单不适合没有交易接口与信号逻辑用交易执行框架
    收益预测 / 选股不适合不是预测工具,模型输出不等于市场结果统计与基本面研究
    中债估值口径的完整复现需自建有日历与计息框架,但无中债估值规则与数据按市场规则自建口径并留痕
    学习衍生品定价概念适合当练习场类与引擎都公开、结果可交叉验证,适合验证公式先手算一个 Black-Scholes 再与库对账
    生产环境的定价中台需自建完整链路库只负责计算;数据、留痕、审批、灾备都在库之外按业务需求自行封装与监控
    FAQ

    常见问题

    QuantLib 是什么?

    QuantLib 是开源的 C++ 量化金融库,用于衍生品建模、定价与风险管理,覆盖期权、债券、掉期、期限结构与定价引擎;Python 绑定为 QuantLib-Python。本站实测环境为 QuantLib 1.43 / Python 3.11.9,类名与行为以官方文档和实现为准。

    本站的内容和官方文档、GitHub、其它中文教程有什么不同?

    本站把每个结论都落到可复现的实验上:写明测试版本、估值日、日历与计息约定,并给出本机跑出的数字与报错原文。官方文档是能力与接口的权威来源,本站不替代它;其它中文教程多为步骤介绍,本站补充的是「换一个约定会差多少」这类可验证细节。QuantLib 与 EasyClaw 无已证实集成。

    为什么我照抄示例还是算不出同样的价格?

    绝大多数情况不是代码错,而是约定不同。本站实测:只把应计计息约定从 Actual/Actual (ISDA) 换成 Actual/360,净价就从 99.75408467 变成 99.99419065;把 settlementDays 从 T+0 改到 T+90,全价从 99.75412364 变成 100.81449704。先把估值日、日历、计息约定、结算天数四项对齐,再比较价格。以官方口径为准。

    QuantLib 能在 EasyClaw 里直接用吗?

    没有已证实集成。两者是独立路线:QuantLib 是需要自己装环境并写代码的定价库,EasyClaw 是免部署、用自然语言发起量化研究的技能路线。EasyClaw 的量化类技能有自己的能力边界与数据源,不能假设它调用了 QuantLib。

    本站的实测数字能当市场数据或交易依据吗?

    不能。本站全部实验使用虚构标的与固定参数(如平曲线 3%、票息 3% 的虚构债券),目的是让口径差异可比较、可复现。真实定价需要按发行文件与市场数据取值,结果不构成投资建议。

    想先从哪一页开始看?

    想判断工具是否适合自己,看完本页的选型表即可;要动手就先看安装页;如果已经跑出价格但对不上,直接进金融约定审计页;如果程序报错或结果为 0,去错误与排查页按报错原文定位。

    QuantLib 有图形界面吗?

    没有。它以库和 API 形式使用,需要在 C++ 或 Python 代码里调用;曲线图与风险报表要配合其它可视化工具完成。本站的示意图与表格都是为了说明计算链路,不是 QuantLib 自带界面。以官方文档为准。

    中国市场能直接用吗?

    能用一部分:本机实测 ql.China(ql.China.SSE) 与 ql.China(ql.China.IB) 两个日历可用(2024 年非营业日分别为 124 天与 115 天)。但 QuantLib 没有中国计息口径、没有中债估值规则、也不提供行情数据,银行间与交易所的结算与估值规则都需要自行适配并留痕。以市场规则为准。

    本页结论QuantLib 的价值在于「约定 + 曲线 + 工具 + 引擎」这套可复现的定价框架。本站把 7 个主题做成可验证页面:本机实测覆盖 14 种计息约定、4 种日历、4 种曲线插值、5 类定价引擎、11 条债券现金流与 13 条真实报错,每个数字都能按页面给出的参数复算。
    适用边界全部实测环境为 QuantLib 1.43 / Python 3.11.9 / Windows;标的与曲线为受控实验设置,不含行情数据与中国市场估值规则;跨版本或换平台可能有差异。
    风险提示本站内容用于项目研究与安装判断,不构成投资建议;把实验数字套到真实标的或实盘流程上会产生偏差,定价前请自行核验数据与假设。

    先明确量化目标:自建还是免部署?

    要做衍生品定价、曲线构造与风险管理,走自建路线,从安装教程或金融约定审计开始;想免部署、用一句话发起量化研究,可以先看金融 AI Skills 里的量化类技能。