Monday, March 26, 2012

Diverging on the option prices

I'm quite surprised that two option pricers, ostensibly using identical closed end solving mechanisms, sometimes give different results.

You have at least two different packages offering option pricers based on the Black-Scholes formula in R:

I've generated some extremely wild option parameters for the the pricers:

> xSpot   = 601042.9378
> xStrike = 254417.3841
> xRf     = 0.14395813
> xDiv    = 0.11951086
> xTTM    = 6.22885299
> xSigma  = 1.04225573

(option type = put) 

and got the following results:

> GBSOption(TypeFlag="p",S=xSpot,X=xStrike,Time=xTTM,r=xDiv,b=xRf,sigma=xSigma)@price
[1] 71863.77
> 
> EuropeanOption(type="put",underlying=xSpot,strike=xStrike,dividendYield=xDiv,riskFreeRate=xRf,maturity=xTTM,volatility=xSigma)$value
[1] 71998.46

One may say that the difference of 134.69 is not much for the option valued some 72.000 (134.69 / 71863.77 = 1.8742e-3). It's probably true.

But what's even more amazing is that both these results are different from what you can get from the "pure" Black-Scholes formula:

> BSPut.dividend(S=xSpot,K=xStrike,rf=xRf,q=xDiv,TTM=xTTM,sigma=xSigma)
[1] 71993.11

So, which value is correct?

No comments: