金融商品設計與評價
This presentation is the property of its rightful owner.
Sponsored Links
1 / 16

金融商品設計與評價 hw10 PowerPoint PPT Presentation


  • 77 Views
  • Uploaded on
  • Presentation posted in: General

金融商品設計與評價 hw10. 計財系大三 林奕全. Outline. 1.CBValue - Putable -Callable - Putable + Callable 2. - Rand+BoxMuller - Halton+BoxMuller:Eur Put. Putable. function [ price,lattice ] = CBValuePut ( s0,r,T,sigma,N,Q,I,P,tau ) deltaT =T/N; u=exp(sigma* sqrt ( deltaT )); d=1/u;

Download Presentation

金融商品設計與評價 hw10

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Hw10

金融商品設計與評價hw10

計財系大三 林奕全


Outline

Outline

  • 1.CBValue

  • -Putable

  • -Callable

  • - Putable+ Callable

  • 2.

  • -Rand+BoxMuller

  • -Halton+BoxMuller:Eur Put


Putable

Putable

  • function [ price,lattice ] = CBValuePut( s0,r,T,sigma,N,Q,I,P,tau )

  • deltaT=T/N;

  • u=exp(sigma*sqrt(deltaT));

  • d=1/u;

  • p=(exp(r*deltaT)-d)/(u-d);

  • lattice=zeros(N+1,N+1);

  • for j=0:N

  • lattice(N+1,j+1)=max(I/Q,s0*(u^j)*(d^(N-j)));

  • end


Hw10

  • for i=N-1:-1:0

  • for j=0:i

  • lattice(i+1,j+1)=max(s0*u^(j)*d^(i-j),exp(-r*deltaT)*(p*lattice(i+2,j+2)+(1-p)*lattice(i+2,j+1)));

  • if i==tau-1

  • lattice(i+1,j+1)=max(lattice(i+1,j+1),P/Q);

  • end

  • end

  • end

  • price=lattice(1,1)*Q;


Hw10

  • >> CBValue(35, 0.02, 5, 0.3, 100, 2500, 100000)

  • ans =

  • 1.1234e+05

  • >> CBValuePut(35, 0.02, 5, 0.3, 100, 2500, 100000,102000,50)

  • ans =

  • 1.1399e+05


Callable

Callable

  • function [ price,lattice ] = CBValueCall( s0,r,T,sigma,N,Q,I,C )

  • deltaT=T/N;

  • u=exp(sigma*sqrt(deltaT));

  • d=1/u;

  • p=(exp(r*deltaT)-d)/(u-d);

  • lattice=zeros(N+1,N+1);


Hw10

  • for j=0:N

  • lattice(N+1,j+1)=max(I/Q,s0*(u^j)*(d^(N-j)));

  • end

  • for i=N-1:-1:0

  • for j=0:i

  • lattice(i+1,j+1)=max(s0*u^(j)*d^(i-j),min(exp(-r*deltaT)*(p*lattice(i+2,j+2)+(1-p)*lattice(i+2,j+1)),C/Q));

  • end

  • end

  • price=lattice(1,1)*Q;


Hw10

  • >> CBValue(35, 0.02, 5, 0.3, 100, 2500, 100000)

  • ans =

  • 1.1234e+05

  • >> CBValueCall(35, 0.02, 5, 0.3, 100, 2500, 100000,102000)

  • ans =

  • 9.8619e+04


Putable callable

Putable+ Callable

  • function [ price,lattice ] = CBValueCallPut( s0,r,T,sigma,N,Q,I,C,P,tau )

  • deltaT=T/N;

  • u=exp(sigma*sqrt(deltaT));

  • d=1/u;

  • p=(exp(r*deltaT)-d)/(u-d);

  • lattice=zeros(N+1,N+1);

  • for j=0:N

  • lattice(N+1,j+1)=max(I/Q,s0*(u^j)*(d^(N-j)));

  • end


Hw10

  • for i=N-1:-1:0

  • for j=0:i

  • lattice(i+1,j+1)=max(s0*u^(j)*d^(i-j),min(exp(-r*deltaT)*(p*lattice(i+2,j+2)+(1-p)*lattice(i+2,j+1)),C/Q));

  • if i==tau-1

  • lattice(i+1,j+1)=max(lattice(i+1,j+1),P/Q);

  • end

  • end

  • end

  • price=lattice(1,1)*Q;


Hw10

  • >> CBValue(35, 0.02, 5, 0.3, 100, 2500, 100000)

  • ans = 1.1234e+05=112,340

  • >> CBValuePut(35, 0.02, 5, 0.3, 100, 2500, 100000,102000,50)

  • ans = 1.1399e+05=113,990

  • >> CBValueCall(35, 0.02, 5, 0.3, 100, 2500, 100000,102000)

  • ans = 9.8619e+04=98,619

  • >> CBValueCallPut(35, 0.02, 5, 0.3, 100, 2500, 100000,102000,102000,50)

  • ans = 1.0002e+05=100,020


Halton boxmuller eur put

Halton+BoxMuller:Eur Put

  • function Seq = GetHalton( HowMany,Base)

  • Seq=zeros(HowMany,1);

  • NumBits=1+ceil(log(HowMany)/log(Base));

  • VetBase=Base.^(-(1:NumBits));

  • WorkVet=zeros(1,NumBits);

  • for i=1:HowMany

  • j=1;

  • ok=0;


Hw10

  • while ok==0

  • WorkVet(j)=WorkVet(j)+1;

  • if WorkVet(j)<Base

  • ok=1;

  • else

  • WorkVet(j)=0;

  • j=j+1;

  • end

  • end

  • Seq(i)=dot( WorkVet,VetBase);

  • end


Hw10

  • function Price = BlshaltonEurPut(s0,X,r,T,sigma,Npoints,Base1,Base2)

  • nuT=(r-0.5*sigma^2)*T;

  • siT=sigma*sqrt(T);

  • H1=GetHalton(ceil(Npoints/2),Base1);

  • H2=GetHalton(ceil(Npoints/2),Base2);

  • Vlog=sqrt(-2*log(H1));

  • Norm1=Vlog.*cos(2*pi*H2);

  • Norm2=Vlog.*sin(2*pi*H2);

  • Norm=[Norm1;Norm2];

  • DiscPayoff=exp(-r*T)*max(0,X-s0*exp(nuT+siT*Norm));

  • Price=mean(DiscPayoff);


Hw10

  • s0=50;

  • X=52;

  • r=0.1;

  • sigma=0.4;

  • Nrepl=5000;

  • T=5/12;

  • Base11=2;

  • Base12=7;

  • [Call,Put]=blsprice(s0,X,r,T,sigma);

  • Halton27=BlshaltonEurPut(s0,X,r,T,sigma,Nrepl,Base11,Base12);

  • Put

  • Halton27


  • Login