# Choice of epsilon for numerical calculation of vega in binomial option pricing model

I have a binomial option-pricing model (I don't think the details of how its implemented are relevant). However, when I go to calculate vega, I am essentially running the model a second time with new volatility input we call $\sigma + \epsilon$, where $\sigma$ is the volatility used to calculate the price. I then have two prices $p1$ and $p2$, the first of which is a function of $\sigma$, and the second a function of $\sigma + \epsilon$. I then calculate vega to be $\frac{(p2 - p1)}{\epsilon}$.

I'm having trouble coming up with a good value of $\epsilon$ to avoid floating-point underflows and overflows in the resulting calculation. Any suggestions on how to choose it?

Some things that I have available to me at the time of the choice of $\epsilon$:

• expiration
• strike
• volatility
• risk-free rate
• underlying price
• current time
• option price (as calculated by my model)
• delta (as calculated by my model)
• gamma (as calculated by my model)
• I am not sure I follow but should epsilon not be the value that you shift your volatility with in order to calculate impact on price? Why not shifting up sigma by 1%? Commented Jan 16, 2013 at 2:43
• While vega is usually quoted as "change per 1% change in vol", vega is the partial derivative with respect to $\sigma$. hence, $\epsilon$ should be chosen as small as possible, avoiding numerical cancellation errors. Commented Jan 16, 2013 at 19:56

Let $\beta$ denote the relative machine precision, usually $\beta = 1E-16$. Assume the you can evaluate the value V up to precision $\alpha$. The best you can get is $\alpha = \beta \cdot V$ if $V$ is not underflow or overflow. Then you can calculate the finite difference up to precision $4 \alpha / \epsilon$ (the 4 might be a rough estimate, but it comes from the fact that there may be an additional cancelation in the finite difference of relative order $\beta$ and we use $\alpha > \beta \cdot V$.
Thus you can calculate the finite difference up to $4 \alpha / \epsilon$. On the other hand, from Taylor expansion, the approximation error of a finite difference is $C \epsilon$, where $C$ is a bound on the second derivative. The best choice of $\epsilon$ is the minimum of $\epsilon \mapsto 4 \alpha / \epsilon + C \epsilon$, which is attained for $-4\alpha/\epsilon^2 + C = 0$, i.e. $\epsilon = 2 \cdot \sqrt{\alpha/C}$. If your tree achieves machine accuracy, i.e., $\alpha = \beta V$, then you should choose $\epsilon = 2 \sqrt{\frac{V}{V''}} \cdot \sqrt{\beta} = 2 \sqrt{\frac{V}{V''}} 1E-8$. In the last equation V denote "the order of magnitude of the value and $V''$ the order of magnitude of the second derivative. Clearly, if the second derivative is small, you can use larger shifts.
• You just need a rough estimate for V''. For example via finite difference too. ($V(x+\epsilon) - 2 V(x) + V(x-\epsilon) / \epsilon^2$. Commented Jan 16, 2013 at 22:01