Computing the same series two different ways produces different results
Info
This question is closed. Reopen it to edit or answer.
Show older comments
I have 2 time series, one containing the nominal price of a good (price_n) and one containing the consumer price index (cpi). I am interested in getting the real return on that good.
Method 1:
Get the real price series (price_r) and then the real return (ret_r).
price_r = price_n./cpi*cpi(1);
ret_r = price_r(2:end)./price_r(1:end-1)-1;
Method 2:
Get the nominal return (ret_n), inflation (infl) and then the real return.
ret_n = price_n(2:end)./price_n(1:end-1)-1;
infl = cpi(2:end)./cpi(1:end-1)-1;
ret_r = (1+ret_n)./(1+infl)-1;
When I do the above in Excel I am getting the exact same result, when I do it in MATLAB however I don't. Method 1 produces in MATLAB the same result I get in Excel, but Method 2 gives me a series that differs from the first one by as much as +/- 0.001 at times. My first guess was that it's a rounding error, but I find it strange to have a rounding error in MATLAB when Excel can do this and especially one of this size. Can anybody point to me what am I doing wrong?
Thank you, Alex
3 Comments
Image Analyst
on 18 Aug 2012
Please supply some actual values for your variables so we can test actual numbers.
Alexandru
on 18 Aug 2012
Matt Fig
on 18 Aug 2012
Yes, we need some values. For instance, I use this data:
price_n = round(rand(1,15)*100000)/100; % Up to 1000
cpi = round(rand(1,15)*20000)/100; % Up to 200
price_r = price_n./cpi*cpi(1);
ret_r = price_r(2:end)./price_r(1:end-1)-1;
ret_n = price_n(2:end)./price_n(1:end-1)-1;
infl = cpi(2:end)./cpi(1:end-1)-1;
ret_R = (1+ret_n)./(1+infl)-1;
% Now find the maximum difference:
max(diff([ret_r.',ret_R'],[],2))
And the most I have found is 1e-14.
Answers (0)
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!