There seems little point in beating about the bush - it's easy to improve the accuracy of the standard binomial models for valuing equity options and yet very few people know how. So banish your Cox, Ross & Rubinstein (or Jarrow & Rudd) models and replace them with the Leisen & Reimer model - just paste the accompanying VBA functions into a new module sheet. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Why you should use the LR binomial parametersMost academics when teaching options rely on the assertion that, merely by increasing the number of steps used in a binomial model, accuracy improves. What they omit to mention is that, apart from the special case when the strike price is equal to the current share price, both the CRR and JR binomial models do not converge uniformly but instead oscillate.
In contrast, the LR choice of parameters remove the oscillation and even more importantly reduce the size of the absolute error to relatively tiny levels, with even as few as 50 steps. Where does the accuracy of the LR tree come from? The LR tree has separate approximations for each of N(d1) and N(d2) terms, whereas traditional trees jointly approximate N(d1) and N(d2). Why is there no oscillation with the LR tree? The option values from the LR tree do not oscillate because the tree is centred on the exercise price. On the other hand, with traditional trees the addition of a single step can switch one of the end nodes from being out-of-the money to in-the-money and this changes the sign of the error. The VBA Code The Option Explicit line forces you to declare all variables (apart from input parameters) using Dim statements, while the Option Base 1 line ensures that VBA arrays are numbered starting from 1 (to conform with Excel). The Dim statement declares the variables with the default Variant type. The VBA functions, Sqr, Log and Exp, must be used in place of their Excel equivalents. Excel functions are used with the preface Application. (alternatively the newer WorksheetFunction. preface will do). Once written, the function can be called from the Function Wizard (in the User Defined category) just like any ordinary Excel functions. The first function, BinTreeParamVec, returns a vector with the necessary parameters (for multiplicative up and down moves and associated up probability) for each of the three models. The LR parameters require the PPNormInv function that returns the binomial approximation to the normal distribution. The second function, BinEuroOptionValue, uses the exact European call option pricing formula from Cox & Rubinstein, adapted here to allow for a continuous dividend yield. Notice that due to the limitations of the BinomDist function in Excel, my function is limited to having fewer than 1025 steps. Code see: http://www.wilmott.com/detail.cfm?articleID=113 Reference The Leisen & Reimer paper "Binomial Models for Option Valuation - Examining and Improving Convergence" is somewhat technical but those brave souls might wish to track it down in volume 3 (1996) of Applied Mathematical Finance, pages 319-346. |