问题描述
我在python中使用Quantlib Swig Implementatin。我正在尝试对一些固定利率的贷款协议进行建模,该利率按月简单计算,按复利计算季度计算。 例 发行日期2011年3月18日
2011年4月1日第一个存根
第二个利息日期为2011年7月1日
下一个利息支付日期是在10月1日之后的每个季度,依此类推。
凭单计算的优惠券为8.45%,每季度计算一次。
我无法使用FixedrateLeg或FixedrateBond函数整理流。
我注意到在C ++代码中,可以选择将FixedrateLeg与couponRates一起使用。我可以提供利率类与SimpleThenCompounded的复合。但是我认为此功能覆盖在Python swig版本中不可用。
解决方法
对于日期,可以很容易地生成您想要的内容,因为如果未定义,则存根将处于开始状态:
issueDate = ql.Date(18,3,2011)
maturityDate = ql.Date(1,10,2021)
schedule = ql.MakeSchedule(issueDate,maturityDate,ql.Period('3M'))
for date in [*schedule][:5]:
print(date.ISO())
2011-03-18
2011-04-01
2011-07-01
2011-10-01
2012-01-01
关于费率,如果付款是季度支付,我不确定您是说按季度计算复利。 ql.SimpleThenCompounded
约定例如用于可能存在超过一年的TBill,其中费率约定将一直使用到一年,而复合则超过一年。
您确定这不会满足您的需求吗?
dayCount = ql.Actual360()
leg = ql.FixedRateLeg(schedule,dayCount,[100.],[0.0845])
for cf in leg:
print(cf.date().ISO(),cf.amount())