I am using the RQuantlib package to price options on futures. With a slight modification one can go from the Black Model (76) to The BS Model.
It can easily be shown that if we write S0 = (e-rt) * F0 and then we input this into the BS model we will get the same value as if we used the Black Model with F0.
What is bothering me is the gamma. You see Gamma when we are not at the money is really small. It is also really small if we are far away from maturity and for a combination of both.
Yet, when I use the function below I get an increase in gamma for a call option.
Could you please explain why to me using the same examples:
require(RQuantLib)
european_option <- function(type, underlying, strike, riskFreeRate, maturity, vol){
underlying <- underlying * exp(-riskFreeRate * maturity)
EuropeanOption(type = type, underlying = underlying, strike = strike, maturity = maturity, volatility = vol, dividendYield = 0, riskFreeRate = riskFreeRate)
}
european_option("call", 100, 100, 0.10, 100, 0.4)
This gives a really high gamma even though we are not close to the strike at all and we have 100 years to maturity:
0.004539993
Concise summary of valuation for EuropeanOption
value delta gamma vega theta rho divRho
0.0043 0.9772 2.9731 0.0025 0.0000 0.0103 -0.4437
On the other hand this gives a smaller gamma even if we are closer to maturity and more close to the srike:
european_option("call", 100, 100, 0.10, 10, 0.4)
[1] 36.78794
Concise summary of valuation for EuropeanOption
value delta gamma vega theta rho divRho
17.3974 0.7365 0.0070 37.9976 -1.7295 96.9527 -270.9268