1 votos

Determinación del tiempo predeterminado basado en algún modelo

Me encontré con el siguiente fragmento de código VBA, que básicamente intenta generar aleatoriamente un tiempo predeterminado basado en algún modelo de tasa de riesgo

Seed = 7777
ReDim GaussOut(0 To Steps + 1)
CorrTerm = Sqr(1 - Correlation ^ 2)
VolTerm = (-Vol * Vol / 2) * DT
SqrDT = Sqr(DT)

While Tries < 50

    ThisHR = HR

    For i = 1 To Steps
        Gauss = gasdev(Seed)
        GaussOut(i) = Gauss * Correlation + gasdev(Seed) * CorrTerm
        ThisHR = ThisHR * Exp(VolTerm * DT + Gauss * Vol * SqrDT)
        URand = Rnd()
        If ((1 - Exp(-ThisHR * 0.25)) > URand) Then
            GaussOut(0) = i
            GaussOut(i + 1) = Tries + 1
            Tries = 51
            i = Steps + 1
        End If
    Next i
    Tries = Tries + 1
Wend

Si bien no tengo documentación sobre el código anterior, basado en algún estudio, pude extraer alguna información como la siguiente

  1. DT es el tamaño del paso
  2. La función gasdev genera una variate normal estándar basada en alguna semilla
  3. HR es la tasa de riesgo inicial

Parece que la tasa de riesgo está evolucionando según algún modelo, es decir ThisHR = ThisHR * Exp(VolTerm * DT + Gauss * Vol * SqrDT).

¿Podrías ayudarme a entender cuál es ese modelo? Según otras discusiones, puede parecer que la tasa de riesgo se asume que sigue algún modelo log-normal, pero no estoy seguro y no pude relacionar completamente la fórmula anterior con ningún modelo log-normal.

Además, se asume que un defecto ocurre si ((1 - Exp(-ThisHR * 0.25)) > URand). ¿Por qué es así?

Además, se supone que el modelo anterior está utilizando algunos parámetros como Correlation y vol. Una vez más, no logré comprender qué significan estos 2 parámetros, es decir, ¿vol de qué? ¿Correlation con qué?

Cualquier indicio sobre las preguntas anteriores será muy útil y realmente lo apreciaría.

Gracias por tu tiempo.

2voto

cremersstijn Puntos 123

Hay muchos errores en este código

Parece que está intentando dibujar un tiempo predeterminado usando un modelo de intensidad estocástica lognormal,

$dh/h = Vol\times dW$,

donde $dW$ se dibuja de tal manera que está correlacionado con algún factor común. Parece que es parte de la simulación de tiempo predeterminado de la cesta, donde todas las fluctuaciones de la tasa de riesgo están correlacionadas con la correlación "correlación^2" (lo que este código llama "correlación" en realidad es "beta").

La integral de este proceso es la línea de EsteHR, pero el término VolTerm * DT es incorrecto, porque DT ya está presente en VolTerm. Debe estar solo en un lugar.

La probabilidad de incumplimiento instantáneo es $h\times dt$, así que para muestrear el evento de incumplimiento en el tiempo dado, necesitas dibujar la "probabilidad" de dicho evento, que es normal uniforme (urand) y luego compararla con la "probabilidad muestreada", que es o bien $h\times dt$, o $1-exp(-h\times dt)$, que es más correcto y estable. Sin embargo, en el código se asume explícitamente que dt es 0.25 (un cuarto), mientras que el otro DT no está especificado. Deberían ser iguales.

Esta generación de una variable exponencial es equivalente a generar una variable gaussiana usando (en Excel) =Nomsinv(rand()).

En general, el código parece hacer 50 intentos para generar un evento de incumplimiento. En el primer intento exitoso se detiene. En GaussOut(0) devuelve el tiempo predeterminado como el índice del paso de tiempo, en GaussOut(i) devuelve el número de intentos que fueron necesarios para generar dicho tiempo de incumplimiento.

No está claro por qué gasdev(Seed) siempre se llama con el mismo Seed. Necesitas verificar que cada invocación produzca un número aleatorio diferente.

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