import numpy as np
import matplotlib.pyplot as plt
# Parameters
mu = 0.1 # Drift (average return)
sigma = 0.2 # Volatility (standard deviation of return)
S0 = 100 # Initial stock price
T = 1 # Time period in years
N = 252 # Number of trading days in a year (assuming 252)
dt = T / N # Time interval
num_simulations = 5
# Simulate GBM
np.random.seed(42)
for _ in range(num_simulations):
t = np.linspace(0, T, N+1)
W = np.random.standard_normal(size=N+1) # Brownian motion increments
W = np.cumsum(W) * np.sqrt(dt) # Brownian motion
# Geometric Brownian Motion equation
S = S0 * np.exp((mu - 0.5 * sigma**2) * t + sigma * W)
# Plot
plt.plot(t, S, lw=2, alpha=0.6)
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.title('Geometric Brownian Motion Simulation')
plt.grid(True)
plt.show()