# Python Program to Solve Probability Questions Assignment Solution.

## Instructions

Objective
Write a Python assignment program to solve probability questions in Python. You are tasked with creating a program that calculates probabilities based on given inputs. Utilize Python's mathematical libraries to handle complex probability calculations efficiently. Your assignment should showcase your understanding of fundamental probability concepts and your ability to translate them into functional code. Ensure your program is well-documented, with clear explanations of the implemented logic and any assumptions made. This assignment will not only assess your Python programming skills but also your grasp of probability theory. Keep the code concise, organized, and thoroughly tested to demonstrate your proficiency.

## Requirements and Specifications

Source Code

```import random import matplotlib.pyplot as plt import numpy as np import pandas as pd import math def Tpath(T, sigma, p, x0): """ QUESTION 1: Simulate the path of T """ # Create the list with the initial value x = np.zeros(T+1) # Now, simulate for t in range(1,T+1): # Generate epsilon prob = random.uniform(0,1) epsilon = 1 if prob <= p else -1 # Generate value xt = x[t-1] + sigma*epsilon # Append x[t] = xt # Return return x def stock_betas(filename): # First, open file data = pd.read_excel(filename, engine='openpyxl', skiprows = 1) sp500 = data.iloc[:,1].to_numpy() P = data.iloc[:,2:].to_numpy() # Now for each stock calculate all RTs and beta betas = [] for i in range(P.shape[1]): prices = P[:,i] x = [] y = [] xy = [] xx = [] # Calculate RTs for t in range(1,len(prices)): Pt = prices[t] Ptold = prices[t-1] if not math.isnan(Pt) and not math.isnan(Ptold) and Pt >= 0 and Ptold > 0: Rt = (Pt-Ptold)/Ptold y.append(Rt) dsp500 = (sp500[t]-sp500[t-1])/sp500[t-1] x.append(dsp500) xy.append(Rt*dsp500) xx.append(dsp500**2) # Now calculate beta = (len(x) * sum(xy) - sum(x) * sum(y)) / (len(x)*sum(xx) - sum(x) ** 2) betas.append(beta) return betas if __name__ == '__main__': # Question 2 T = 120 sigma = 0.6 p = 0.5 x0 = 10 # Run the simulation of 1,000,000 cases prob = 0.0 N = 10000 for _ in range(N): x = Tpath(T, sigma, p, x0) # Pick the number of times that x is less than x0 prob += len(np.where(x <= 0.75*x0)[0])/(T+1) prob = prob/N print("The probability that xt drops at least 25% below its initial value at least once is {:.4f}%".format(prob*100.0)) """ Question 3 """ # generate a new path x = Tpath(T, sigma, p, x0) plt.figure() plt.plot(range(T+1), x) plt.xlabel('Time (month)') plt.ylabel('Probability') plt.title('Probability vs. Time') plt.grid(True) plt.show() """ Question 4 """ betas = stock_betas('stockprices2020b.xlsx') print(betas)```