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.