7 votos

¿Fórmula de forma cerrada para la duración máxima aproximada de un bono?

En mi aprendizaje de los bonos, estoy escribiendo un programa informático, uno de los cuales calculará el vencimiento de un bono dada la curva de rendimiento como función y una duración solicitada. La parte complicada es que la duración depende de los tipos de interés, y el tipo de interés depende (a través de la curva de rendimiento) del vencimiento, que depende de la duración. Esta parte funciona bien para duraciones y tipos de interés razonables, aunque con cierta lentitud, simplemente iterando entre el cálculo del vencimiento y el cálculo de los tipos de interés, hasta que se llega a una solución.

Sin embargo, se supone que otra función genera una cartera de dichos bonos llamando a la función anterior, dada una duración media y una desviación estándar de la duración de los bonos en la cartera. Ahora el paradigma se rompe, ya que el generador solicitará ocasionalmente duraciones superiores a la duración máxima del propio bono. La solución más sencilla para ambas funciones es calcular una duración máxima aproximada y evitar las solicitudes de duración que superen ese límite.

Mi comprensión de la duración máxima es algo limitada, excepto para decir que la relación duración-madurez tiene forma de U invertida y generalmente no se presta a soluciones de forma cerrada. Sólo he podido localizar un documento sobre el tema que es sólo para bonos por debajo del par. Las aproximaciones brutas están bien; sólo necesito estar en el punto de mira para esta aplicación. Pero las soluciones de forma cerrada son esenciales, ya que esta comprobación se ejecutará en cada bono creado (y si simulo puedo crear miles o más con el tiempo).

18voto

Brian Campbell Puntos 131

Después de pasar por el papel de Pianca debido a su escasa corrección ( $F$ nunca se define pero parece ser el valor nominal, y $n$ está implícito que es el número de periodos restantes pero es en cambio el vencimiento), parece que lo tengo resuelto.

Usando la función lambertW en gsl, lo tengo replicado en R:

# Estimate duration using various closed-form formulae
# Equations 5,6, and 11 in Pianca "Maximum duration of below-par bonds: A closed-form formula"
# Assumptions: flat yield curve, constant coupon, reimbursement value = face value
# r = C/F, or the coupon rate (F is face value, C is dollar value of coupons)
# i = applicable interest rate
# n = maturity date,
# type = "pianca", "macaulay", or "hawawini"
# At par, (i==r)
findDur_ClosedForm <- function(r,i,n,type="pianca") {
  type <- tolower(type)
  ani <- NA # For hawawini: Need pv of an n-period annuity at rate i
  switch(type,
    pianca = 1 + (1/i) + ( n*(i-r) - (1+i) )/( r*( (1+i)^n - 1 ) + i ) ,
    macaulay = 1 + 1/i - ( (1+i)/r + n*(1+1/r-(1+i)/r ) ) / ( (1+i)^n - 1 - 1/r + (1+i)/r ) ,
    hawawini = ( (1+i)*ani*r + n*(i-r)(1+i)^(-n) ) / ( r+(i-r)(1+i)^-n )
  )
}

library(gsl)
# Find maximum duration using closed-form formulae
# ... pass-alongs to findDur_ClosedForm
findMaxDur <- function(r,i,...) {
  # If above or at par, max duration is 1+1/i
  # Otherwise use Pianca formula
  asymptote <- 1+1/i
  if( i<=r ) { # At or above par
    return(asymptote)
  } else { # Below par
    a <- i-r
    b <- log(1+i)
    n <- ( b*(1+i) + a*( 1 + lambert_W0( a*exp( -(a+b*(1+i))/a )/r ) ) ) / (a*b)
    return( findDur_ClosedForm(r=r,i=i,n=n) )
  }
}

Ns <- seq(1,300,1)
Ds <- sapply( Ns, findDur_ClosedForm,r=.001,i=.05 )
plot(Ds~Ns)

r=.001,i=.05

# Numerical optimization from closed form
> max(Ds)
[1] 51.01994
# Maximum according to Pianca's paper
> findMaxDur(r=.001,i=.05)
[1] 51.01998

También he confirmado a través de la lectura de los documentos cuidadosamente y la comparación con los resultados exactos que las soluciones de forma cerrada son todas las estimaciones no exactas.

4voto

Magus Puntos 861

Si eres capaz de trabajar con los resultados del documento citado (Pianca, Duración máxima de los bonos por debajo de la paridad: Una fórmula de forma cerrada ), ¡felicidades! ¡Ya tienes la parte difícil hecha!

Las duraciones máximas de los bonos a la par y con prima son triviales. He aquí una figura extraída directamente del documento citado:

enter image description here

Algunos puntos sobre la figura:

  • el tipo de interés de mercado utilizado es $i=10\%$
  • $1 + 1/i$ es la duración de un bono perpetuo
  • a excepción del bono de cupón cero, a medida que aumenta el vencimiento, las duraciones de todos los bonos se aproximan asintóticamente a la del bono perpetuo
  • los bonos a la par y con prima ( $r=10\%$ y $r=20\%$ ambos aumentan monotónicamente hacia la duración del bono perpetuo a medida que aumenta el vencimiento

Así, la duración máxima de los bonos a la par y por encima de la par es simplemente $1+1/i$ , donde $i$ es el tipo de interés del mercado.

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