# Required:

• Calculus
• Probability and Statistics
• Very basic programming

# Recommended:

• Stochastic Processes
• Stochastic Calculus or an introductory asset pricing class

# Assumptions

• The price of our stock will generally increase with respect to time
• The expected return is a fixed rate of the current share price
• The stock follows a random-walk behavior

# The Code

`import mathimport randomclass SimpleMCPricer():    def __init__(self, expiry, strike, spot, vol, r, paths):        #The sigma value on the left side of the exponent        self.variance = vol**2 * expiry        #The sigma value on the right side of the e exponent        self.root_Variance = math.sqrt(self.variance)        #Corresponds to the (-1/2 * sigma^2)        self.itoCorr = -0.5*self.variance        ##Corresponds to S0e^(rT - 1/2 sigma^2T)        self.movedSpot = spot*math.exp(r*expiry + self.itoCorr)        self.runningSum = 0        ##Simulate for all paths        for i in range(0,paths):            thisGauss = random.randrange(0,1000,1)            thisGauss = thisGauss/1000            ##Our rootVariance already has been multiplied by the expiry            thisSpot = self.movedSpot*math.exp(self.root_Variance*thisGauss)            #Determine payoff of this specific path            thisPayoff = thisSpot - strike            #Value of option is zero is our price is less than the strike            thisPayoff = thisPayoff if thisPayoff > 0 else 0            self.runningSum+=thisPayoff                self.mean = self.runningSum/paths        self.mean*= math.exp(-r * expiry)        def getMean(self):        return round(self.mean,2)`

# Run the Model!

`model = SimpleMCPricer(2,32,30,.1,0.03,1000000)model.getMean()`
`1.79`

--

--