You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quantlib如何在ql.CallabilitySchedule()中添加赎回与回售权的日期及行权价

QuantLib含赎回、回售权债券的行权条款录入方法

ql.CallabilitySchedule本质是ql.Callability对象的有序集合,每个ql.Callability实例可独立指定行权类型(赎回/回售)、行权价格、行权日期,你只需将两类权利对应的所有行权条目统一加入集合即可,无需分开调用接口。

具体实现步骤

  • 第一步:构造单条行权条款
    每个行权日对应一条ql.Callability实例,核心参数如下:
    • 行权价格:用ql.CallabilityPrice(价格数值, 价格类型)构造,一般传ql.Clean代表净价行权
    • 行权类型:赎回权传ql.Callability.Call(发行人权利),回售权传ql.Callability.Put(持有人权利)
    • 行权日期:QuantLib标准ql.Date对象
  • 第二步:汇总生成ql.CallabilitySchedule
    把所有赎回、回售对应的ql.Callability实例放进同一个列表,直接传入ql.CallabilitySchedule构造函数即可。

代码示例

import QuantLib as ql

# 基础环境配置(以国内银行间市场为例)
calendar = ql.China(ql.China.IB)
eval_date = ql.Date(15, 6, 2024)
ql.Settings.instance().evaluationDate = eval_date

# 存储所有行权条款的列表
callability_terms = []

# 示例1:添加赎回权:第3年末发行人可按100.2元净价赎回
call_date = ql.Date(15, 6, 2027)
call_price = ql.CallabilityPrice(100.2, ql.Clean)
call_term = ql.Callability(call_price, ql.Callability.Call, call_date)
callability_terms.append(call_term)

# 示例2:添加回售权:第2年末持有人可按100元净价回售
put_date = ql.Date(15, 6, 2026)
put_price = ql.CallabilityPrice(100.0, ql.Clean)
put_term = ql.Callability(put_price, ql.Callability.Put, put_date)
callability_terms.append(put_term)

# 生成同时包含赎回、回售权的行权时间表
callability_schedule = ql.CallabilitySchedule(callability_terms)

注意事项

如果存在多期行权的条款(比如逐年赎回、逐年回售),可以循环生成对应ql.Callability对象统一加入列表即可,QuantLib底层会自动根据每条条款的行权类型处理定价逻辑。

内容的提问来源于stack exchange,提问作者Vincent Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:09:03