Esta pregunta pretende ser una comprobación de cordura para saber si tengo el flujo de trabajo correcto para fijar el precio de los bonos rescatables. Si alguien encuentra un error, o tiene una sugerencia, por favor responda.
El flujo de trabajo es:
- Para cada fecha de llamada calcule:
- La probabilidad de que el bono se llame
- El precio simple del bono como si tuviera un vencimiento a la fecha de compra
- Calcule el precio medio ponderado del bono con el siguiente código
`
# Assume a callable with call dates t = 1...T-1 and normal maturity T
# CallProps - Vec of Probabilities that the bond is called at times t
# FullPrices - Vec of prices of a bond if it had maturity at t, T.
NoCallProps = 1-CallProps
CumNoCallProps = c(1,cumprod(NoCallProps))
WeightedPrice = 0
for(i in 1:length(FullPrices))
{
WeightedPrice = WeightedPrice + CumNoCallProps[i] * (CallProps[i] * FullPrices[i])
}
`
Las probabilidades de llamada se calculan mediante Monte Carlo:
- tomar el rendimiento actual y simular la evolución de los tipos entre el momento actual y la fecha de convocatoria con un proceso CIR (tomado de la biblioteca MATLAB y adaptado a R)
- comparar el rendimiento en la fecha de rescate con el cupón del bono, y rescatar, si el rendimiento es inferior al cupón
- Calcule la media de las llamadas para el número de réplicas.