【问题标题】:Pricing a Forward Rate Agreement using QuantLib Python使用 QuantLib Python 为远期利率协议定价
【发布时间】:2021-09-07 09:02:32
【问题描述】:

有人可以帮助使用 QuantLib Python 对以下远期利率协议进行定价吗?

3x6 远期利率协议,名义金额为 100,000 美元,FRA 利率为 6%,FRA 结算日期为 3 个月(90 天)后,结算基于 90 天 USDLIBOR。

我的估值日期是 2020 年 6 月 30 日。

这是我的尝试:

import QuantLib as ql

startDate = ql.Date(30, 6, 2020)
ql.Settings.instance().evaluationDate = startDate

spotDates = [ql.Date(30, 6, 2020), ql.Date(31, 12, 2020), ql.Date(30, 6, 2021)]
spotRates = [0.05, 0.05, 0.05]

dayConvention = ql.Thirty360()
calendar = ql.UnitedStates()

maturityDate = calendar.advance(startDate, ql.Period('3M'))

compounding = ql.Simple
compoundingFrequency = ql.Annual

spotCurve = ql.ZeroCurve(spotDates, spotRates, dayConvention, calendar, ql.Linear(), compounding, compoundingFrequency)
spotCurve.enableExtrapolation()
spotCurveHandle = ql.YieldTermStructureHandle(spotCurve)

index = ql.USDLibor(ql.Period('3M'), spotCurveHandle)
index.addFixing(ql.Date(26, 6, 2020), 0.05)
notional = 100000
rate = 0.06

fra = ql.ForwardRateAgreement(startDate, maturityDate, ql.Position.Long, rate, notional, index, spotCurveHandle)
print('NPV:', fra.NPV())

这是我得到的答案:

净现值:0.0

我得到的答案不正确。

【问题讨论】:

  • 什么不起作用?您是否得到了 NPV,但它是错误的?
  • 我不确定我传递的参数...是否正确。
  • 答案不应该低于 250 美元吗?你以 6% 的价格购买了 FRA,它很可能会固定在 5%。因此,在结算时,您以 10 万美元的年化收益为 1%,所以 10 万 x 1% x 0.25 = 250 美元?然后将有 250 个小折扣来现货 (1+0.05)^0.25 = 1.01227。所以 NPV 约为 247 美元。
  • 这就是为什么我认为我的代码有错误...欢迎任何帮助。
  • 你得到多少 NPV?

标签: python finance quantitative-finance quantlib financialinstrument


【解决方案1】:

首先(为了准确起见)美元 FRA 的天数是 Act/360,即ql.Actual360()。另请注意,FRA 的固定日历基于英国日历 (BBA Libor),可能与结算日历不同(因此 7 月 4 日不是固定假期,而是结算假期)。

OP 代码的主要问题是 FRA 开始日期与评估日期相同。一旦您知道修复,FRA 就有效解决,因此 NPV 为零和现金流。

ForwardRateAgreement()的第一个参数是FRA的结算日期。第二个,成熟度,是结束日期。所以对于一个 3x6 的点,开始日期是从现在起 3m,成熟期是从现在起 6m。

将此行修改为:

dayConvention = ql.Actual360()

fra = ql.ForwardRateAgreement(calendar.advance(startDate,ql.Period(3,ql.Months)), calendar.advance(startDate,ql.Period(6,ql.Months)), ql.Position.Long, rate, notional, index, spotCurveHandle)

将为您提供现场 3x6 FRA(20 年 9 月 30 日 -> 20 年 12 月 30 日)的日期。

输出: NPV: -262.08622386063985

注意。在 FRA 的 QuantLib 示例中,他们使用一系列 FRA 市场利率来构建 PiecewiseLogLinearDiscount 曲线来评估 FRA,而不是零曲线,我想这是两者之间的细微差异导致轻微远期利率的变化(因此 NPV)。 FRA 的隐含远期利率为 4.937%……即不是 5%,这也增加了 NPV。在实践中,如果您尝试为 FRA 定价,请使用市场 FRA 报价构建曲线。

【讨论】:

  • 谢谢。我还问了这个link 的问题,并从 Luigi 那里得到了相同的答案。
猜你喜欢
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2012-02-11
  • 2021-04-24
相关资源
最近更新 更多