Soy nuevo en QuantLib y estoy tratando de conseguir que reproduzca algunas matemáticas simples de bonos.
Supongamos que tenemos un bono a 5 años con pagos de cupones anuales de \$5 and face value of \$ 100, y un tipo de interés del 4%. Los cálculos clásicos arrojan que el valor actual del bono es \$104.45. When I try to do this simple example in QuantLib-Python, I get $ 104,70 a pesar de mis intentos de eliminar las convenciones del calendario.
¿Cómo puedo utilizar QuantLib para alinearme con esta simple matemática de bonos?
from QuantLib import *
# Construct yield curve
calc_date = Date(1, 1, 2017)
Settings.instance().evaluationDate = calc_date
spot_dates = [Date(1,1,2017), Date(1,1,2018), Date(1,1,2027)]
spot_rates = [0.0, 0.04, 0.04]
day_count = SimpleDayCounter()
calendar = NullCalendar()
interpolation = Linear()
compounding = Compounded
compounding_frequency = Annual
spot_curve = ZeroCurve(spot_dates, spot_rates, day_count, calendar, interpolation, compounding, compounding_frequency)
spot_curve_handle = YieldTermStructureHandle(spot_curve)
# Construct bond schedule
issue_date = Date(1, 1, 2017)
maturity_date = Date(1, 1, 2022)
tenor = Period(Semiannual)
calendar = NullCalendar()
business_convention = Unadjusted
date_generation = DateGeneration.Backward
month_end = False
schedule = Schedule(issue_date, maturity_date, tenor, calendar, business_convention, business_convention, date_generation, month_end)
# Create FixedRateBond Object
coupon_rate = 0.05
coupons = [coupon_rate]
settlement_days = 0
face_value = 100
fixed_rate_bond = FixedRateBond(settlement_days,
face_value,
schedule,
coupons,
day_count)
# Set Valuation engine
bond_engine = DiscountingBondEngine(spot_curve_handle)
fixed_rate_bond.setPricingEngine(bond_engine)
# Calculate present value
value = fixed_rate_bond.NPV()
print(value)
0 votos
No veo nada evidente. Deberías imprimir todos los flujos de caja y comprobar cada uno de ellos.
0 votos
¿Cómo lo haría? Mi corazonada es que la curva de rendimiento lo está estropeando.
1 votos
104,45 es el precio del bono con cupones anuales, pero su código fija el precio del bono asumiendo cupones semestrales. ¿No es de ahí de donde viene la diferencia?