資源描述:
《monte carlo programs》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、CHAPTER83MonteCarloprogramsInthisChapter...?afewillustrativesimulationprograms83.1INTRODUCTIONHereareafewVisualBasiccodestogetyoustartedwiththisimportantnumericalmethod.83.2MONTECARLOPRICINGOFABASKETThefollowingcodevaluesaEuropeanoptiononNDimlognormalassets.Thepayoff
2、inthisexampleissimplythemaximumofalloftheassets.ArraysmustbeinputforAsset,thestartingprices,VolandDivYld.ThecorrelationmatrixCorrelisinputasasquarearray.ThisisdecomposedbythesubroutineNewMat.FunctionMonte_Carlo_Basket(Asset,Correl,Vol,DivYld,IntRate,Expiry,_NoEvals,N
3、Dim)ReDimux(1ToNDim)AsDoubleReDimcx(1ToNDim)AsDoubleReDims(1ToNDim)AsDoubleReDimCholM(1ToNDim,1ToNDim)AsDoublerootexpiry=Sqr(Expiry)a=Exp(-IntRate*Expiry)/NoEvalssuma=0CallNewMat(Correl,CholM,NDim)Fork=1ToNoEvals’produceuncorrelatedNormalvariablesFori=1ToNDimIftest=0
4、Then1312PartSixnumericalmethodsandprogramsDoy=2*Rnd()-1z=2*Rnd()-1dist=y*y+z*zLoopUntildist<1ux(i)=y*Sqr(-2*Log(dist)/dist)test=1Elseux(i)=z*Sqr(-2*Log(dist)/dist)test=0EndIfNexti’turnthemintocorrelatedvariablesFori=1ToNDimcx(i)=0Forj=1Toicx(i)=ux(j)*CholM(i,j)+cx(i)
5、NextjNextiFori=1ToNDims(i)=Asset(i)*Exp((IntRate-DivYld(i)-_0.5*Vol(i)*Vol(i))*Expiry+_Vol(i)*cx(i)*rootexpiry)Nextiterm=Application.Max(s)suma=suma+termNextkMonte_Carlo_Basket=suma*aEndFunctionHereistheCholeskydecompositioncode.SubNewMat(Correl,CholM,NDim)’Choleskyf
6、actorizationDimxAsDoubleFori=1ToNDimForj=1ToNDimCholM(i,j)=0NextjNextiFori=1ToNDimForj=iToNDimx=Correl(i,j)Fork=1To(i-1)x=x-CholM(i,k)*CholM(j,k)NextkIfj=iThenCholM(i,i)=Sqr(x)ElseCholM(j,i)=x/CholM(i,i)MonteCarloprogramsChapter831313EndIfNextjNextiEndSub83.3QUASIMON
7、TECARLOPRICINGOFABASKETSameproblemasabove,butnowusingHaltonnumbers.FunctionQuasi_Monte_Carlo_Basket(Asset,Correl,Vol,DivYld,IntRate,_Expiry,NoEvals,NDim)Dimprime(1To5,1To2)AsIntegerDimen(1To5)AsLongReDimux(1ToNDim)AsDoubleReDimcx(1ToNDim)AsDoubleReDims(1ToNDim)AsDoub
8、leReDimCholM(1ToNDim,1ToNDim)AsDoubleprime(1,1)=2prime(1,2)=13prime(2,1)=3prime(2,2)=17prime(3,1)=5prime(3,2)=19prime(4,1)=7prime(4