Serving the Quantitative Finance Community

 
User avatar
mathfinlove
Topic Author
Posts: 0
Joined: January 19th, 2004, 5:25 am

Leisen Reimer Tree Contruction

May 12th, 2005, 10:36 am

I am currenly trying to implement Leisen Reimer tree. I have checked the original paper. But I did not understand first of all the binomial fornula in CRR mentioned there.. Can any body comment on this? Secondly, in the implementation of Leisen Reimer given an n (number of time steps), do I have a same probaility of up and down movement over all the tree (in fact lattice) and at the same time have the same up and down size for the asset price. That is only values are changing in CRR?
 
User avatar
olaolson
Posts: 0
Joined: July 14th, 2002, 3:00 am

Leisen Reimer Tree Contruction

May 12th, 2005, 10:57 am

For implentation of LR I'd recommend Staunton (he is called Spursfan here) and Jacksson's book on Excel VBA.Do a search on LR and you'll find him.Ola
 
User avatar
mathfinlove
Topic Author
Posts: 0
Joined: January 19th, 2004, 5:25 am

Leisen Reimer Tree Contruction

May 12th, 2005, 11:10 am

Thanks for your reply ola.. I have read all the comments related with LR in willmot's forum. I have seen Spursfan's comments also. I do not have time to buy these books. So, if you have a VB codes or give me a resource (available in internet) I will appreciate it..
 
User avatar
spursfan
Posts: 2
Joined: October 7th, 2001, 3:43 pm

Leisen Reimer Tree Contruction

May 12th, 2005, 12:04 pm

since i'm feeling in a generous mood, here's one of my VBA functions - you'll need to replace VACBD with something like WorksheetFunction.BINOMDIST from Excel (though it blows up after 1030 points)Function VAEuroOptionQBinLR#(icp%, S#, K#, r#, q#, tyr#, sigma#, nstepOdd%)' Returns Quick Bin LR Euro Option Value' Uses VACBD fn Dim sigt#, d2#, c1#, pu#, pd#, M1#, u#, d#, bind2#, bind1#, ve# Dim ia% sigt = sigma * Sqrt(tyr) d2 = (Log(S / K) + (r - q - 0.5 * sigma * sigma) * tyr) / sigt c1 = d2 / (nstepOdd + 1 / 3 + 0.1 / (nstepOdd + 1)) pu = 0.5 * (1 + Sign(d2) * Sqrt(1 - Exp(-c1 * c1 * (nstepOdd + 1 / 6)))) c1 = c1 * (1 + sigt / d2) pd = 0.5 * (1 + Sign(d2 + sigt) * Sqrt(1 - Exp(-c1 * c1 * (nstepOdd + 1 / 6)))) M1 = Exp((r - q) * tyr / nstepOdd) u = M1 * pd / pu d = M1 * (1 - pd) / (1 - pu) ia = Max(0, 1 + Int((Log(K) - Log(S) - nstepOdd * Log(d)) / (Log(u) - Log(d)))) bind2 = 1 - VACBD(ia - 1, nstepOdd, pu) bind1 = 1 - VACBD(ia - 1, nstepOdd, pu * u / Exp((r - q) * tyr / nstepOdd)) If ia <= nstepOdd Then ve = S * Exp(-q * tyr) * bind1 - K * Exp(-r * tyr) * bind2 Else ve = 0 End If If icp = -1 Then ve = ve - S * Exp(-q * tyr) + K * Exp(-r * tyr) VAEuroOptionQBinLR = veEnd Function
 
User avatar
mathfinlove
Topic Author
Posts: 0
Joined: January 19th, 2004, 5:25 am

Leisen Reimer Tree Contruction

May 12th, 2005, 12:15 pm

Thanks a lot spursfan..You are great! As soon as possible I will buy your book.
 
User avatar
mathfinlove
Topic Author
Posts: 0
Joined: January 19th, 2004, 5:25 am

Leisen Reimer Tree Contruction

May 13th, 2005, 5:13 am

I want to thanks once more spursfan. After examinig your code, I could truly see where I was making my mistake. I have directly imlemented the formulas in Wallner and Wystup.. Unfortunately there is a misprint in their formulas.. In the formulas of d2 (actually d- and d+) it has been written (rd -rf +- 1/2*volatality) but as we all know it should be (rd -rf +- 1/2*volatality * volatality).
 
User avatar
mathfinlove
Topic Author
Posts: 0
Joined: January 19th, 2004, 5:25 am

Leisen Reimer Tree Contruction

May 13th, 2005, 1:20 pm

I am currently implementing greeks. I have found one more error in Wallner and Wystup. For greeks they say that if u=1/d you can use tree approximations.. The last one theata should be (V2,1 - V0,0)/2dt.. Since theta gives -dP/dt , by going forward in time I am suppliying -1/dtI only need to multiply with value change of option..The formula is correct indeed if we take delta_t = -T/N.. One more comment, you should divide theta with 250 to get the sensitivity for daily..