<?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: rollingreg in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/rollingreg/m-p/456390#M284361</link>
    <description>&lt;P&gt;You could start with this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let ws=36;

data rw_temp;
set finaluse;
do i = 0 to &amp;amp;ws.;
    finalDate = intnx("month", date, i, "end");
    output;
   end;
format finalDate mmddyy10.;
drop i;
run;

proc sql;
create table rw as
select *
from rw_temp
group by permno, finalDate
having count(*) &amp;gt; &amp;amp;ws.
order by permno, finalDate, date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 23 Apr 2018 03:40:24 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2018-04-23T03:40:24Z</dc:date>
    <item>
      <title>rollingreg</title>
      <link>https://communities.sas.com/t5/SAS-Programming/rollingreg/m-p/456350#M284358</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have the data in following form (its actually from 1/31/2008 to 12/31/2017).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;permno&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;er&lt;/TD&gt;&lt;TD&gt;smb&lt;/TD&gt;&lt;TD&gt;hml&lt;/TD&gt;&lt;TD&gt;rmrf&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1/31/2008&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;-4.5&lt;/TD&gt;&lt;TD&gt;0.21&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2/29/2008&lt;/TD&gt;&lt;TD&gt;-2&lt;/TD&gt;&lt;TD&gt;3.5&lt;/TD&gt;&lt;TD&gt;2.9&lt;/TD&gt;&lt;TD&gt;0.13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3/31/2008&lt;/TD&gt;&lt;TD&gt;2.5&lt;/TD&gt;&lt;TD&gt;5.6&lt;/TD&gt;&lt;TD&gt;3.1&lt;/TD&gt;&lt;TD&gt;-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1/31/2008&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;-4.5&lt;/TD&gt;&lt;TD&gt;0.21&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2/29/2008&lt;/TD&gt;&lt;TD&gt;1.46&lt;/TD&gt;&lt;TD&gt;3.5&lt;/TD&gt;&lt;TD&gt;2.9&lt;/TD&gt;&lt;TD&gt;0.13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3/31/2008&lt;/TD&gt;&lt;TD&gt;-0.456&lt;/TD&gt;&lt;TD&gt;5.6&lt;/TD&gt;&lt;TD&gt;3.1&lt;/TD&gt;&lt;TD&gt;-17&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to run a rollingreg on this data and I am using the following code;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*Rolling Window for er*/&lt;BR /&gt;/*consider past 36 excess returns for each subsequent month*/&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;%let ws=36;&lt;BR /&gt;DATA tmp1.er_rw;&lt;BR /&gt;array _er {&amp;amp;ws} _temporary_ ;&lt;BR /&gt;array _DATE {&amp;amp;ws} _temporary_ ;&lt;BR /&gt;array _SMB {&amp;amp;ws} _temporary_ ;&lt;BR /&gt;array _HML {&amp;amp;ws} _temporary_ ;&lt;BR /&gt;set tmp1.finaluse;&lt;BR /&gt;by PERMNO;&lt;BR /&gt;retain N 0 winID 0;&lt;BR /&gt;N = ifn(first.PERMNO,1,N+1);&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;I=mod(N-1,&amp;amp;ws)+1;&lt;BR /&gt;_er{I}=er;&lt;BR /&gt;_DATE{I}=DATE;&lt;BR /&gt;if N&amp;gt;=&amp;amp;ws then&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;do;winID = winID+1;&lt;BR /&gt;do I= 1 to &amp;amp;ws;&lt;BR /&gt;er=_er{I};&lt;/P&gt;&lt;P&gt;month=_DATE{I};&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;end;&lt;BR /&gt;format month mmddyy9.;&lt;BR /&gt;drop N I;&lt;BR /&gt;run;&lt;BR /&gt;proc sort data=tmp1.er_rw;&lt;BR /&gt;by winid;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;However, the output that I am getting is in this form;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;permno&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;er&lt;/TD&gt;&lt;TD&gt;smb&lt;/TD&gt;&lt;TD&gt;hml&lt;/TD&gt;&lt;TD&gt;rmrf&lt;/TD&gt;&lt;TD&gt;month&lt;/TD&gt;&lt;TD&gt;winID&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12/31/2010&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;-4.5&lt;/TD&gt;&lt;TD&gt;0.21&lt;/TD&gt;&lt;TD&gt;1/31/2008&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12/31/2010&lt;/TD&gt;&lt;TD&gt;-2&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;2.9&lt;/TD&gt;&lt;TD&gt;0.13&lt;/TD&gt;&lt;TD&gt;2/29/2008&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12/31/2010&lt;/TD&gt;&lt;TD&gt;2.5&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;3.1&lt;/TD&gt;&lt;TD&gt;-17&lt;/TD&gt;&lt;TD&gt;3/31/2008&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12/31/2010&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;-4.5&lt;/TD&gt;&lt;TD&gt;0.21&lt;/TD&gt;&lt;TD&gt;1/31/2008&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12/31/2010&lt;/TD&gt;&lt;TD&gt;1.46&lt;/TD&gt;&lt;TD&gt;3.5&lt;/TD&gt;&lt;TD&gt;2.9&lt;/TD&gt;&lt;TD&gt;0.13&lt;/TD&gt;&lt;TD&gt;2/29/2008&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12/31/2010&lt;/TD&gt;&lt;TD&gt;-0.456&lt;/TD&gt;&lt;TD&gt;5.6&lt;/TD&gt;&lt;TD&gt;3.1&lt;/TD&gt;&lt;TD&gt;-17&lt;/TD&gt;&lt;TD&gt;3/31/2008&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&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;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want the output to look like this instead;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;permno&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;er&lt;/TD&gt;&lt;TD&gt;smb&lt;/TD&gt;&lt;TD&gt;hml&lt;/TD&gt;&lt;TD&gt;rmrf&lt;/TD&gt;&lt;TD&gt;month&lt;/TD&gt;&lt;TD&gt;winID&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12/31/2010&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;-4.5&lt;/TD&gt;&lt;TD&gt;0.21&lt;/TD&gt;&lt;TD&gt;1/31/2008&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1/31/2011&lt;/TD&gt;&lt;TD&gt;-2&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;2.9&lt;/TD&gt;&lt;TD&gt;0.13&lt;/TD&gt;&lt;TD&gt;2/29/2008&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2/29/2011&lt;/TD&gt;&lt;TD&gt;2.5&lt;/TD&gt;&lt;TD&gt;-6.4&lt;/TD&gt;&lt;TD&gt;3.1&lt;/TD&gt;&lt;TD&gt;-17&lt;/TD&gt;&lt;TD&gt;3/31/2008&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can someone please let me know where I am making mistake?&lt;/P&gt;</description>
      <pubDate>Mon, 23 Apr 2018 01:07:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/rollingreg/m-p/456350#M284358</guid>
      <dc:creator>Amalik</dc:creator>
      <dc:date>2018-04-23T01:07:28Z</dc:date>
    </item>
    <item>
      <title>Re: rollingreg</title>
      <link>https://communities.sas.com/t5/SAS-Programming/rollingreg/m-p/456352#M284360</link>
      <description>&lt;P&gt;I believe there is a mistake because although the month variable is rolling while the date variable is not rolling, I want both of the variables to roll&lt;/P&gt;</description>
      <pubDate>Mon, 23 Apr 2018 01:23:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/rollingreg/m-p/456352#M284360</guid>
      <dc:creator>Amalik</dc:creator>
      <dc:date>2018-04-23T01:23:35Z</dc:date>
    </item>
    <item>
      <title>Re: rollingreg</title>
      <link>https://communities.sas.com/t5/SAS-Programming/rollingreg/m-p/456390#M284361</link>
      <description>&lt;P&gt;You could start with this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let ws=36;

data rw_temp;
set finaluse;
do i = 0 to &amp;amp;ws.;
    finalDate = intnx("month", date, i, "end");
    output;
   end;
format finalDate mmddyy10.;
drop i;
run;

proc sql;
create table rw as
select *
from rw_temp
group by permno, finalDate
having count(*) &amp;gt; &amp;amp;ws.
order by permno, finalDate, date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 23 Apr 2018 03:40:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/rollingreg/m-p/456390#M284361</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-04-23T03:40:24Z</dc:date>
    </item>
  </channel>
</rss>

