I'm using the following R code to calculate the vega on a vanilla option with the inputs S = 100, X = 100, t = 1, r = 0.005 and vol = 0.5

The vega calculated is around 39.85; I was expecting it to be around 0.3985.

The vega shape vs. spot, when plotted, is correct but the value is always a factor of 100 out. Should I be dividing by spot, strike or always dividing by 100 simply to get to a decimal of %?

If someone could offer a quick explanation it would help me a lot!

vega <- function(S, X, t, r, vol){
d1 <- (log(S/X)+(r+ 0.5 * vol^2) * t) / ( vol * sqrt(t))
Np <- ( exp(-d1^2/2)/ sqrt(2 * pi) )
S * sqrt(t) * Np

When you calculate the partial derivative of the option price $V$ w.r.t. $\sigma$, then you get a first order approximation of the change in $V$ for a unit change in $\sigma$. A unit change is e.g. $\sigma$ increasing from 0.2 (20%) to 1.2 (120%). If you want the vega for a one percentage point change in volatility, then divide by 100.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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