python-3.x - QuantLib:建立关键利率风险

标签 python-3.x quantlib

我能够为国债市场建立贴现曲线。但是,我希望用它来找出单个债券(以及最终的债券投资组合)的关键利率风险。

我正在寻找的关键利率风险是,如果我有 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))

您可以先在现有贴现曲线上添加一个价差,然后使用修改后的曲线为债券定价。就像是:
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)

将为您提供一条新曲线,初始点差全部为 0(和一个可怕的类名),您可以使用它来代替原始折扣曲线:
discount_handle.linkTo(new_curve)

在上述之后,债券应该仍然返回相同的价格(因为点差都是空的)。

当您想计算特定的关键利率持续时间时,您可以移动相应的报价:例如,如果您想提高 5 年报价(上面列表中的第三个),请执行
spreads[2].setValue(0.001)   # 10 bps

曲线会相应更新,债券价格应该会发生变化。

注意:上述内容将在利差之间进行插值,因此,如果您将 5 年期点移动 10 个基点,而将 2 年期点保持不变,那么 3 年左右的利率将移动约 3 个基点。为了缓解这种情况(如果这不是您想要的),您可以向曲线添加更多点并限制变化的范围。例如,如果您在 5 年减一个月时添加一个点,在 5 年加 1 个月时添加另一个点,那么移动 5 年点只会影响它周围的两个月。

关于python-3.x - QuantLib:建立关键利率风险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46279785/

相关文章:

python - _tkinter.TclError : invalid command name ".54600176" error, 这是怎么回事?

python - 随机砖颜色 -> TypeError : 'pygame.Color' object is not callable

finance - 使用 QuantLib 计算 floored FloatingRateBond 的现金流量

c++ - Octave 和痛饮。 mkoctfile 提示 : unrecognized argument

c++ - 通过 Rcpp 从 R 调用 QuantLib

python - 在 'apple silicon' Macbook 上运行 QuantLib python

python-3.x - 如何找出S3 Bucket上次访问的时间?

python-3.x - 是否有一个 Python 库可以在提供邮政编码时返回一个城市?

python - 将 @property 与另一个装饰器结合起来

c++ - 等效于 C++ 中的 python :scipy. optimize()?