Project 1

Stochastic Foundations for Finance

Instructions

This assignment set is due on 11/22 at 11:59 pm CST and is a group assignment. Each group can have a maximum of three students. The assignment must be written in Jupyter using Python. The deliverable is an HTML file of the Jupyter Notebook. The formatting and presentation will count for 40% of the grade, so make sure to format your notebook nicely, explaining in markdown cells your work. Use titles, sub-titles, equations, and properly capitalized sentences to explain what you do. Break your code into chunks and explain what each chunk does.

Methodology

The model of Black and Scholes (1973) implies that it is possible to price European-style derivatives by simulating the stock price under the risk-neutral measure and discounting expected payoffs at the risk-free rate.

Black, Fischer, and Myron Scholes. 1973. “The Pricing of Options and Corporate Liabilities.” Journal of Political Economy 81 (3): 637–54.

Consider a stock with price S that pays a dividend yield q and whose risk-neutral dynamics are given by \frac{dS}{S} = (r - q) dt + \sigma dz, where r denotes the continuously compounded risk-free rate and z is a Brownian motion. If we denote x = \ln(S), Ito’s lemma implies that dx = \left(\mu - \frac{1}{2} \sigma^{2}\right) dt + \sigma dz. We can express the previous expression in discrete time as \Delta x_{t} = \left(\mu - \frac{1}{2} \sigma^{2}\right) \Delta t + \sigma \Delta z_{t} = \left(\mu - \frac{1}{2} \sigma^{2}\right) \Delta t + \sigma \sqrt{\Delta t} \varepsilon_{t + \Delta t}, which implies \begin{aligned} x_{1 \Delta t} & = x_{0 \Delta t} + \left(\mu - \frac{1}{2} \sigma^{2}\right) \Delta t + \sigma \sqrt{\Delta t} \varepsilon_{1}, \\ x_{2 \Delta t} & = x_{1 \Delta t} + \left(\mu - \frac{1}{2} \sigma^{2}\right) \Delta t + \sigma \sqrt{\Delta t} \varepsilon_{2}, \\ x_{3 \Delta t} & = x_{2 \Delta t} + \left(\mu - \frac{1}{2} \sigma^{2}\right) \Delta t + \sigma \sqrt{\Delta t} \varepsilon_{3}, \\ & \hspace{0.55em} \vdots \\ x_{n \Delta t} & = x_{(n - 1) \Delta t} + \left(\mu - \frac{1}{2} \sigma^{2}\right) \Delta t + \sigma \sqrt{\Delta t} \varepsilon_{n}. \end{aligned} \tag{1}

In this project you will be pricing European-style options expiring in T = 0.75 years by assuming that the stock price changes every trading day. If we assume that there are 250 trading days in a year, this implies that \Delta t = 1 / 250 = 0.004 years. Therefore, for each path or history of the stock price you will pick 250 independent \mathcal{N}(0, 1) random numbers in order to compute the simulated path.

You will simulate 10,000 different paths or histories of the stock. The price of each option will be computed as the average payoff at maturity discounted at the risk-free rate. Note that for some options the payoff might depend on the whole history of the stock price. If X = f(\{S\}_{t=0}^{T}) denotes the potentially path-dependent payoff of the option, it’s price is given by P = \operatorname{E}(X) e^{-r T}.

Therefore,

  1. Simulate the price history from t = 0 until t = T using a \Delta t = 0.004.
  2. Compute the payoff X^{(k)} of the option in simulation k.
  3. Do this 10,000 times.

Once you have all 10,000 simulations, the price of the option will be given by P = \left(\frac{1}{10{,}000} \sum_{k = 1}^{10{,}000} X^{(k)}\right) e^{-r T}.

We will assume in the following that the stock price today is S_{0} = \$100, r = 5\%, q = 2\% and \sigma = 40\%.

Questions

Plain vanilla European options

  1. Compute the price of a European call option with strike price $110, i.e., that pays at maturity \max(S_{T} - 110, 0).
  2. Compute the price of a European put option with strike price $90, i.e., that pays at maturity \max(90 - S_{T}, 0).

Lookback options

  1. Compute the price of a floating lookback call option that pays at maturity S_{T} - S_{min} where S_{min} is the minimum price of the stock in each path.
  2. Compute the price of a floating lookback put option that pays at maturity S_{max} - S_{T} where S_{max} is the maximum price of the stock in each path.

Asian Options

  1. Compute the price of an average strike call option that pays at maturity \max(S_{T} - \bar{S}, 0), where \bar{S} is the average price of the stock in each path.
  2. Compute the price of an average strike put option that pays at maturity \max(\bar{S} - S_{T}, 0), where \bar{S} is the average price of the stock in each path.

Note: For each question, generate a histogram of the payoffs of each option, and indicate in the graph the average payoff at maturity.