modena italy
Posts: 2 since Jul 2014
Thanks Given: 1
Thanks Received: 0
|
i generated with chatgpt a code of arima model, can someone help me to correct the code?
thank you in advance
{*******************************************************************
ARIMA Function for MultiCharts
*******************************************************************}
inputs:
TimeSeries(close),
p(2),
dd(1),
q(2);
vars:
ii(0),
j(0),
k(0),
n(0),
m(0),
s(0),
phi(0),
theta(0),
diff(0),
resid(0),
std_dev(0),
sum_phi(0),
sum_theta(0),
sum_diff(0),
sum_resid(0),
sum_std_dev(0),
forecast(0),
error(0),
sum_forecast(0);
{Calculate phi and theta}
for ii = 1 to p begin
phi[ii] = 0;
end;
for ii = 1 to q begin
theta[ii] = 0;
end;
for ii = 1 to p begin
sum_phi = 0;
for j = ii to n begin
sum_phi = sum_phi + TimeSeries[j-dd] * TimeSeries[j-ii-dd];
end;
phi[ii] = sum_phi;
end;
for ii = 1 to q begin
sum_theta = 0;
for j = ii to n begin
sum_theta = sum_theta + resid[j-1] * TimeSeries[j-ii-dd];
end;
theta[ii] = sum_theta;
end;
{Calculate differences}
for ii = 1 to dd begin
diff[ii] = 0;
end;
for ii = dd+1 to n begin
diff[ii] = TimeSeries[ii] - TimeSeries[ii-dd];
end;
{Calculate residuals}
for ii = 1 to n begin
resid[ii] = 0;
end;
for ii = p+1 to n begin
sum_diff = 0;
sum_phi = 0;
sum_theta = 0;
for j = 1 to p begin
sum_phi = sum_phi + phi[j] * diff[ii-j];
end;
for j = 1 to q begin
sum_theta = sum_theta + theta[j] * resid[ii-j];
end;
resid[ii] = diff[ii] - sum_phi - sum_theta;
end;
{Calculate standard deviation}
for ii = 1 to n begin
std_dev[ii] = 0;
end;
for ii = p+1 to n begin
sum_resid = 0;
for j = 1 to p begin
sum_resid = sum_resid + phi[j] * diff[ii-j];
end;
for j = 1 to q begin
sum_resid = sum_resid + theta[j] * resid[ii-j];
end;
std_dev[ii] = sqrt(sum_resid * sum_resid / (n-p-q));
end;
{Calculate forecast}
for ii = n+1 to n+m begin
forecast[ii] = 0;
end;
for ii = n+1 to n+m begin
sum_forecast = 0;
for j = 1 to p begin
sum_forecast = sum_forecast + phi[j] * (TimeSeries[n-j+1] - TimeSeries[n-j+1-d]);
end;
for j = 1 to q begin
sum_forecast = sum_forecast + theta[j] * resid[n-j+1];
end;
forecast[ii] = TimeSeries[n] + sum_forecast;
end;
{Calculate error}
for ii = n+1 to n+m begin
error[ii] = 0;
end;
for ii = n+1 to n+m begin
error[i] = forecast[ii] - TimeSeries[n+ii-n-dd];
end;
|