1 votos

Pregunta sobre el proceso de difusión de saltos

Tengo una opción de compra europea con vencimiento temporal $T=3$ años, $K=50$ y dado que $S(t)$ se refiere a que la derivada está siendo descrita por el movimiento browniano geométrico con $S_{0}=100$ y $r = 0.04$ La volatilidad del título es estocástica y se desvía entre dos etapas $\sigma_-=0.25$ y $\sigma_+ =0.75.$ Esas dos etapas pueden describirse como un proceso de saltos en el que el tiempo entre $0.25 \to 0.75$ se distribuye exponencialmente con $\lambda_+=1$ y el salto $0.75 \to 0.25$ también se distribuye exponencialmente con $\lambda_-=3$ Por lo tanto, bajo la medida de riesgo neutral, el proceso se describe por $$dS(t) = (r-\sigma_{t}^2/2)S(t)dt+\sigma_{t}S(t)dW(t)$$

Mi pregunta es cómo puedo modelar estas "dos etapas" con dos sigmas diferentes y diferentes lambdas de tiempo de llegada distribuido exponencialmente?

1voto

Foxy Puntos 46

NB: He reelaborado la respuesta para utilizar la distribución del tiempo de permanencia de los CTMC, véase más abajo.

Un primer ansatz incompleto

Observación preliminar: En la configuración propuesta, la volatilidad sigue una cadena de Markov (de tiempo continuo) sobre dos estados de volatilidad con un estado de alta volatilidad ( $h$ ) y un estado de baja volatilidad ( $l$ ) y las intensidades de salto $\lambda_{l\to h}$ , $\lambda_{h\to l}$ . Simplifiquemos un poco y supongamos un proceso de salto discreto con paso de tiempo $\Delta t = \tau / n$ y la matriz de transición

$$ Q\equiv\begin{pmatrix} P(l_t\to l_{t+\Delta t}) & P(h_t\to l_{t+\Delta t})\\P(l_t\to h_{t+\Delta t}) & P(h_t\to h_{t+\Delta t})\end{pmatrix}\approx \begin{pmatrix} 1-\Delta t\lambda_{l\to h} &\Delta t\lambda_{h\to l}\\\Delta t\lambda_{l\to h} & 1-\Delta t\lambda_{h\to l}\end{pmatrix} $$ Simplifiquemos la matriz como $$ \begin{pmatrix}P_{ll}&P_{hl}\\P_{lh}&P_{hh}\end{pmatrix} $$

Dado algún parámetro de discretización razonable $n$ y algún estado inicial $v_1=h$ o $v_1=l$ tenemos todos los ingredientes para calcular la distribución del "número de veces $\#h, \#l=n-\#h$ la cadena está en los estados de alta y baja volatilidad. Por ejemplo, con $n=5$ y $v_1=l$

$$ \begin{align} P_n(\#l=5)=&P_{ll}^5\\ P_n(\#l=4)=&P_{ll}^4P_{lh}\\ +&4P_{ll}^3P_{lh}P_{hl}\\ P_n(\#l=3)=&P_{ll}^3P_{lh}P_{hh}\\ +&3P_{ll}^2P_{lh}^2P_{hl}\\ +&2P_{ll}^2P_{lh}P_{hl}P_{hh}\\ +&3P_{ll}P_{lh}^2P_{hl}^2\\ +&P_{ll}^2P_{lh}P_{hl}P_{hh}\\ \end{align} $$ ...etc. En teoría, podríamos precalcular estas probabilidades para un nivel razonable $n$ y llegar a una distribución (discreta) de $\sigma$ a partir de la cual podemos producir una fórmula de opción de compra similar a la de Merton. Pero tengo la sensación de que esto será bastante engorroso, la verdad.

Una segunda ansatz

Sabemos que los tiempos de permanencia de los procesos de markov de tiempo continuo están distribuidos exponencialmente . Por ejemplo, dado el estado inicial $l$ El tiempo del primer salto $t_1$ se distribuye exponencialmente con

$$ t_1\sim exp(\lambda_{l\to h}) $$ Entonces, como en el caso anterior, la probabilidad de que veamos al menos un salto es $P(t_1<\tau)$ y tendremos que calcular algunas convoluciones muy complicadas para llegar al primer par de distribuciones sensatas para los tiempos en cada estado.

Por lo tanto, sugiero una

ansatz MC puro .

Fijar los parámetros habituales, especialmente el tiempo de maduración tau los niveles de volatilidad vol_lo y vol_hi y algún indicador de estado inicial state0=1 (baja) o state0=2 (alto). A continuación, hacemos uso de la distribución exponencial de los tiempos de permanencia (ajustar a su aplicación)

set.seed(42)

nSim   <- 1E5
tau    <- 3
K      <- 105
S0     <- 100
rf     <- 0.05
vol_lo <- 0.25
vol_hi <- 0.75
lambda <- c(3,2) # away-from-lo, away-from-hi

sim_time_in_lo <- function(state0){
  t <- 0
  s <- state0
  time_lo <- 0
  while (t<tau){
    dt <- rexp(n=1,lambda[s])
    if ((t+dt)>tau){ dt <- tau - t}
    if (s==1){time_lo <- time_lo + dt }
    if (s==1){s<-2} else {s <-1}
    t <- t+ dt
  }
  time_lo
}
tau_lo     <- sapply(1:nSim,function(i){sim_time_in_lo(1)})
tau_hi     <- tau - tau_lo
total_var  <- tau_lo * vol_lo^2 + tau_hi * vol_hi^2
drift      <- rf * tau-0.5*total_var
randomness <- sqrt(total_var)*rnorm(nSim,)

mean(exp(-rf*tau)*pmax(S0*exp(drift + randomness)-K,0))

con salida:

[1] 41.58493

Espero que eso haya ayudado un poco. Voy a pensar un poco más durante los próximos días; y tal vez alguien más tenga una idea.

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