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:


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:

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 

1 Answer 1


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:


  • $\begingroup$ ahhhh I see so your saying basically that this is caused by a different spot price that I am inputing to the function... correct ? $\endgroup$
    – meteoeliot
    Mar 27, 2019 at 15:24
  • $\begingroup$ 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 $\endgroup$
    – ZRH
    Mar 27, 2019 at 15:25
  • $\begingroup$ yes I understand: you want that after I discount the forward I have the same spot price to input in the EuropeanOption formula $\endgroup$
    – meteoeliot
    Mar 27, 2019 at 15:29
  • $\begingroup$ european_option("call", 100, 100, 0.10, 100, 0.4) - is that Black76 or Black Scholes ? $\endgroup$
    – ZRH
    Mar 27, 2019 at 15:31
  • $\begingroup$ I discount the forward then I use BS so it is Black $\endgroup$
    – meteoeliot
    Mar 27, 2019 at 15:32

Your Answer

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

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