# Need explanation on weird Gamma Behaviour Black Formula

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

If the function "european_option" implements the Black Scholes formula (as opposed to Black76), then you are not really comparing like for like. The moneyness term in the expression

$$d_1=\frac{ln\frac{F}{K}+0.5\sigma^2 T}{\sigma\sqrt{T}}$$

is entirely different. As I see it, you are using a very high rate of 10%. So for the 100-year option, $$ln(\frac{F}{K})=ln(\frac{Se^{100*10\%}}{K})=ln(\frac{S}{K})+100*10\%=ln(\frac{S}{K})+10$$. For your choice of a spot-at-the-money option, the first term drops away, so $$ln(\frac{F}{K})=10$$. For the ten-year option, $$ln(\frac{F}{K})=1$$. So the moneyness of the options you are looking at is vastly different.

When I set F=K=100 (so an ATMF option), all else the same as you have and use Black76, I see $$\Gamma=9.5*10^{-4}$$ for the ten-year option, and $$\Gamma=6.13*10^{-9}$$ for the hundred-year option, in line with expectation (shorter-dated option has larger gamma). So I think it is really down to the fact that you compare options with different moneyness.

EDIT: For your reference, I use the following formula to get above numbers:

$$\Gamma=e^{-rT}\frac{\phi(d_1)}{F\sigma\sqrt{T}}$$

• ahhhh I see so your saying basically that this is caused by a different spot price that I am inputing to the function... correct ? – meteoeliot Mar 27 at 15:24
• I am saying that in order for the options to all be ATMF, you would need to put different spot prices into a BS model, but you run with S=K=100 for both the 10yr and the 100yr option – ZRH Mar 27 at 15:25
• yes I understand: you want that after I discount the forward I have the same spot price to input in the EuropeanOption formula – meteoeliot Mar 27 at 15:29
• european_option("call", 100, 100, 0.10, 100, 0.4) - is that Black76 or Black Scholes ? – ZRH Mar 27 at 15:31
• I discount the forward then I use BS so it is Black – meteoeliot Mar 27 at 15:32