<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: calculating rate of return for all variables in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/calculating-rate-of-return-for-all-variables/m-p/275176#M7703</link>
    <description>&lt;P&gt;Consider transposing your data from wide to long.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 04 Jun 2016 10:16:57 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2016-06-04T10:16:57Z</dc:date>
    <item>
      <title>calculating rate of return for all variables</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/calculating-rate-of-return-for-all-variables/m-p/275154#M7701</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;suppose I have stock price data of the follwing form (and I have many stocks but for simplicity here will include only 2):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="213"&gt;
&lt;P&gt;date&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;Stock1_price&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;Stock2_price&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="213"&gt;
&lt;P&gt;20/1/2015&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;6&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="213"&gt;
&lt;P&gt;19/1/2015&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;10&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="213"&gt;
&lt;P&gt;18/1/2015&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What I would like to obtain is the stock returns for all of my stocks:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="213"&gt;
&lt;P&gt;date&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;Stock1_return&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;Stock2_return&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="213"&gt;
&lt;P&gt;20/1/2015&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="213"&gt;
&lt;P&gt;19/1/2015&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;1.5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="213"&gt;
&lt;P&gt;18/1/2015&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="213"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If I had only one (or a small number) stock I would just create a new colum "lag_price" and then calculate the return as (price-lag_price)/ lag_price, but in the case of many stocks its not practical...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Sat, 04 Jun 2016 04:58:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/calculating-rate-of-return-for-all-variables/m-p/275154#M7701</guid>
      <dc:creator>ilikesas</dc:creator>
      <dc:date>2016-06-04T04:58:29Z</dc:date>
    </item>
    <item>
      <title>Re: calculating rate of return for all variables</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/calculating-rate-of-return-for-all-variables/m-p/275164#M7702</link>
      <description>&lt;PRE&gt;
It would be very easy for IML. Do you want IML code?
OR you could use array.


data have;
input date : ddmmyy10. Stock1_price Stock2_price;
format date ddmmyy10.;
cards;
20/1/2015
20
6
19/1/2015
10
3
18/1/2015
5
1
;
run;
proc sort data=have;by date;run;
data want;
 set have;
 array x{*} return1-return2;
 array y{*} Stock1_price Stock2_price;
 do i=1 to dim(x);
  x{i}=dif(y{i})/lag(y{i});
 end;
run;
proc sort data=want;by descending date;run;

&lt;/PRE&gt;</description>
      <pubDate>Sat, 04 Jun 2016 07:15:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/calculating-rate-of-return-for-all-variables/m-p/275164#M7702</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-06-04T07:15:50Z</dc:date>
    </item>
    <item>
      <title>Re: calculating rate of return for all variables</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/calculating-rate-of-return-for-all-variables/m-p/275176#M7703</link>
      <description>&lt;P&gt;Consider transposing your data from wide to long.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 04 Jun 2016 10:16:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/calculating-rate-of-return-for-all-variables/m-p/275176#M7703</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-06-04T10:16:57Z</dc:date>
    </item>
  </channel>
</rss>

