How to do a Monte Carlo simulation for price prediction in Python
• 1 minA Monte Carlo simulation for price prediction in Python can be performed using the following steps:
- Define the underlying model: Define the relationships between the different variables that impact the price of the asset, such as stock returns, interest rates, dividends, and volatility.
- Generate random samples: Use a random number generator, such as
numpy.random
, to generate samples for the inputs to the model. - Run multiple simulations: Use the model and the generated random samples to run multiple simulations of the price of the asset over a specified time period.
- Analyze the results: Analyze the distribution of the simulated prices to estimate the expected price, confidence intervals, and other relevant statistics.
Here's an example of how to perform a Monte Carlo simulation for stock price prediction in Python:
import numpy as np
import pandas as pd
# Define the simulation function
def monte_carlo_simulation(S, mu, sigma, T, N):
# Time step
dt = T/N
# Initialize prices array
prices = np.zeros([N])
# First price is the initial price
prices[0] = S
# Loop through the remaining time steps
for i in range(1, N):
# Generate random normal variable
e = np.random.normal(0, 1)
# Update the stock price using the geometric Brownian motion model
prices[i] = prices[i-1] * np.exp((mu - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * e)
# Return the simulated prices
return prices
# Number of time steps
N = 252
# Total time period
T = 1
# Mean return
mu = 0.05
# Standard deviation of returns
sigma = 0.2
# Initial stock price
S = 100
# Number of simulations
simulations = 10000
# Create a pandas dataframe to store the simulated prices
results = pd.DataFrame(index=range(N), columns=["sim" + str(i) for i in range(simulations)])
# Loop through the simulations
for i in range(simulations):
# Run the simulation and store the result in the dataframe
results["sim" + str(i)] = monte_carlo_simulation(S, mu, sigma, T, N)
# Calculate the mean, upper, and lower bounds of the simulated prices
mean = results.mean(axis=1)
upper = results.quantile(0.95, axis=1)
lower = results.quantile(0.05, axis=1)
In this script, the monte_carlo_simulation
function generates a simulation of the stock price using a geometric Brownian motion model. The monte_carlo_simulation
function is then run simulations
times to get a set of simulated prices. The mean, upper, and lower bounds of the simulated prices are then calculated using pandas.