Re: Trinomialtree
- To: mathgroup at smc.vnet.net
- Subject: [mg30969] Re: Trinomialtree
- From: Albert Retey <albert.retey at visualanalysis.com>
- Date: Fri, 28 Sep 2001 03:55:24 -0400 (EDT)
- Organization: Visual Analysis AG
- References: <9ougit$159$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Yannis.Paraskevopoulos at ubsw.com wrote: > > Hi all, > > I have been having problem executing the following code. Could you > please tell me what am I doing wrong? > > Best regards and thanks in advance > > ============Mathematica Code=============================================== > > TrinomialTree[AmEurFlag_Symbol,CallPutFlag_Symbol,S_,X_,T_,r_,b_,v_,n_]: = > Module[{OptionValue,dt,pu,pd,pm,u,d,Df,z}, > dt=T/n; > u=Exp[v*Sqrt[2*dt]]; > d=Exp[-v*Sqrt[2*dt]]; > pu=((Exp[b*dt/2]-Exp[-v*Sqrt[dt/2]])/(Exp[v*Sqrt[dt/2]]- > Exp[-v*Sqrt[dt/2]]))^2; > pd=((Exp[v*dt/2]-Exp[b*Sqrt[dt/2]])/(Exp[v*Sqrt[dt/2]]- > Exp[-v*Sqrt[dt/2]]))^2; > pm=1-pu-pd; > Which[CallPutFlag=c,z==1,CallPutFlag=p,z==-1]; > OptionValue= > Table[Max[0,z*(S*u^Max[i-n,0]*d^Max[n*2-n-i,0]-X)],{i,0,2*n}]; > Which[AmEurFlag=e,OptionValue=Table[(pu*OtoptionValue[[i+2]] > +pm*OptionValue[[i+1]]+pd*OptionValue[[i]])*Df,{j,n-1, > 0,-1},{i,0,j*2}],AmEurFlag=a, > OptionValue= > Table[Max[(z*(S*u^Max[i-j,0]*d^Max[j*2-j-i,0]-X)),(pu* > OptionValue[[i+1]]+pd*OptionValue[[i]])*Df],{j,n-1, > 0,-1},{i,0,j*2}]]; > OptionValue > ] Hi, I did'nt try your code, but there is an obvious mistake in it, you want to use == (Equal) or even better === (SameQ) instead of = (Set) wherever you are comparing things and set where you want to set a symbol to a certain value (In your code it's just the other way 'round). Oh, and don't blame Mathematica if this code turns out to be rather slow, there is plenty room to improve it... Hope this helps Albert -- Visual Analysis AG Internet: www.visualanalysis.com Neumarkter Str. 87 Telefon: 089 / 431 981 36 D-81673 Muenchen Telefax: 089 / 431 981 1