Насколько я понимаю, есть ошибка с размерами в строке dr = (r-v * v/2) * dT. Но я мало знаю о Матлабе. Помогите исправить это, пожалуйста. Код маленький и простой. Может быть, кто-то найдет время, чтобы посмотретьИсправить код matlab с ошибкой
function [optionPrice] = upAndOutCallOption(S,r,v,x,b,T,dT)
t = 0;
dr=[];
pert=[];
while (t < T) & (S < b)
t = t + dT;
dr = (r - v.*v./2).*dT;
pert = v.*sqrt(dT).*randn();
S = S.*exp(dr + pert);
end
if S<b
% Within barrier, so price as for a European option.
optionPrice = exp(-r.*T).* max(0, S - x);
else
% Hit the barrier, so the option is withdrawn.
optionPrice = 0;
end
end
вызов из другой функции такого рода: for k=1:amountOfOptions [optionPrices(k)] = upAndOutCallOption(stockPrice(k)*o,riskFreeRate(k)*o,... volatility(k)*o, strike(k)*o, barrier(k)*o, timeToExpiry(k)*o, sampleRate(k)*o); result(k) = mean(optionPrices(k)); end
Поэтому никаких трудностей.
добро пожаловать в SO. мы не будем отлаживать код для вас. пожалуйста, укажите ** наименьшие ** возможные примеры, которые воспроизводят вашу ошибку. – Shai
В Matlab легко выводить результат выражения, просто отбрасывая ';' в конце, поэтому добавление 'r',' v', 'dT' в отдельные строки прямо перед тем, как ошибочная строка, о которой вы говорили, может помочь вам , –
@ pawel.boczarski лучше учиться [как отлаживать скрипт Matlab] (http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html). – Shai