Escribe la discretización de Euler de la ecuación estocástica unidimensional
$dXt = b (t, X_t) \space dt + \sigma (t, X_t) \space dW_t$
Para esta parte diría que todo bien porque es una parte puramente teórica que encuentro en cualquier libro de cálculo estocástico.
El problema surge en la parte opcional: Establecer $b (t, x) = tx$ , $\sigma (t, x) = \sqrt {t (x + 1)}$ e $X_0 = 1$ , se aproxima numéricamente al valor esperado $max$ { $0, 1 - (X_{0.5})^2$ } utilizando el método Euler-Monte Carlo.
La ecuación discretizada será:
$$dX_{t,j+1} = X_{t,j} tX_{t,j} + t_j X_{t,j} \Delta + \sqrt {t_j (X_{t,j} + 1)^+} \Delta W_j$$ con $X_{t_0} = 1$
¿Podría indicarme un libro o un sitio con un código python para escribir este método? Gracias.
Encuentro este código:
# Create Brownian Motion
np.random.seed(1)
dB = np.sqrt(dt) * np.random.randn(N)
B = np.cumsum(dB)
# Exact Solution
Y = X0 * np.exp((mu - 0.5*sigma**2)*t + (sigma * B))
# EM Approximation - small dt
X_em_small, X = [], X0
for j in range(N):
X += mu*X*dt + sigma*X*dB[j]
X_em_small.append(X)
# EM Approximation - big dt
X_em_big, X, R = [], X0, 2
coarse_grid = np.arange(dt,1+dt,R*dt)
for j in range(int(N/R)):
X += mu*X* (R*dt) + sigma*X*sum(dB[R*(j-1):R*j])
X_em_big.append(X)
# Plot
plt.plot(t, Y, label="Exact ($Y_t$)", color=pal[0])
plt.plot(t, X_em_small, label="EM ($X_t$): Fine Grid", color=pal[1], ls='--')
plt.plot(coarse_grid, X_em_big, label="EM ($X_t$): Coarse Grid", color=pal[2], ls='--')
plt.title('E-M Approximation vs. Exact Simulation'); plt.xlabel('t'); plt.legend(loc = 2);
¿cómo puedo aplicarlo a mi texto? Muchas gracias.