1 votos

Probabilidad implícita de impago (diferencial de CDS)

Después de googlear un poco, he avanzado algo pero no lo suficiente como para llegar a una conclusión, así que allá vamos:

Dado que el diferencial de los CDS de una contraparte es de 100 puntos básicos (plano a lo largo del tiempo) y que el tipo de interés libre de riesgo es del 0% (también plano), ¿cuál es la probabilidad implícita anual de impago, suponiendo que al impago de la contraparte hemos pagado la mitad de nuestro diferencial anual? El vencimiento del contrato es de 5 años y la tasa de recuperación esperada es del 40%.

Mi intento:

El valor actual del contrato de CDS para nosotros (el comprador de protección) es:

$P(d)*Protection\ leg + (1-P(d))*Premium\ leg=0$ ,

donde

$Protection\ leg= (1-R)*Notional-0.5*Spread*Notional$ y

$Premium\ leg= Spread*Notional$ .

A partir de esto resolví que

$P(d)=\frac{Spread}{(1-R)+0.5*Spread}$ .

En este caso, asumo que esta es la tasa de riesgo $\lambda$ que es constante ya que la estructura temporal de los CDS es plana. Ahora, siguiendo a Hull, podemos utilizar la fórmula

$P(0,t)=1-e^{(-\lambda*t)}$

para obtener la probabilidad implícita (aproximada) de que se produzca un impago durante el periodo de tiempo $(0,t)$ .

Ahora bien, ¿qué pasa si quiero obtener la probabilidad de que se produzca un impago durante, por ejemplo, $(1,2)$ o $(2,3)$ ? ¿Cómo puedo condicionar adecuadamente las probabilidades?

Gracias.

1voto

Justin Puntos 136

Hay un poco de material aquí, así que iré añadiendo detalles si hay alguna pregunta. El análisis se hace más o menos como en Apéndice K de Hull, J. (2012). Gestión de riesgos e instituciones financieras,+ Sitio web (Vol. 733). John Wiley & Sons .

Importaciones de Python:

import numpy as np
import pandas as pd
from scipy.optimize import brentq

TABLE para construir una tabla con toda la información que necesitamos:

def TABLE(PD, s=0.01, r=0):
    table = pd.DataFrame({'Time': np.arange(1,6)}).set_index('Time')
    table['SurvivingProb'] = np.exp(-PD*table.index)
    table['DefaultProb'] = -np.diff(table['SurvivingProb'], prepend=1)
    table['DF1'] = np.exp(-r*table.index)
    table['PV/ExpPMT'] = table['SurvivingProb']*table['DF1'] # * s
    table['DF2'] = np.exp(-r*(table.index-0.5))
    table['PV/ExpPayoff'] = 0.6*table['DefaultProb']*table['DF2'] # * s
    table['PV/AccrualPMT'] = 0.5*table['DefaultProb']*table['DF2'] # * s
    return table

Por ejemplo, si asumimos una probabilidad de impago (tasa de riesgo) de 0,02 obtendríamos la siguiente tabla:

enter image description here

Para calcular la probabilidad exacta de impago implícita en el diferencial de los CDS, utilizaremos la siguiente función:

def defaultProb(PD, s=0.01, r=0):

    table = TABLE(PD, s, r)

    return s*(np.sum(table['PV/ExpPMT'] + table['PV/AccrualPMT'])) \
                - np.sum(table['PV/ExpPayoff'])

A continuación, utilice el método de Brent para resolver la probabilidad de impago:

PD = brentq(defaultProb, 0, 1)

El resultado es 0.016667 .

Si ahora queremos ver la actualización de TABLE :

TABLE(PD)

enter image description here

A partir de aquí podemos leer directamente las probabilidades incondicionales de impago ( DefaultProb ), es decir, la probabilidad de impago durante un año concreto visto en el momento cero.

Para calcular la probabilidad condicional de impago basta con dividir a la entrada anterior de la primera columna. Por ejemplo, si desea conocer la probabilidad de impago en el tercer año condicionada a que no haya impagos anteriores:

$$0.015987/0.967215=0.01652893$$

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