4
$\begingroup$

i'm currently a high school student who hasn't gone past Algebra II, and thus I have minimal Calculus knowledge. I know the basics of Integration and Derivation (drop the coefficient, raise to the coefficient), Infinite series, and some basics of random walks (ex. t^0.5 = sigma).

I am unable to solve the Black Scholes equation due to it's use of SDEs. I am however familiar with probability theory and have attempted to approximate the CDF of a Gaussian distribution using a Monte Carlo Method. I plugged in the standard deviation and strike price as (strike/sigma) then multiplied by the payout as a percent and added the risk free rate (10 year treasury) times days till expiration divided by 365 (365 days in a year duh). This gave me a value almost equal to the price on the open market. I assume that the inaccuracy is due to loss of precision when retrieving values such as the risk free rate or the asset price.

What I want to know is whether or not this method of pricing options is viable, or was the semi-successful calculation due to chance? Basically I am seeking peer review since I don't know anyone working in finance who can verify whether I messed up or not.

My proposed method:

  1. a function that generates a random number using the Gaussian distribution and if the number is greater than the strike price it adds 0.0001 to an increment variable, otherwise it does not add anything. Repeat 10k times and this approximates the probability of hitting the strike where each random number is one basis point significance.
  2. Multiply this probability by the payout in order to find the price where the expected return of the option is zero.
  3. Add the interest accrualed by the risk free rate over the period of time that the option is open interest because for some reason this is included in things like Sharpe Ratio and the Black Scholes Model.
  4. That value is the option price calculated by this method that seems to fit close with the price of options trading on exchange.
