Processing math: 100%

1 votos

Simulación del movimiento browniano geométrico

Genero 10000 trayectorias binomiales aleatorias para una acción cuyo precio va desde S(0) = 10 hasta S(t) donde t = 1 año. Supongamos un movimiento browniano geométrico para el precio de la acción con una deriva del 15% anual y una volatilidad del 20%. Utilizo 10000 pasos de tiempo igualmente espaciados de longitud a lo largo de cada camino y ΔS=μSΔt±σSΔt donde los movimientos + o - en cada paso de tiempo se generan al azar con igual probabilidad.

S = 10
S1 = []
mean = 0.15
sd = 0.2

for i in range(10000):
    S = 10

    for j in range(10000):
        roll = np.random.rand()

        if roll < 0.5:
            S = S + mean*S/10000 + sd*S/100
        else:
            S = S + mean*S/10000 - sd*S/100

    S1.append(S)

Utilizo los códigos anteriores para simular el GBM y mi resultado es el mismo que los valores teóricos. La media debería ser S(0)eμt y la varianza debe ser S2(0)e2μt(eσ2t1) . Pero hay una pregunta que quiere que calcule la inversa, que es G(t)=1/S(t) . Considero que la media debe ser 1S(0)eμt y la varianza deben ser 1S2(0)e2μt(eσ2t1) . ¿Estoy en lo cierto? Pero no estoy seguro de cómo cambiar mis códigos. He intentado escribir los siguientes códigos. Pero el resultado está lejos de los valores teóricos media = 0,116 y varianza = 0,00055. ¿Podría alguien explicarme en qué me estoy equivocando? Muchas gracias.

S = 10
G1 = [1/10]
mean = 0.15
sd = 0.2

for i in range(10000):
    S = 10

    for j in range(10000):
        roll = np.random.rand()

        if roll < 0.5:
            G = 1/S
            S = S + mean*S/10000 + sd*S/100
            G = G + mean*(1/S)/10000 + sd*(1/S)/100
        else:
            G = 1/S
            S = S + mean*S/10000 - sd*S/100
            G = G + mean*(1/S)/10000 - sd*(1/S)/100

    G1.append(G)

0 votos

Hola: Vago esbozo de cómo hacer esto: dsS es continua BW ( usted discretizó ) así que yo haría el mismo tipo de discretización para averiguar cuál es la difusión para (1S) .. A continuación, puede realizar un tipo de simulación similar pero que será para \traingle(1S) .. No pude averiguar cómo hacer un triángulo más pequeño. Creo que se puede utilizar el lema de Ito para calcular la difusión para 1S .

0 votos

Hola, ¿podría explicar más sobre Δ1S ? Muchas gracias. He probado varios métodos. Pero los resultados están todos muy lejos de los valores teóricos media = 0,116 y varianza = 0,00055.

0 votos

Para la media de 1/S, ¿su código produce: E[1St]=1S0e(μ12σ2)t+12σ2t=1S0eμt+σ2t ?

3voto

user35546 Puntos 11

Sólo para explicar las fórmulas de la media y la varianza. Podemos empezar con la solución de la SDE de GBM:

St=S0e(μ12σ2)t+σWt

entonces,

1St=1S0e(μ12σ2)tσWt

La media (y la varianza) se obtienen fácilmente mediante esta identidad para una variable aleatoria gaussiana Y:

E[eY]=eE[Y]+12V[Y]

Aplicando esto a S, y observando que:

E[(μ12σ2)t+σWt]=(μ12σ2)t

V[(μ12σ2)t+σWt]=σ2t

obtenemos la conocida expresión para la media de S:

E[St]=S0e(μ12σ2)t+12σ2t=S0eμt

Y aplicando la identidad a la expresión de 1/S, obtenemos su media como sigue:

E[1St]=1S0e(μ12σ2)t+12σ2t=1S0eμt+σ2t

La varianza puede determinarse utilizando la misma identidad.

0 votos

Por lo tanto, no es necesaria la discretización-simulación. Basta con introducir los términos y obtener las expectativas. ¿Sólo para asegurarme de que eso es correcto? Gracias.

0 votos

@Cindy: Borro mi respuesta ya que es el-wrongo o al menos no es necesario.

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