Bootstrapping Discount Factors from a Deposit and FRA
Summary
This note explains how to derive discount factors from a six-month deposit followed by a six-by-twelve forward rate agreement. The two contracts cover adjacent accrual periods: the FRA begins when the deposit ends, so their dates do not overlap. Under simple interest, the deposit quote determines the discount factor at its maturity, and the FRA quote extends that factor to the later maturity by dividing by its capitalization factor.
The examples use Actual/360 accrual fractions and show matching results from direct date arithmetic and a QuantLib curve. The method assumes a single curve, aligned period boundaries, and the stated market conventions; the first explanation also simplifies by treating spot and valuation dates as equal. Settlement lags, day-count details, and implementation conventions can affect values, so the calculation should use the actual instrument dates and conventions.
Key ideas
- A deposit and a following FRA cover consecutive periods, even when the end date of one is the start date of the other.
- The deposit quote determines the first maturity discount factor using its accrual fraction.
- The FRA quote extends the discount curve by applying its forward-period capitalization factor.
- Actual day counts and settlement conventions affect the resulting discount factors.
Tags
Full text
# Curve building dates overlapping impact on discount factor
# Curve building dates overlapping impact on discount factor
I'm building a short end of the libor curve using deposit & fra due to overlapping in dates I get wrong values of Discount factor, here's the data i'm working with:
- Start of my deposit 6m contract is 25/10/2019 end date is 27/04/2020,day count is act/360 with rate 5%
- Start of my fra 6x12m contract is 27/04/2020 end date is 27/10/2020,day count conv is act/360 with rate 5.2%
Can someone please explain how to manage that overlapping between deposit and fra? and how to get the right discount factor ?
thanks
## Answer by Canardini (score 3, accepted)
https://quant.stackexchange.com/a/50359
There is no overlapping, the first instrument is tied to the LIBOR rate starting at $25/10/2019$, the second one is tied to the LIBOR Rate at $27/04/2020$.
For the sake of clarity, let assume that the spot date and today's date are the same, that there is only one curve (LIBOR Curve).
WE use the definition of the forward rate starting at $T$ and ending at $U$ as $$F(0,T,U)=\frac{1}{U-T}\left(\frac{P(0,T)}{P(0,U)}-1\right)$$
where $P(0,T)$ is the zero-coupon bond paying one unit at time $T$
$T_0= 25/10/2019$,$T_1= 27/04/2020$ , $T_2= 27/10/2020$
We have that $$0.05=\frac{1}{0.5}\left(\frac{1}{P(0,T_1)}-1\right)$$, therefore
$$P(0,T_1)=\frac{1}{1+0.5\times0.05}$$
As for the FRA : $$0.052=\frac{1}{0.5}\left(\frac{P(0,T_1)}{P(0,T_2)}-1\right)$$
Thus, $$P(0,T_2)=P(0,T_1)\frac{1}{1+0.5\times0.052}$$
## Answer by AlRacoon (score 2)
https://quant.stackexchange.com/a/50397
Your rates do not overlap. You have a 6M (185/360) rate of 5%. And a forward rate agreement where the 5.2% rate starts at the end of your initial contract (4/27/20) for a period of 6M (183/360).
Your first contract will earn you (1 + .05*(185/360)) = 1.025694. You will then earn (1 + .052*(183/360)) on that amount, or 1.052807 over the entire period from 10/25/19 to 10/27/20. The 1Yr (10/27/20) discount factor would therefore be the reciprocal of that amount: 1/1.052807 = 0.949842. The 6M (4/27/20) discount factor would be 0.974949. The 6M Forward discount factor (from 10/27/20 to 4/27/20) would be 0.974247.
The money market equivalent discount factor would be 0.95050249, based on 370 days between trade date and the end of the FRA, using a 365 day year. I used 370 days to account for the fact that Libor settles t+2 and you may be trying to account for the 2 days in pricing.
## Answer by David Duarte (score 0)
https://quant.stackexchange.com/a/50447
There are no overlapping dates because the rate for the 6M deposit is for an investment starting 25/10/2019 and ending 27/04/2020. The rate for the FRA is for an investment starting 27/04/2020 and ending 27/10/2020. That is why you can determine the discount factor (or zero rate) from 25/10/2019 to 27/10/2020, because the return on an investment for these dates has to be the same as the combination of the 6M Deposit and 6x12 FRA.
Here are two possible simple implementations in python that yield the same result to help you figure out where might be the problem.
Using native python:
```
from datetime import date, timedelta
today = date(2019,10,23)
spot = today + timedelta(days=2)
deposit_maturity = date(2020, 4, 27)
deposit_dcf = (deposit_maturity - spot).days / 360
df1 = 1 / ( 1+ 0.05 * deposit_dcf)
fra_maturity = date(2020, 10, 27)
fra_dcf = (fra_maturity - deposit_maturity).days / 360
df2 = df1 / (1 + 0.052 * fra_dcf)
print(df1, df2)
```
Output is: `0.974949221394719 0.9498417381171556`
Using QuantLib in python:
```
import QuantLib as ql
today = ql.Date(23,10,2019)
ql.Settings.instance().evaluationDate = today
helpers = []
helpers.append(
ql.DepositRateHelper(ql.QuoteHandle(ql.SimpleQuote(0.05)),
ql.Period(6, ql.Months), 2,
ql.TARGET(), ql.Following, False, ql.Actual360())
)
index = ql.Euribor6M()
helpers.append(
ql.FraRateHelper(ql.QuoteHandle(ql.SimpleQuote(0.052)), 6, index)
)
curve = ql.PiecewiseLogCubicDiscount(2, ql.TARGET(), helpers,
ql.Actual365Fixed())
for dt in curve.dates():
print(dt, curve.discount(dt))
```
Output is:
```
October 25th, 2019 1.0
April 27th, 2020 0.9749492213947191
October 27th, 2020 0.9498417381171556
```Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.