Code covered by the BSD License  

Highlights from
American Monte Carlo

image thumbnail

American Monte Carlo

by

 

Algorithms for pricing American Style derivatives with Monte Carlo Simulation

TestLongstaffSchwarz_exotic.m
% This is material illustrating the methods from the book
% Financial Modelling  - Theory, Implementation and Practice with Matlab
% source
% Wiley Finance Series
% ISBN 978-0-470-74489-5
%
% Date: 02.05.2012
%
% Authors:  Joerg Kienitz
%           Daniel Wetterau
%
% Please send comments, suggestions, bugs, code etc. to
% kienitzwetterau_FinModelling@gmx.de
%
% (C) Joerg Kienitz, Daniel Wetterau
% 
% Since this piece of code is distributed via the mathworks file-exchange
% it is covered by the BSD license 
%
% This code is being provided solely for information and general 
% illustrative purposes. The authors will not be responsible for the 
% consequences of reliance upon using the code or for numbers produced 
% from using the code. 

% Script for testing american exotic option prices with MC

Nr = 13;       % exercise possibilities 
NSim = 10000;    % number of simulations
S0 = 100;      % spot price
K = 100;       % strike price

ScaleFactor = 156;

T=1;
dt = T/Nr; %Intervalllnge
r = 0.06;      % zero rate
d = 0.0;         % dividend yield
sigma = 0.15;
type = -1;

S0 = S0 * exp(-d*T);

S0 = S0 / ScaleFactor;
K = K / ScaleFactor;

gp = @(x,y,z) getPathsAsian(x, r, sigma, dt, y, z);   % Paths
pay = @(x) putpayoff(x,K);                      % Payoff

[S,M] = gp(S0, NSim, Nr);

h = [S(:,1) pay(M(:,2:end))];
%h = pay(M(:,2:end));

df = exp(-r*dt) * ones(Nr,1);   % discounts for all time points

B = @(x,y) {{ones(length(x),1)  x  x.^2  y  y.^2  x.*y  (x.^2).*y  x.*(y.^2)}}; % choose the basis functions



fprintf('Tree Value:');
% binomial cox ross rubinstein tree for comparison
BinTree_A(S0, K, r, T, sigma, 20, type)*ScaleFactor

fprintf('Asian Option:');
% Longstaff Schwarz - Arithmetic Asian option
[price, se, low, high] ...
    = LongstaffSchwartz_M(S, M, 3, h, df, B, Nr, NSim, 0.99);
price * ScaleFactor

RC = RegCoeff_M(S, M, 3, h, df, B, 8, Nr);

[price, se, low, high] = LongstaffSchwartz_M2(S, M, 3, h, df, RC, B, Nr, NSim, 0.99);
price * ScaleFactor


Bki = @(x) {{ones(length(x),1)  x  x.^2 }}; % choose the basis functions

Barrier = 95;
Barrier = Barrier / ScaleFactor;

fprintf('Tree Value:');
price = BinTree_KI(S0, K, r, T, sigma, 20, Barrier, type);
price * ScaleFactor

fprintf('Barrier Options:');
payki = @(x) knockinpayoff(x,K,Barrier,type);
hki = payki(S(:,2:end));
% Longstaff Schwarz - Barrier option
[price, se, low, high] = LongstaffSchwartz(S, hki, df, Bki, Nr, NSim, 0.99);
price * ScaleFactor

Contact us