% Bastian Gross - Numerik - Sommersemester 2014
% Berechnung des Black-Scholes-Preises einer Call-Option
% ueber numerische Integration (Trapezregel und Simpsonregel)

%Gegebene Modelldaten aus dem Juli 2014 für den DAX
S_0 = 9780;
sigma = 0.2;
r = 0.0015;
K = 10000;
T = 1;
Call_exakt = 688.9088917734;

fid=fopen('Programmieraufgabe8_i.txt','w');

%Bestimme obere Integrationsgrenzen
d1 = (log(S_0/K)+(r+sigma^2/2)*T)/(sigma*sqrt(T));
d2 = (log(S_0/K)+(r-sigma^2/2)*T)/(sigma*sqrt(T));

N_array=[10;100;1000;10000];

%Erste Ausgabe
fprintf(fid,'\n');
fprintf(fid,'Exakter Optionspreis: %3.12f \n\n',Call_exakt);
fprintf(fid,'   N    Preis_trapez       Error_trapez   Preis_simpson      Error_simpson\n');
fprintf(fid,'--------------------------------------------------------------------------\n');

%Schleife zur Berechnung der Call-Preise
for i=1:length(N_array)   
    N = N_array(i);
    Call_trapez = S_0*int_trapez(d1,N)-K*exp(-r*T)*int_trapez(d2,N);
    Call_simpson = S_0*int_simpson(d1,N)-K*exp(-r*T)*int_simpson(d2,N);
    fprintf(fid,'%5.0f   %3.12f   %1.6e   %3.12f   %1.6e \n',N,Call_trapez,abs(Call_trapez-Call_exakt),Call_simpson,abs(Call_simpson-Call_exakt));
end
