To explore the impact of volatility on stock price trajectories using Geometric Brownian Motion
Description
Synopsis: These scenarios investigates the effect of volatility ({of 0.10, 0.14, 0.19, 0.23, 0.28, 0.32, 0.37, 0.41, 0.46, and 0.50}) on stock price simulations through Geometric Brownian Motion (GBM). The simulated stock price trajectory showcases the potential outcomes of a stock's movement over a defined time period. Key Observations: • Volatility Impact: As expected, higher volatility leads to a wider range of potential price movements. Increased volatility is represented by a more spread-out and erratic trajectory, signifying higher uncertainty in the stock's future path. • Fluctuations and Risk: The scenario demonstrates increased fluctuations in stock price with higher volatility. The substantial fluctuations reflect higher risk associated with the stock, implying greater unpredictability in its value. Interpretation: • Risk Assessment: Higher volatility, as depicted in this scenario, indicates a riskier investment. The wider spread of potential outcomes emphasizes the uncertainty in the stock's future price. • Investment Consideration: For risk-averse investors, lower volatility scenarios might be preferable due to their smoother and more predictable price trajectories. Conversely, those seeking higher potential returns might favour scenarios with higher volatility, despite the increased risk. Take away: This simulation highlights the significant influence of volatility on stock price trajectories. Understanding and assessing volatility is crucial for making informed investment decisions, balancing risk tolerance with potential returns.
Files
Steps to reproduce
import numpy as np import matplotlib.pyplot as plt # Set initial stock price and time range stock_price = 100 # Initial stock price time_range = np.arange(0, 1, 0.01) # Time range # Create 10 scenarios with different volatilities volatility_values = np.linspace(0.1, 0.5, 10) # Different volatility values for i, vol in enumerate(volatility_values): stock_path = stock_price * np.exp(vol * np.sqrt(time_range) * np.random.randn(len(time_range))) # Plot each scenario separately plt.figure(figsize=(8, 5)) plt.title(f'Stock Price Scenario {i + 1} (Volatility: {vol:.2f})') plt.xlabel('Time') plt.ylabel('Stock Price') plt.plot(time_range, stock_path) plt.show()