Estoy tratando de precio de una Opción Barrera bajo un modelo con los saltos. Estoy usando un puente browniano, pero lucha con los saltos alrededor de estos puentes y no sé cómo manejar esto.
Mi principal problema es que supongo que tendría que definir $S(t)_{before}$ e $S(t)_{after}$ además a mi los puntos de cuadrícula. Sin embargo, ¿cómo que la influencia de mi "barrera no ha sido probabilidad de golpe" dado que es básicamente el no $dt$ entre "antes" y "después" de salto y el cambio no es impulsado por el movimiento browniano, pero el salto.
Puede alguien me apunte en la dirección correcta? :)
Saludos cordiales, Alex
Mi Ingenuo Código:
if S0 <= B
P0 = 0;
time = toc;
epsilon = 0;
elseif S0 > B
dt = T/NumberOfSteps;
KBar = exp(Mu+0.5*Delta^2)-1;
S = zeros(NumberOfSimulations, NumberOfSteps);
S(:,1) = S0;
prob = ones(NumberOfSimulations,1);
Z = randn(NumberOfSimulations,NumberOfSteps);
if Lambda ~= 0
Nt = poissrnd(Lambda*dt,[NumberOfSimulations,NumberOfSteps]);
end
for i = 1:NumberOfSimulations
for t=1:NumberOfSteps
LnJ = 0;
if Lambda ~= 0
if Nt(i,t) > 0
LnJ = sum(normrnd(Mu,Delta,[Nt(i,t),1]));
end
end
S(i,t+1) = S(i,t).exp((r - q - LambdaKBar-0.5*Sigma^2)dt + Sigmasqrt(dt).Z(i,t));
prob(i) = prob(i).(1 - exp(-2*max(S(i,t+1)-B,0).*max(S(i,t)-B,0)./(Sigma^2*dt*S(i,t).^2)));
%Jump
if S(i,t+1)*exp(LnJ) <= B
prob(i) = prob(i)*0;
elseif S(i,t+1)*exp(LnJ) > B
prob(i) = prob(i)*1;
end
S(i,t+1) = S(i,t+1)*exp(LnJ);
end
end
ST = S(:,end);
if strcmp(OptionType,'Call')
Payoff = prob.exp(-rT).*max(ST - K,0);
elseif strcmp(OptionType,'Put')
Payoff = prob.exp(-rT).*max(K - ST,0);
end