<?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: Calculate abnormal returns for multiple 3-day windows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450177#M283699</link>
    <description>&lt;P&gt;Are you trying to do something like the following?:&lt;/P&gt;
&lt;PRE&gt;/* create sum test data */
data have;
  format Date mmddyy10.;
  CUSIP_ID=1;
  do Date='01jan2016'd to '31dec2017'd;
    if weekday(date) in (2,3,4,5,6) then do;;
      Return=ceil(100*rand("uniform") );
      output;
    end;
  end;
  CUSIP_ID=2;
  do Date='01jan2016'd to '31dec2017'd;
    if weekday(date) in (2,3,4,5,6) then do;;
      Return=ceil(50*rand("uniform") );
      output;
    end;
  end;
run;

data need;
  set have;
  by cusip_id;
  if first.cusip_id then counter=1;
  else counter+1;
  year=year(Date);
  oneback=lag(Return);
  twoback=lag2(Return);
  if mod(counter,3) eq 0 then do;
    avg=mean(Return,oneback,twoback);
    output;
  end;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 31 Mar 2018 19:27:10 GMT</pubDate>
    <dc:creator>art297</dc:creator>
    <dc:date>2018-03-31T19:27:10Z</dc:date>
    <item>
      <title>Calculate abnormal returns for multiple 3-day windows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450166#M283698</link>
      <description>&lt;P&gt;Hello all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am running into some SAS coding issues on calculating abnormal returns and would appreciate any thoughts/sample code/solution. The data structure looks like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;CUSIP ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Date(YYYY/MM/DD)&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Return&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/1/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/2/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/3/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/4/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/5/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/8/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/9/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/10/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/11/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/12/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;…&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;…&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;…&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12/31/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/1/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/2/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/3/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/4/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/5/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/8/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/9/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/10/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/11/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1/12/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;…&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;…&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;…&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12/31/2000&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&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 need is to calculate abnormal returns generated from each CUSIP firm during a 3-day event window. The tricky part is that the abnormal returns for “each non-overlapping 3-day window over the sampling period” need to be calculated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Taking the above sample data as an example, if I have 249 unique days in year 2000, then there should be 249 / 3 = 83 non-overlapping 3-day windows. So in the output I want to get the abnormal returns of CUSIP firm 1 from 1/1/2000 to 1/3/2000, and then from 1/4/2000 to 1/8/2000 (note that from 1/4/2000 to 1/8/2000 there are only 3 trading days), and so on. And the need for CUSIP firm 2 is the same.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think the ideal output should look like:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;CUSIP ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Window#&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Ab_return&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;…&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;83&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;…&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;83&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;x&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;One thing I think worth attention is, in some years, the number of days is not divisible by 3. In that case, event window less than 2-day can be dropped.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Currently, I have codes that calculate abnormal returns for a specified event window:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*Specify event date*/
data have; set have;
edate = '13apr2005'd;
format edate yymmddn8.;
if not missing(cusip);
run;

/*calculate cumulative abnormal returns CAR*/
%let begdate = -1;
%let enddate = 1;
proc sql undo_policy = none;
create table have_event as select distinct
cusip, edate, exp(sum(log(1+return))) -1 as ab_ret, n(ret) as nobs
from have (where=(date between intnx('WEEKDAY', edate, &amp;amp;begdate) and intnx('WEEKDAY', edate, &amp;amp;enddate)))
group by cusip, edate
order by cusip, edate;
quit;

/*Drop results with less than three days in a window*/
data us2event; set us2event;
if nobs ne 3 then delete;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;The formula for the abnormal returns is&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;exp(sum(log(1+return))) -1&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, I have difficulties in modifying the codes to meet the requirements I just described. I hope my question makes sense and appreciate any help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 31 Mar 2018 17:41:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450166#M283698</guid>
      <dc:creator>Zerg</dc:creator>
      <dc:date>2018-03-31T17:41:28Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate abnormal returns for multiple 3-day windows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450177#M283699</link>
      <description>&lt;P&gt;Are you trying to do something like the following?:&lt;/P&gt;
