Yes that's right, the argument for V is the iteration count. So V 2496 translates to about 1.4 years. The step size dt *is* very small to satisfy convergence criteria (actually it maybe should be even smaller). I could have a larger dt if I were to implement the finite difference scheme implicitly rather than explicitly. But that's quite a bit more work which I'd like to avoid if possible! So if there's some way to get around this limitation in J, I'd be very pleased to hear it... Alistair
----- Original Message ---- From: Devon McCormick <[EMAIL PROTECTED]> To: Programming forum <[email protected]> Sent: Tuesday, 11 September, 2007 12:36:49 PM Subject: Re: [Jprogramming] stack overflow I see that it looks like an iteration count. It fails for me thusly: 6!:2 'rr=. V 2496' 0.50126902 6!:2 'rr=. V 2497' |stack error: Gamma | rr=. V 2497 On 9/11/07, Devon McCormick <[EMAIL PROTECTED]> wrote: > > What does an argument to "V" look like? > > On 9/11/07, Alistair Tucker <[EMAIL PROTECTED] > wrote: > > > > Hi > > I'm a little disconcerted to find that I'm getting stack overflows for > > more than two thousand iterations of my recursive function. > > This is a problem. As it stands, my program (below) is unable to price > > a convertible bond with more than about a year to maturity. > > Is there some way round this? Perhaps I should be implementing the > > iteration in some other way? > > Alistair > > > > NAS=: 100 > > dS=: 2 > > S=: dS*i.NAS > > k=: 135 > > r=: 0.05 > > b=: 113.22 > > dL=: %365 > > sigma=: 0.4 > > dt=: 0.9%*:sigma*NAS > > > > Sgtk=: S#~S>k > > Sltk=: S#~S<:k > > > > Delta=: (2*dS)%~2&}.-_2&}. > > Gamma=: (*:dS)%~2&}.+_2&}.-2*}.@:}: > > dV_dL=: dL%~}."_1-}:"_1 > > > > negTheta_ltk=: ([:-r*{.@:[),(((r*}.Sltk)*Delta)+( 0.5**:sigma* > > }.Sltk)*Gamma)@:([,{.@:{.@:])-r*}.@:[ > > > > step_gtk=: ((}:@:]+dt*(((r*}:Sgtk)*Delta)+(0.5**:sigma* > > }:Sgtk)*Gamma)@:({:@:[,])-r*}:@:])(}:"_1@:]))+(dt*dV_dL@:}:@:]) > > > > V_ltk=: Sltk>.[+dt*negTheta_ltk > > V_gtk=: (Sgtk>.b,.~],({.-~2*{:)@:(_2&{.))@:step_gtk > > > > Vrec=: (>@:{.(V_ltk;V_gtk)>@:{:)@:V@:<: > > V=: Vrec`((b$~+/S<:k);(b$~16,~+/S>k)"0)@.(0=]) > > > > > > > > > > > > > > ___________________________________________________________ > > Want ideas for reducing your carbon footprint? Visit Yahoo! For Good > > http://uk.promotions.yahoo.com/forgood/environment.html > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > -- > Devon McCormick, CFA > ^me^ at acm. > org is my > preferred e-mail -- Devon McCormick, CFA ^me^ at acm. org is my preferred e-mail ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ___________________________________________________________ Yahoo! Answers - Got a question? Someone out there knows the answer. Try it now. http://uk.answers.yahoo.com/ ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
