Hi all, Im working on a code that simulates a stock price over two years and then compares it to a strike price (call options). I want to simulate the stock price 3000 for each starting value (30 to 150), then take the average payout (for that particular staring price) and plot that vs the starting price. The idea is that if the final price is higher than the strike price (starting price) you get a payout equal to the difference between the final and strike price, if not you get 0.
I keep getting an error (Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.) gives the error in the line
for S(1, :) = 30 : 150
Here is my code
r = 0.05;T = 2;dt = 1/365;sigma = sqrt(r);rng('shuffle')eta = randn(1, 365*T+1);n_iterations = 3000;S = zeros(365*T, n_iterations); for S(1, :) = 30 : 150 n = 1 : n_iterations; for k = 1 : 365*T S(k+1, n) = S(k, n) + S(k, n).*r.*dt + sqrt(dt).*sigma.*S(k, n).*eta(k, n); end strike = S(1, :); price = S((365*T + 1), :); eurocallreturn(strike, price); avereturn = mean(eurocallreturn); hold on plot(strike, avereturn) xlabel('Price') ylabel('Return')end function R = eurocallreturn(strike, price)if price > strike R = price - strike; else if price <= strike R = 0; endend end
Best Answer