1 votos

Cómo cambiar el referenceDate del YieldTermStructureHandle en QuantLib

Supongamos que ya conocemos las fechas y los tipos de una curva de tipos de interés al contado, y pasé los datos a la clase ZeroCurve para construir una curva de descuento para la fijación de precios de los bonos. Lo que quiero encontrar es cómo cambiar el referenceDate de la curva de descuento sin cambiar los datos originales de fechas y tipos. Lo he intentado de la siguiente manera:

Settings.instance().evaluationDate = Date(11, 12, 2017)

fake_dates = [Date(8, 5, 2017+i) for i in range(5)]
fake_rates = [(1+i)/100 for i in range(5)]

day_counter = ActualActual()

spot_curve = ZeroCurve(fake_dates, fake_rates, day_counter, China(), Linear(), Compounded, Semiannual)     

discount_curve = YieldTermStructureHandle(spot_curve)

print(discount_curve.referenceDate())

# Reset the evaluation date

Settings.instance().evaluationDate = Date(12, 12, 2017)
print(discount_curve.referenceDate())

Pero, ¡esto no funciona! Devuelve el mismo resultado de Fecha(11, 12, 2017)

Soy un novato en QuantLib-Python, se agradecería si alguien pudiera hacerme un favor. ¡Muchas gracias!

0voto

Bernd Puntos 292

Le sugiero que lea el siguiente capítulo del QuantLib Python Cookbook:

"5. Estructuras temporales y sus fechas de referencia"

También puede ver este vídeo:

https://www.youtube.com/watch?v=pc1yOmxU2GQ

El autor desprende una estructura de términos de manera que su fecha de referencia se mueve con la fecha de evaluación y un método que no lo hace.

0voto

foh1981 Puntos 291

Quería añadir un comentario para responder a mi propia pregunta según el enlace de @Bernd (gracias @Bernd), pero el editor de comentarios no es muy fácil de usar para mí. Volviendo a la pregunta, hay dos formas alternativas de elegir.

  1. Utiliza los tenores y los tipos para construir un ayudante.

    helper_= DepositRateHelper(QuoteHandle(SimpleQuote(rate/100)),Period(*tenor),0,China(),Following,False,ActualActual()) for tenor, rate in [((1, Years), 1),((2, Years), 2),((3, Years), 3),((4, Years), 4), ((5, Years), 5)]]
    
    discount_curve = PiecewiseFlatForward(2, TARGET(), helper_, ActualActual())
    discount_curve.referenceDate()

Ahora, podemos cambiar el primer argumento de PiecewiseFlatForward para obtener nuestra referenceDate requerida.

  1. Utilice las fechas y las tasas para construir directamente una curva. Pero ahora tenemos que cambiar las fechas si queremos cambiar la referenceDate.

    fake_dates_shift = [date + Period(2, Days) for date in fake_dates]   
    spot_curve_shift = ZeroCurve(fake_dates_shift, fake_rates, day_counter, China(), Linear(), Compounded, Semiannual)     
    discount_curve_shift = YieldTermStructureHandle(spot_curve_shift)
    discount_curve_shift.referenceDate()

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X