use*_*489 3 quantlib python-3.x
我能够为国库券市场建立折价曲线。但是,我希望以此来查找单个债券(以及最终债券组合)的关键利率风险。
我要寻找的主要利率风险是,如果我有一个30年期债券,而我们将用于折价该债券的1年期利率转移了,而将其他利率保持不变,那么债券价格会发生多少变化?对期限(例如2Y,5Y,7Y等)重复此操作,并对结果求和,可以使您了解债券的总期限,但可以更好地了解风险敞口如何分解。
http://www.investinganswers.com/financial-dictionary/bonds/key-rate-duration-6725
是否有人知道任何演示该操作方法的文档?谢谢。
假设您已经建立了债券和折价曲线,并且已将它们链接起来,如下所示:
discount_handle = RelinkableYieldTermStructureHandle(discount_curve)
bond.setPricingEngine(DiscountingBondEngine(discount_handle))
Run Code Online (Sandbox Code Playgroud)
您可以先在现有折现曲线上添加点差,然后使用修改后的曲线对债券定价。就像是:
nodes = [ 1, 2, 5, 7, 10 ] # the durations
dates = [ today + Period(n, Years) for n in nodes ]
spreads = [ SimpleQuote(0.0) for n in nodes ] # null spreads to begin
new_curve = SpreadedLinearZeroInterpolatedTermStructure(
YieldTermStructureHandle(discount_curve),
[ QuoteHandle(q) for q in spreads ],
dates)
Run Code Online (Sandbox Code Playgroud)
会为您提供一条新的曲线,其初始点差都为0(以及可怕的类别名称),您可以使用它代替原始的折扣曲线:
discount_handle.linkTo(new_curve)
Run Code Online (Sandbox Code Playgroud)
在上述情况之后,债券应仍返回相同的价格(因为点差全为空)。
当您要计算特定的关键价持续时间时,可以移动相应的报价:例如,如果要冲减5年报价(上面列表中的第三年),请执行
spreads[2].setValue(0.001) # 10 bps
Run Code Online (Sandbox Code Playgroud)
曲线将相应更新,债券价格也应改变。
注意:以上内容将在利差之间进行插值,因此,如果将5年点移动10个基点,而保持2年点不变,则3年左右的利率将移动大约3个基点。为了缓解这种情况(如果这不是您想要的),可以向曲线添加更多点并限制变化的范围。例如,如果您在5年减去一个月加上一个点,再在5年加上1个月加上一个点,那么移动5年点只会影响周围的两个月。
归档时间: |
|
查看次数: |
828 次 |
最近记录: |