【问题标题】:QuantLib: Building Key Rate RisksQuantLib:构建关键利率风险
【发布时间】:2017-09-18 12:53:08
【问题描述】:

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

我正在寻找的关键利率风险是,如果我有 30 年期债券,并且我们改变了用于贴现债券的 1 年期利率,同时保持其他利率不变,那么债券价格的变化幅度是多少?对期限(例如 2 年、5 年、7 年等)重复此操作并将结果相加应该可以让您了解债券的整体久期,但可以更好地了解风险敞口如何分解。

http://www.investinganswers.com/financial-dictionary/bonds/key-rate-duration-6725

是否有人知道任何说明如何执行此操作的文档?谢谢你。

【问题讨论】:

    标签: python-3.x quantlib


    【解决方案1】:

    假设您已经建立了债券和贴现曲线,并且您以类似于以下方式将它们联系起来:

    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 年减去 1 个月处添加一个点,在 5 年加上 1 个月处添加另一个点,则移动 5 年点只会影响它周围的两个月。

    【讨论】:

    • 非常感谢您的回复路易吉。不用说,您的包裹和提示非常有帮助。为我的无知道歉,因为我仍在尝试学习结构,但是有没有办法让价差 [2].setValue(0.001) 更新曲线到位?关闭您上面的答案,一旦我执行以下 discount_handle.linkTo(new_curve) spreads[2].setValue(0.001) fixed_rate_bond.setPricingEngine(new_curve) print(fixed_rate_bond.NPV()) 我仍然收到与之前相同的 NPV设定值()。这是意料之中的吗?
    • 它应该更新到位。请将您的代码发布到 QuantLib 邮件列表,我们会尽力解决。
    • 不确定如何在 sourceforge 上发帖,如果那是您引用的地方。有我可以发送到的电子邮件分发吗?谢谢。
    • 您可以通过地址 将邮件发送到 QuantLib 邮件列表。
    • @LuigiBallabio 我也遇到了同样的问题,使用.setValue() 后 NPV 没有更新。我使用的是 1.12 版
    猜你喜欢
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2019-02-14
    相关资源
    最近更新 更多