Inspiration

For me to get a deeper understanding of how financial derivatives are valued in the market, which is fundamental knowledge for anyone interested in finance or capital markets.

What it does

We are pricing European-style, in-the-money call options that track the FTSE 100 Index. How it works is that I assume the stock moves in a Geometric Brownian Motion (GBM), where the log of the quantity follows a Brownian motion, and derive a stochastic differential equation that computes the stock price. Then, I apply Monte Carlo methods by iteratively computing the stock price using this equation, compute the payoff (subtracting the strike price), discounting it to the present and computing the risk-neutral expectation over EACH iteration. In short, the philosophy of using the MC simulation is that Option value = risk-neutral expectation of its discounted payoffs.

Improvements

I only used NumPy to compute the call price, but there are so many ways to optimize it. First of all, if I simply vectorized my calculations (put all my computations into matrices), it would have sped up the runtime significantly. However, even doing so, the major drawback of Monte Carlo is that it in itself is just extremely computationally expensive. In order to get a reasonable estimate we need to simulate hundreds of thousands of asset paths. However, there are definitely ways to improve it using variance reduction techniques or even just using quasi-random numbers, as opposed to pseudo-random numbers.

Built With

Share this project:

Updates