$\endgroup$
16
  • $\begingroup$ Hi and welcome. Very nice effort (1) Solving the Black-Scholes equation can be done without any stochastic calculus, just plain probabilities and integration, see here: quant.stackexchange.com/questions/22830/…. (2) I don't really understand your method, could you describe it step by step? Seems to me like a classic Monte Carlo (3) Inaccuracies could come from: there is no proper risk-free rate, so banks price according to their own funding costs; there are 252 trading days in a year not 365; did you account for dividends etc. $\endgroup$
    – Quantuple
    May 25, 2016 at 8:30
  • 1
    $\begingroup$ Ahhhh, I should have stated I am pricing FX options. So I'll list the steps really quick: 1.) a function that generates a random number using the Gaussian distribution and if the number is greater than the strike price it adds 0.0001 to an increment variable, otherwise it does not add anything. Repeat 10k times and this approximates the probability of hitting the strike where each random number is one basis point significance. $\endgroup$
    – FX_NINJA
    May 25, 2016 at 21:26
  • 2
    $\begingroup$ Looking at the method you suggest, I think it is pure chance that your price resembles that observed in the market. Could you describe step 1 in more details, are you just sampling from a Gaussian and measuring the probability of a Gaussian variable being greater than the strike price, or are you using a Gaussian draws to sample from a more elaborate distribution (lognormal). Plus, how do you compute the payout in step 2? $\endgroup$
    – Quantuple
    May 26, 2016 at 8:45
  • 1
    $\begingroup$ @FreepromTech this looks weird to me on different levels. Your goal should be to compute the expectation of the option payout, i.e. $E[\phi_T]$ where $\phi_T$ is a random variable representing the payout of a call $\phi_T=\max(S_T-K,0)$. In that case, it is enough to simulate independent draws of the random variable $S_T$, then for each draw calculate $\max(S_T-K,0)$ and take the average for all samples to obtain the expectation. Now, (1) if you assume BS model, $S_T$ is not a Gaussian (certainly not a $N(0,1)$ but I don't know it is not clear what parameters you chose for your Gaussian) ..... $\endgroup$
    – Quantuple
    May 26, 2016 at 16:36
  • 1
    $\begingroup$ ...... but rather lognormal. (2) You cannot isolate the computation of the probability that $S_T > K$ from the rest, because you do not have a constant payout, but ones which precisely depends on the value of $S_T$ when $S_T$ is greater than $K$. In other words you seem to compute $E[\max(S_T-K,0)] = (S_T-K) Prob[S_T > K]$ and compute the probability using MC, but I don't understand how you compute the associated Payout (+ this payout seems wrong from your comment?) $\endgroup$
    – Quantuple
    May 26, 2016 at 16:40

1 Answer 1

5
$\begingroup$

You are trying to price an option through Monte Carlo simulations. Here is how it should work, assuming the Black-Scholes diffusion framework.

Under the Black-Scholes model's assumptions, the value of a risky asset $S$ at the time $t=T$ is a random variable which reads $$ S_T = S_0 e^{\left(\mu-\frac{\sigma^2}{2}\right)T + \sigma \sqrt{T} Z}\tag{1}$$ with

  • $S_0$, initial value of the asset at $t=0$
  • $\mu$, risk-neutral drift of the asset $\color{red}{(*)}$
  • $\sigma$, volatility of the asset
  • $Z$, a standard Gaussian random variable, $Z \sim N(0,1)$

Because the logarithm of $S_T$ is normally distributed \begin{align} \ln(S_T) &= \ln(S_0) + \left(\mu-\frac{\sigma^2}{2}\right)T + \sigma\sqrt{T}Z \\ &\sim N\left(\ln(S_0) + \left(\mu-\frac{\sigma^2}{2}\right)T, \sigma^2 T\right) \end{align} $S_T$ follows what we call a log-normal distribution. $\color{red}{(**)}$

Now, assuming one can write an option price as the discounted expectation of its future payout $\phi(S_T) = \max(S_T-K,0)$ (there is a lot of theory hidden behind that assertion) where we have used $K$ to denote the strike, or exercise price of the option, i.e.

$$ V_0 = e^{-rT} \mathbb{E} \left[ \phi(S_T) \right] = \mathbb{E} \left[ \max(S_T-K,0) \right] $$

then one can use a Monte Carlo method to compute the expectation in the RHS. For that, one simply needs to

  1. Simulate independent draws of the random variable $S_T$ (representing different scenarii of terminal asset values). This should be easy, since we just saw that one only needs to simulate independent draws of a standard Gaussian $Z$ and use the formula $(1)$ given above.
  2. Compute the associated payout $\phi(S_T) = \max(S_T-K,0)$ for each draw
  3. Average all sampled payout values to obtain their expectation.
  4. Finally apply the discount factor $e^{-rT}$ to obtain the desired option price

Mathematically, the Monte Carlo estimator $\hat{V}_0$ of the true option price $V_0$ is therefore given by \begin{align} \textbf{[STEP 1] }&\ \ \ S_T^{(m)} = S_0 \exp\left( (r-\frac{1}{2}\sigma^2)T + \sigma \sqrt{T} Z^{(m)} \right),\ \ \forall m=1,...,M \\ \textbf{[STEPS 2-3-4] }&\ \ \ \hat{V}_0 = e^{-rT} \left( \frac{1}{M} \sum_{m=1}^M \phi\left(S_T^{(m)}\right) \right) \end{align}

with $(Z^{(m)})_{m=1,...,M}$ representing $M$ i.i.d. samples out of a standard normal distribution and $M$ the total number of simulations.

$\hat{V}_0$ is an unbiased estimator of the true premium $V_0$ whose variance decreases proportionally to $M^{-1/2}$ (which is a direct consequence of the Central Limit Theorem, again there's some theory behind that result).


$\color{red}{(*)}$ $\mu = r_{FOR}-r_{DOM}$ for a $DOM/FOR$ foreign exchange rate and the risk-"free rate" should be replaced by $r = r_{FOR}$

$\color{red}{(**)}$ You could use a Gaussian model as you suggest (Bachelier model) where $S_T = \mu + \sigma_N \sqrt{T} Z \sim N(\mu, \sigma_N^2T)$, this does not change the rest of the discussion. Note that $\sigma_N$ is known as the Normal (or Bachelier) volatility, while the $\sigma = \sigma_{LN}$ we used above is nown as the LogNormal (or Black-Scholes) volatility.

$\endgroup$
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.