金融工具清单对照表
依据 QuantLib Instruments 模块。
| 工具 | QuantLib 类 | 用途 | 注意点 |
|---|---|---|---|
| 欧式期权 | EuropeanOption | 欧式看涨/看跌期权定价 | 需配 Payoff 与解析/数值引擎 |
| 美式期权 | VanillaOption | 可提前行权的美式期权 | 需二叉树/有限差分引擎 |
| 亚式/障碍期权 | AsianOption / BarrierOption | 路径依赖期权定价 | 通常需蒙特卡洛引擎 |
| 固定利率债券 | FixedRateBond | 附息债券定价/现金流 | 需 Schedule 定义付息日 |
| 利率掉期 | VanillaSwap | 固定/浮动利率互换 | 需收益率曲线与 SwapRateHelper |
| 信用违约掉期 | CreditDefaultSwap | CDS 信用风险定价 | 需信用曲线与违约概率 |
| 可转换债券 | ConvertibleBond | 可转债(债+股特性) | 需嵌入期权与股票数据 |
| 远期合约 | Forward | 远期价格/交割 | 线性收益,解析定价 |
债券建模分步流程
1. 设评估日与日历:today = ql.Date(15, 6, 2023); ql.Settings.instance().evaluationDate = today —— 先确定定价基准日。
2. 定义付息日 Schedule:ql.Schedule(effective, maturity, ql.Period(ql.Semiannual), calendar, ql.Following, ql.Following, ql.DateGeneration.Backward, False) —— 每半年付息一次。
3. 建固定利率债券:ql.FixedRateBond(settlement_days, face_amount, schedule, [coupon_rate], day_count) —— 指定票面、票息与计息约定。
4. 设定价引擎:bond.setPricingEngine(ql.DiscountingBondEngine(yield_curve_handle)) —— 用收益率曲线折现现金流。
5. 取结果:bond.NPV()、bond.cleanPrice()、bond.dirtyPrice() —— 净值、净价、全价。
利率掉期建模分步(概念)
1. 建 VanillaSwap 对象:固定腿 + 浮动腿,指定名义本金、付息频率与计息约定。
2. 用 SwapRateHelper 从市场掉期利率构建收益率曲线:ql.SwapRateHelper(ql.QuoteHandle(rate), tenor, calendar, fixed_freq, fixed_convention, fixed_day_count, index)。
3. 设定价引擎 DiscountingSwapEngine(用收益率曲线折现固定/浮动两腿)。
4. 计算 NPV 与 fairRate:掉期净现值与使 NPV=0 的公平固定利率。
工具与定价引擎匹配表
| 金融工具 | 典型定价引擎 | 适用场景 |
|---|---|---|
| 固定利率债券 | DiscountingBondEngine | 用收益率曲线折现现金流 |
| 欧式期权 | AnalyticEuropeanEngine | Black-Scholes 解析解 |
| 利率掉期 | DiscountingSwapEngine | 折现固定/浮动两腿 |
| 信用违约掉期 | MidPointCdsEngine | 基于违约概率曲线 |
| 路径依赖期权 | MCEuropeanEngine / MC 类 | 亚式/障碍等蒙特卡洛模拟 |
工具建模选型注意点
| 注意点 | 说明 |
|---|---|
| 现金流 Schedule | 债券/掉期必须用 Schedule 定义付息日与日期生成规则,付息频率、日期调整约定直接影响现金流。 |
| 计息约定 DayCounter | Actual/360、30/360 等约定影响应计利息与全价,须与市场惯例一致。 |
| 结算日 | 交易日后若干工作日结算,settlement_days 影响价格。 |
| 工具需配对应引擎 | 不配引擎或配错引擎会导致 NPV 报错或结果错误,见上表匹配关系。 |
| 曲线一致性 | 债券/掉期折现用的收益率曲线、期权用的波动率曲面须来自同一套市场数据。 |
常见问题
QuantLib 支持哪些金融工具?
期权(欧式/美式/亚式/障碍/二元/篮子)、债券(FixedRateBond)、利率掉期(VanillaSwap)、信用违约掉期(CreditDefaultSwap)、可转换债券(ConvertibleBond)、远期(Forward)等,具体以官方 Instruments 文档为准。
债券定价为什么要配 DiscountingBondEngine?
FixedRateBond 本身只定义现金流,价格需要 DiscountingBondEngine 用收益率曲线折现各期现金流得到;不配引擎 NPV 会报错,以官方实现为准。
cleanPrice 和 dirtyPrice 有什么区别?
dirtyPrice(全价)含应计利息,cleanPrice(净价)不含;两者差值由计息约定与付息日决定,以官方文档为准。
利率掉期怎么构建收益率曲线?
用 SwapRateHelper 从市场掉期利率校准收益率曲线,再配 DiscountingSwapEngine 定价;具体以官方 SwapRateHelper 用法为准。
EasyClaw 能做债券/掉期/CDS 定价吗?
EasyClaw 的 quant-analyst 技能侧重期权定价+Greeks 与回测,未见对 QuantLib 债券/掉期/CDS 的已证实支持;QuantLib 与 EasyClaw 无集成,两者是独立路线,见对比页。