No hay superposición de fechas debido a que la tasa para los 6M depósito es de una inversión a partir 25/10/2019 y terminando 27/04/2020. La tasa para el FRA es una inversión a partir 27/04/2020 y terminando 27/10/2020. Es por eso que usted puede determinar el factor de descuento (o tasa cero) de 25/10/2019 a 27/10/2020, porque el retorno de una inversión para estas fechas tiene que ser la misma que la combinación de los 6M de Depósito y 6x12 FRA.
Aquí hay dos posibles simple de implementación en python que dar el mismo resultado para ayudarle a averiguar dónde podría estar el problema.
Utilizando el lenguaje 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)
La salida es: 0.974949221394719 0.9498417381171556
El uso de QuantLib en 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))
La salida es:
October 25th, 2019 1.0
April 27th, 2020 0.9749492213947191
October 27th, 2020 0.9498417381171556