&lt;PRE&gt;/* create sum test data */
data have;
  format Date mmddyy10.;
  CUSIP_ID=1;
  do Date='01jan2016'd to '31dec2017'd;
    if weekday(date) in (2,3,4,5,6) then do;;
      Return=ceil(100*rand("uniform") );
      output;
    end;
  end;
  CUSIP_ID=2;
  do Date='01jan2016'd to '31dec2017'd;
    if weekday(date) in (2,3,4,5,6) then do;;
      Return=ceil(50*rand("uniform") );
      output;
    end;
  end;
run;

data need;
  set have;
  by cusip_id;
  if first.cusip_id then counter=1;
  else counter+1;
  year=year(Date);
  oneback=lag(Return);
  twoback=lag2(Return);
  if mod(counter,3) eq 0 then do;
    avg=mean(Return,oneback,twoback);
    output;
  end;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 31 Mar 2018 19:27:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450177#M283699</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2018-03-31T19:27:10Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate abnormal returns for multiple 3-day windows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450185#M283700</link>
      <description>Thank you. It looks like your example codes could do the trick after some modification. I will take a try.</description>
      <pubDate>Sat, 31 Mar 2018 20:06:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450185#M283700</guid>
      <dc:creator>Zerg</dc:creator>
      <dc:date>2018-03-31T20:06:08Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate abnormal returns for multiple 3-day windows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450187#M283701</link>
      <description>&lt;P&gt;Actually, the code should have taken year into account. e.g.:&lt;/P&gt;
&lt;PRE&gt;data need;
  set have;
  by cusip_id;
  year=year(Date);
  yearoneback=lag(year);
  oneback=lag(Return);
  twoback=lag2(Return);
  if first.cusip_id or year ne yearoneback then counter=1;
  else counter+1;
  if mod(counter,3) eq 0 then do;
    avg=mean(Return,oneback,twoback);
    output;
  end;
run;&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 31 Mar 2018 20:10:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450187#M283701</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2018-03-31T20:10:19Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate abnormal returns for multiple 3-day windows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450227#M283702</link>
      <description>&lt;P&gt;Make a group variable GROUP, after that PROC MEANS by group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input #1 CUSIP
#2 Date : mmddyy12.
#3 Return $;
format date mmddyy10.;
cards;
1
1/1/2000
x
1
1/2/2000
x
1
1/3/2000
x
1
1/4/2000
x
1
1/5/2000
x
1
1/8/2000
x
1
1/9/2000
x
1
1/10/2000
x
1
1/11/2000
x
1
1/12/2000
x
1
12/31/2000
x
2
1/1/2000
x
2
1/2/2000
x
2
1/3/2000
x
2
1/4/2000
x
2
1/5/2000
x
2
1/8/2000
x
2
1/9/2000
x
2
1/10/2000
x
2
1/11/2000
x
2
1/12/2000
x
;
run;

data want;
 set have;
 by cusip;
 if first.cusip then n=0;
 n+1;
 if first.cusip or mod(n,3)=1 then group+1;
 drop n;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 01 Apr 2018 11:13:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450227#M283702</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-04-01T11:13:19Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate abnormal returns for multiple 3-day windows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450401#M283703</link>
      <description>Thank you. I incorporated the group variable created by your codes in my sql codes and solved the issue.&lt;BR /&gt;&lt;BR /&gt;proc sql undo_policy = none;&lt;BR /&gt;create table abret_2005 as select distinct&lt;BR /&gt;cusip, group, exp(sum(log(1+madjret))) -1 as ab_ret, n(group) as nobs&lt;BR /&gt;from w3_2005&lt;BR /&gt;group by cusip, group&lt;BR /&gt;order by cusip, group;&lt;BR /&gt;quit;&lt;BR /&gt;</description>
      <pubDate>Mon, 02 Apr 2018 16:48:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-abnormal-returns-for-multiple-3-day-windows/m-p/450401#M283703</guid>
      <dc:creator>Zerg</dc:creator>
      <dc:date>2018-04-02T16:48:35Z</dc:date>
    </item>
  </channel>
</rss>

