2 votos

Python curva de rendimiento bootstrap equivalente a Matlab IRDataCurve.bootstrap

Quiero hacer un bootstrap de la curva de rendimiento de varias divisas utilizando futuros 3M. Lo tengo implementado en Matlab, pero necesito transferirlo a Python. Tengo un vector de fechas y un vector de precios futuros.

Podría alguien ayudarme a encontrar el equivalente en python al de Matlab:

IRDataCurve.bootstrap('Zero', quote_date, instrument_types, instruments,'InterpMethod','spline','Basis',2,'Compounding',-1,'IRBootstrapOptions', IRBootstrapOptions('ConvexityAdjustment',@(t) .5*sigma^2.*t.^2));

¿Es posible reproducirlo?

He encontrado algunas opciones con QuantLib:

  • PiecewiseLogLinearDiscount
  • Descuento PiecewiseLogCubic
  • PiecewiseLinearZero
  • PiecewiseCubicZero
  • PiecewiseLinearForward
  • PiecewiseSplineCubicDescuento

Pero hay muy poca documentación.

Agradecería mucho su ayuda

1voto

snoopy-do Puntos 342

Puede realizar un bootstrap de una curva de rendimiento utilizando la biblioteca QuantLib en Python. En primer lugar, debe instalar QuantLib para Python ejecutando:

pip install QuantLib-Python

Este es un ejemplo de cómo hacer bootstrap de una curva de rendimiento utilizando QuantLib (código Python equivalente del código Matlab que has publicado):

import QuantLib as ql

# Set up parameters
quote_date = ql.Date(28, 3, 2023)
sigma = 0.01  # Adjust based on your data
yield_curve_basis = ql.Actual365Fixed()
compounding = ql.Simple
day_count = ql.Actual365Fixed()

# Set up your dates and future prices
dates = [ql.Date(30, 6, 2023), ql.Date(30, 9, 2023), ql.Date(31, 12, 2023)]  # Replace with your dates
future_prices = [0.01, 0.015, 0.02]  # Replace with your future prices

# Calculate convexity adjustments
time_to_maturities = [(date - quote_date) / 365.0 for date in dates]
convexity_adjustments = [0.5 * sigma ** 2 * t ** 2 for t in time_to_maturities]

# Create instruments
instrument_types = [ql.DepositRateHelper(ql.QuoteHandle(ql.SimpleQuote(price + adjustment)),
                                         ql.Period(3, ql.Months),
                                         2,
                                         ql.TARGET(),
                                         ql.ModifiedFollowing,
                                         False,
                                         day_count) for price, adjustment in zip(future_prices, convexity_adjustments)]

# Bootstrap yield curve
curve = ql.PiecewiseSplineZero(quote_date, instrument_types, yield_curve_basis, compounding)

# Print zero rates
for date, t in zip(dates, time_to_maturities):
    zero_rate = curve.zeroRate(t, compounding).rate()
    print(f"Zero rate for {date}: {zero_rate * 100:.2f}%")

Este código establece los instrumentos necesarios y calcula la curva de rendimiento utilizando un método de interpolación de splines cúbicos. En curve es un objeto PiecewiseSplineZero que representa la curva de rendimiento bootstrapped. Puede utilizar este objeto para obtener tipos cero, factores de descuento o tipos a plazo según sea necesario.

Tenga en cuenta que es posible que tenga que ajustar los parámetros y los datos de entrada para adaptarlos a sus necesidades específicas.

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