<?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: Rolling beta estimation in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Rolling-beta-estimation/m-p/449172#M113018</link>
    <description>&lt;P&gt;Being a sometimes lazy programmer I might be tempted to add 10 variable to you data, one for each period such that period1=1 when date is in the given interval and 0 otherwise.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Something like:&lt;/P&gt;
&lt;PRE&gt;data aaa ;
   set beta.beta ;
   keep cusip date ret sprtrn ;
   format date yymmdd6. ;
   rename cusip=firm ret=r sprtrn=rm ;
   period1 = (2004 le year(date) le 2008 );
   period2 = (2005 le year(date) le 2009 );
  /* continue the obvious pattern*/
run ;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then your regression could look like:&lt;/P&gt;
&lt;P&gt;proc reg data = temp outest = results ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; where period1=1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; model r = rm ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by firm&amp;nbsp; ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;which would lend itself to a do 1 to 10 macro loop with : where period&amp;amp;i = 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would also be tempted not to prefilter the "too few return days" but capture the n actually used&amp;nbsp;by the model by adding:&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;ods&lt;/FONT&gt; &lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;output&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt; Nobs = ObsUsed;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;to the Proc reg (and accumulating that as well) &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;You might want to add a label to the model statement such as:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;Period&amp;amp;i: model ....&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;to have some additional information about which regression things are coming from as that label will be in the OUTEST or other model related output sets.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have to say this bit of code is not obvious as to purpose&lt;/P&gt;
&lt;PRE&gt;%do x = 50 %to 66 ;

       data temp ;

                   set gooddata ;

                        if &amp;amp;x - 49 &amp;lt;= n &amp;lt;= &amp;amp;x ;

                        per = &amp;amp;x ;
