1 / 35

HW 13

HW 13. 100071021. Prime Number Generator. if isPrime == 1 most = most + 1; Primes(most) = test; end if most >= num break; end test = test + 1; end end. function Primes = getPrime ( num ) Primes = zeros (num,1); Primes(1) = 2; test = 3;

janna
Télécharger la présentation

HW 13

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. HW 13 100071021

  2. Prime Number Generator if isPrime == 1 most = most + 1; Primes(most) = test; end if most >= num break; end test = test + 1; end end function Primes = getPrime( num) Primes = zeros(num,1); Primes(1) = 2; test = 3; most = 1; while 1 test_ub = ceil(sqrt(test)); isPrime = 1; for i = 1 : most if test_ub < Primes(i) break; end if mod(test,Primes(i))==0 isPrime = 0; break; end end

  3. Halton Path function SPaths =HaltonPaths( S,mu,sigma,T,NSteps,NRepl ) NRepl = 2*ceil(NRepl/2); dt = T/NSteps; nudt = (mu-0.5*sigma^2)*dt; sidt = sigma*sqrt(dt); RandMat = zeros(NRepl, NSteps); seeds = getPrime(2*NSteps); for i = 1 : NSteps H1 = Halton(NRepl/2,seeds(i*2-1)); H2 = Halton(NRepl/2,seeds(i*2)); Vlog = sqrt(-2*log(H1)); Norm1 = Vlog .* cos(2*pi*H2); Norm2 = Vlog .* sin(2*pi*H2); RandMat(:,i) = [Norm1 Norm2]; end Increments = nudt + sidt*RandMat; Init = log(S) * ones(NRepl,1); LogPath = cumsum( [Init , Increments], 2 ); SPaths = exp(LogPath); end

  4. Asian Option (Monti Carlo) function [ call, put, cci, pci ] = AsianMC( S,K,r,sigma,T,mode,NSample,NRepl,Rtype ) % mode 0=>use ST 1=>use K % Rtype 0=>rand 1=>Halton % call=>ST(K)-A put=>A-ST(K) Payoffs = zeros(NRepl,2); if Rtype == 0 Paths = AssetPaths(S,r,sigma,T,NSample,NRepl); else Paths = HaltonPaths(S,r,sigma,T,NSample,NRepl); end

  5. for i = 1 : NRepl if mode == 0 Payoffs(i,:) = [ max(0, Paths(i,NSample+1)-mean(Paths(i,2:NSample+1)) ) , max(0, mean(Paths(i,2:NSample+1)-Paths(i,NSample+1)) ) ]; else Payoffs(i,:) = [ max(0, K-mean(Paths(i,2:NSample+1)) ) , max(0, mean(Paths(i,2:NSample+1)-K) ) ]; end end [call aux cci] = normfit( exp(-r*T)*transpose(Payoffs(:,1)) ); [put aux pci] = normfit( exp(-r*T)*transpose(Payoffs(:,2)) ); end

  6. Demo Code S = 50; K = 50; r = 0.1; T = 5/12; sigma = 0.4; NSample= 5; NRepl= 1000; lim = 1000; for i = 1 : lim [STrand(i), a, b, d ] = AsianMC( S,K,r,sigma,T,0,NSample,i,0 ); STrandci(i) = b(2)-b(1); [SThal(i), a, b, d ] = AsianMC( S,K,r,sigma,T,0,NSample,i,1 ); SThalci(i) = b(2)-b(1); [Krand(i), a, b, d ] = AsianMC( S,K,r,sigma,T,1,NSample,i,0 ); Krandci(i) = b(2)-b(1); [Khal(i), a, b, d ] = AsianMC( S,K,r,sigma,T,1,NSample,i,1 ); Khalci(i) = b(2)-b(1); end

  7. STrand(1000) SThal(1000) Krand(1000) Khal(1000) ans = 2.9223 ans = 3.1876 ans = 2.6753 ans = 2.7760

  8. figure; plot(1:lim,STrand,1:lim,Krand); legend('ST - A','K - A'); title('ST vs K (Rand)');

  9. figure; plot(1:lim,SThal,1:lim,Khal); legend('ST - A','K - A'); title('ST vs K (Halton)');

  10. figure; plot(1:lim,STrand,1:lim,SThal); legend('Rand','Halton'); title('Random vs Halton (ST - A)');

  11. figure; plot(1:lim,Krand,1:lim,Khal); legend('Rand','Halton'); title('Random vs Halton (K - A)');

  12. figure; plot(1:lim,STrandci,1:lim,SThalci); legend('Rand','Halton') title('CI of (ST - A)')

  13. figure; plot(1:lim,Krandci,1:lim,Khalci); legend('Rand','Halton') title('CI of (K - A)')

  14. Lookback Option function [ call, put, cci, pci ] = LookBackMC( S,r,sigma,T,mode,NSample,NRepl,Rtype ) % mode 0=>use Smax 1=>use Smin % Rtype 0=>rand 1=>Halton % call=>ST-Sm put=>Sm-ST Payoffs = zeros(NRepl,2); if Rtype == 0 Paths = AssetPaths(S,r,sigma,T,NSample,NRepl); else Paths = HaltonPaths(S,r,sigma,T,NSample,NRepl); end

  15. for i = 1 : NRepl if mode == 0 Payoffs(i,:) = [ max(0, Paths(i,NSample+1)-max(Paths(i,2:NSample+1)) ) , max(0, max(Paths(i,2:NSample+1)-Paths(i,NSample+1)) ) ]; else Payoffs(i,:) = [ max(0, Paths(i,NSample+1)-min(Paths(i,2:NSample+1)) ) , max(0, min(Paths(i,2:NSample+1)-Paths(i,NSample+1)) ) ]; end end [call aux cci] = normfit( exp(-r*T)*transpose(Payoffs(:,1)) ); [put aux pci] = normfit( exp(-r*T)*transpose(Payoffs(:,2)) ); end

  16. Demo Code S = 50; K = 50; r = 0.1; T = 5/12; sigma = 0.4; NSample= 5; NRepl= 1000; lim = 1000; for i = 1 : lim [a, Maxrand(i), d, b ] = LookBackMC( S,r,sigma,T,0,NSample,i,0 ); Maxrandci(i) = b(2)-b(1); [a, Maxhal(i), d, b ] = LookBackMC( S,r,sigma,T,0,NSample,i,1 ); Maxhalci(i) = b(2)-b(1); [Minrand(i), a, b, d ] = LookBackMC( S,r,sigma,T,1,NSample,i,0 ); Minrandci(i) = b(2)-b(1); [Minhal(i), a, b, d ] = LookBackMC( S,r,sigma,T,1,NSample,i,0 ); Minhalci(i) = b(2)-b(1); end

  17. Maxrand(1000) Maxhal(1000) Minrand(1000) Minhal(1000) ans = 5.5906 ans = 5.5884 ans = 7.1912 ans = 7.2195

  18. figure; plot(1:lim,Maxrand,1:lim,Minrand); legend('Smax - ST','ST - Smin'); title('ST vs K (Rand)');

  19. figure; plot(1:lim,Maxhal,1:lim,Minhal); legend('Smax - ST','ST - Smin'); title('ST vs K (Halton)');

  20. figure; plot(1:lim,Maxrand,1:lim,Maxhal); legend('Rand','Halton'); title('Random vs Halton (Smax - ST)');

  21. figure; plot(1:lim,Minrand,1:lim,Minhal); legend('Rand','Halton'); title('Random vs Halton (ST - Smin)');

  22. figure; plot(1:lim,Minrandci,1:lim,Minhalci); legend('Rand','Halton') title('CI of (Smax - ST)')

  23. figure; plot(1:lim,Maxrandci,1:lim,Maxhalci); legend('Rand','Halton') title('CI of (ST - Smin)')

More Related