[R-SIG-Finance] Monte Carlo Option Pricing formula

Enrico Schumann enricoschumann at yahoo.de
Thu Feb 2 10:45:18 CET 2012

```Hi, Darko,

Am 02.02.2012 07:44, schrieb Roupell, Darko:
> Hi All,
>
> I am trying to cross check option implied employee option price that was derived using Monte Carlo simulation. Below is code and parameter used and after accounting for dividend yield ( 1.46%) the derived option price is 206.8843 using the code snippet provided. Approx 1 cent below 207.95 that is listed in company prospect using their Monte Carlo simulation and below parameters.
>
> As we all know number of iteration can also slightly impact the average price, but am I rightly concerned that my methodology may not be correct?

Hm, I have not really looked at your programme so I cannot comment
whether it is correct. But we are talking about a difference of about
half a percentage point here. Which is not much. I just ran you script
20 times.

> summary(results)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
205.6   206.0   206.3   206.3   206.8   206.9

Admittedly, all results are all below the company's price, but
nevertheless: they vary.

There are details that they might have done differently. For instance,
you do not compound (if I see correctly). What if you replaced

riskFreeRate*timeToExpiry

with

(1+riskFreeRate)*timeToExpiry-1

But even if that gives you the price: from a practical point of view,
the difference is small, really.

(Much better would be to check what would happen if the div did not turn
out as expected, if the vol were different, etc)

Regards,
Enrico

>
> Any feedback will be appreciated.
>
>
> exercisePrice   = 0;
> timeToExpiry    = 3;        #% in years
> underlyingPrice = 490;      #% underlying in cents
> expectedVol     = 0.5;      #% expected volatility
> expectedDiv     = 0.0146;        #% expected dividend in cents
> riskFreeRate    = 0.0425;   #% interest rate
> itr = 500000              #% number of iterations
> delS = 0*array(0,itr)
>
> for( i in (1:itr))
> {
>      eps = rnorm(1)         #% random number generator
>      dS = expectedDiv*underlyingPrice+underlyingPrice*(riskFreeRate*timeToExpiry) + (underlyingPrice*expectedVol*eps*sqrt(timeToExpiry))
>      mv = dS - exercisePrice;
>
>      delS[i] = max(mv,0);
> }
>
> mean(delS)
>
> __________________________________________________
> Commonwealth Bank
> Darko Roupell
> Associate Quantitative Analyst
> Institutional Banking&  Markets
> Equities Research
> Darling Park Tower 1
> Level 23, 201 Sussex Street
> Sydney, NSW 2000
> P:  +61 2 9117 1254
> F:  +61 2 9118 1000
> M: +61 400 170 515
> E: Darko.Roupell at cba.com.au

[...]
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.
>

--
Enrico Schumann
Lucerne, Switzerland
http://nmof.net/

```