&lt;/PRE&gt;
&lt;P&gt;lots of magic numbers.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 27 Mar 2018 21:49:44 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2018-03-27T21:49:44Z</dc:date>
    <item>
      <title>Rolling beta estimation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rolling-beta-estimation/m-p/448858#M112907</link>
      <description>&lt;P&gt;Dear all,&lt;/P&gt;&lt;P&gt;I'm working on a regression with rolling beta.&lt;/P&gt;&lt;P&gt;My regression starts from 2004/01/31 to 2017/12/31.&lt;/P&gt;&lt;P&gt;Based on 60 monthly returns, estimated betas for each of the two stocks at the end of each year for the recent 10 years.&lt;/P&gt;&lt;P&gt;For example, 2004/01/31 to 2008/12/31, 2005/01/31 to 2009/12/31, 2006/01/31 to 2010/12/31, ...., 2013/01/31- 2017/12/31.&lt;/P&gt;&lt;P&gt;It is to obtain period beta for stock A and B by 10 periods.&lt;/P&gt;&lt;P&gt;Here are my expected results:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; beta (A)&amp;nbsp; &amp;nbsp;beta (B)&lt;/P&gt;&lt;P&gt;period 1 (2004/01/31 ~ 2008/12/31)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x.xx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.xx&lt;/P&gt;&lt;P&gt;period 2 (2005/01/31 ~ 2009/12/31)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.xx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x.xx&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&lt;/P&gt;&lt;P&gt;period10 (2013/01/31 ~ 2017/12/31)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x.xx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x.xx&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SAS code in my textbook is following. &lt;SPAN&gt;How should I fix it?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; aaa ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set beta.beta ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; keep cusip date ret sprtrn ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; format date yymmdd6. ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; rename cusip=firm ret=r sprtrn=rm ;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;sort&lt;/STRONG&gt; data=aaa ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by firm date ;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; begin (keep=firm bgndate) end (keep=firm enddate) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set aaa ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by firm ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.firm then do ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bgndate=date ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; format bgndate yymmdd6. ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output begin ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if last.firm then do ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enddate=date ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; format enddate yymmdd6. ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output end ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end ;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; length ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; merge begin end ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by firm ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; * delete firms with too few return days ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if bgndate &amp;gt; mdy (&lt;STRONG&gt;01&lt;/STRONG&gt;,&lt;STRONG&gt;31&lt;/STRONG&gt;,&lt;STRONG&gt;13&lt;/STRONG&gt;) then delete ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if enddate &amp;lt; mdy (&lt;STRONG&gt;12&lt;/STRONG&gt;,&lt;STRONG&gt;31&lt;/STRONG&gt;,&lt;STRONG&gt;08&lt;/STRONG&gt;) then delete ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; keep firm ;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; gooddata ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; merge aaa length (in=a) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by firm ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if a ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; n + &lt;STRONG&gt;1&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.firm then n=&lt;STRONG&gt;1&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt; &lt;STRONG&gt;&lt;EM&gt;estim&lt;/EM&gt;&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;%do x = &lt;STRONG&gt;50&lt;/STRONG&gt; %to &lt;STRONG&gt;66&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data temp ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set gooddata ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if &amp;amp;x - &lt;STRONG&gt;49&lt;/STRONG&gt; &amp;lt;= n &amp;lt;= &amp;amp;x ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; per = &amp;amp;x ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc reg data = temp outest = results ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; model r = rm ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by firm per ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc append base = betas1 data = results ;&lt;/P&gt;&lt;P&gt;%end ;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt; estim ;&lt;/P&gt;&lt;P&gt;%&lt;STRONG&gt;&lt;EM&gt;estim&lt;/EM&gt;&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is sample data(data=aaa).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; firm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; r&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rm&lt;/P&gt;&lt;P&gt;040130&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45920010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.070673&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.017276&lt;/P&gt;&lt;P&gt;040227&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45920010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.025899&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.012209&lt;/P&gt;&lt;P&gt;040331&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45920010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.048290&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-0.016359&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; :&lt;/P&gt;&lt;P&gt;171229&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45920010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.003572&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.009832&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Mar 2018 07:14:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rolling-beta-estimation/m-p/448858#M112907</guid>
      <dc:creator>Dowon1</dc:creator>
      <dc:date>2018-03-27T07:14:16Z</dc:date>
    </item>
    <item>
      <title>Re: Rolling beta estimation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rolling-beta-estimation/m-p/448872#M112913</link>
      <description>&lt;P&gt;Show us some example data?&lt;/P&gt;</description>
      <pubDate>Tue, 27 Mar 2018 06:38:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rolling-beta-estimation/m-p/448872#M112913</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2018-03-27T06:38:38Z</dc:date>
    </item>
    <item>
      <title>Re: Rolling beta estimation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rolling-beta-estimation/m-p/449172#M113018</link>
      <description>&lt;P&gt;Being a sometimes lazy programmer I might be tempted to add 10 variable to you data, one for each period such that period1=1 when date is in the given interval and 0 otherwise.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Something like:&lt;/P&gt;
&lt;PRE&gt;data aaa ;
   set beta.beta ;
   keep cusip date ret sprtrn ;
   format date yymmdd6. ;
   rename cusip=firm ret=r sprtrn=rm ;
   period1 = (2004 le year(date) le 2008 );
   period2 = (2005 le year(date) le 2009 );
  /* continue the obvious pattern*/
run ;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then your regression could look like:&lt;/P&gt;
&lt;P&gt;proc reg data = temp outest = results ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; where period1=1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; model r = rm ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by firm&amp;nbsp; ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;which would lend itself to a do 1 to 10 macro loop with : where period&amp;amp;i = 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would also be tempted not to prefilter the "too few return days" but capture the n actually used&amp;nbsp;by the model by adding:&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;ods&lt;/FONT&gt; &lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;output&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt; Nobs = ObsUsed;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;to the Proc reg (and accumulating that as well) &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;You might want to add a label to the model statement such as:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;Period&amp;amp;i: model ....&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;to have some additional information about which regression things are coming from as that label will be in the OUTEST or other model related output sets.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have to say this bit of code is not obvious as to purpose&lt;/P&gt;
&lt;PRE&gt;%do x = 50 %to 66 ;

       data temp ;

                   set gooddata ;

                        if &amp;amp;x - 49 &amp;lt;= n &amp;lt;= &amp;amp;x ;

                        per = &amp;amp;x ;
&lt;/PRE&gt;
&lt;P&gt;lots of magic numbers.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Mar 2018 21:49:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rolling-beta-estimation/m-p/449172#M113018</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-03-27T21:49:44Z</dc:date>
    </item>
  </channel>
</rss>

