Error: Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dawid Brits
le 24 Sep 2019
Réponse apportée : Merve Özkanat
le 27 Sep 2022
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;
end
end
end
0 commentaires
Réponse acceptée
Walter Roberson
le 24 Sep 2019
In MATLAB, the variable immediately after the keyword for must be a simple variable, not indexed in any way -- no () indexing, no {} indexing, no dot indexing. For example it is not permitted to write
for counters.laps = 1 : 20
You will need to rewrite to something like
for Sidx = 30 : 150
S(1, :) = Sidx;
....
end
2 commentaires
Walter Roberson
le 24 Sep 2019
It is a problem with you you initialize and use eta which I answered in your other Question.
Plus de réponses (2)
Manoj Shukla
le 1 Avr 2020
Hello,
Please help me.
Email Id:- rsmanojshukla@gmail.com
0.3764
0.5673
0.1168
0.1535
0.6345
Train Accuracy: 83.050847
Expected accuracy (with lambda = 1): 83.1 (approx)
>>
>>
>> submit()
'parts' requires one of the following:
Automated Driving Toolbox
Navigation Toolbox
Robotics System Toolbox
Sensor Fusion and Tracking Toolbox
Error in submitWithConfiguration (line 4)
parts = parts(conf);
Error in submit (line 40)
submitWithConfiguration(conf);
Thanks & Regards,
Manoj
1 commentaire
Walter Roberson
le 1 Avr 2020
submitWithConfiguration contains code in which the name parts is used both for a function and as a variable name. With recent changes to MATLAB, MATLAB cannot locate the function. The repair for this is to change submitWithConfiguration to use a different variable name instead of parts .
Merve Özkanat
le 27 Sep 2022
Hi, I get the same error. Could you help me?
global a b t E nu
GP1=(-a/sqrt(3),-b/sqrt(3));
GP2=(a/sqrt(3),-b/sqrt(3));
GP3=(a/sqrt(3),b/sqrt(3));
GP4=(-a/sqrt(3),b/sqrt(3));
0 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!