Граничное условие для барьерного варианта - MATLAB - PullRequest
0 голосов
/ 06 апреля 2019

(для данного кода) Мне нужно настроить граничное условие для определения цены Барьерного опциона. Барьерные опционы аналогичны европейским опционам, за исключением того, что когда цена акций пересекает барьер, цена опциона становится равной нулю Мы говорим здесь о Up and Out , a.k.a knock-out вариантах.

Выплата по опциону такая же, как для европейца, и эта выплата сохраняется в векторе Vold . Псевдокод:

if S >= B
   Vold = 0;
else
   Vold = max(S-K,0);
end 

K - цена исполнения. Код, который необходимо настроить, приведен ниже. Когда я запускаю оригинальный код , Vold и Vnew сохраняют все значения после для k = 1: m . Корректировка должна быть выполнена таким образом, чтобы, когда цена акций пересекала барьер, значения Vold и Vnew не сохраняли значения или ноль как значение. Мы используем интерполяцию, чтобы найти точное значение параметра барьера вызова.

call_fdm = interp1(S,Vold,S0);

Код аналогичен уравнению теплопроводности (это модифицированная версия того же самого). Я точно знаю, где изменения должны быть сделаны.

for k=1:M
% Boundary condition for European call option

boundary = [l(1)*0;zeros(N-3,1);u(N-1)*(Smax*exp(-q*(k-1)*dtau) -    
K*exp(-r*(k-1)*dtau))];
% Explicit iteration scheme
for j=1:N-1
    if(j==1)
        Vnew(j) = d(j)*Vold(j) + u(j)*Vold(j+1);
    elseif(j<N-1)
        Vnew(j) = l(j)*Vold(j-1) + d(j)*Vold(j) + u(j)*Vold(j+1);
    else
        Vnew(j) = l(j)*Vold(j-1) + d(j)*Vold(j);
    end
end
    % Update the vectors from time k to time k+1
Vold = Vnew + boundary;

end

Выходные данные должны быть такими же, как для параметра «Защитный барьер» при построении графика.

https://imgur.com/a/xOavtbh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...