<?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: How to calculate 3-day window buy-and-hold return in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586003#M167224</link>
    <description>&lt;P&gt;One of many ways to do this. Merging data views:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input TICKER $	DATE:yymmdd.	RET	VWRETX;
format date yymmdd10.;
datalines;
AAAP	2007/05/01	0.033	-0.0173
AAAP	2007/05/02	0.021	0.00147
AAAP	2007/05/03	-0.01	0.00165
AAAP	2007/05/04	0.016	0.03
AAAP	2007/05/05	0.023	0.045
AAAP	2007/05/06	-0.005	0.004
AAPL	2007/05/01	-0.056	0.0014
AAPL	2007/05/02	0.029	-0.007
AAPL	2007/05/03	0.1	-0.00016
AAPL	2007/05/04	0.001	0.045
AAPL	2007/05/05	-0.0821	0.0018
AAPL	2007/05/06	0.005	0.065
;

data t_1 / view=t_1;
set have;
date = intnx("day", date, +1);
rename ret=ret_1 vwretx=vwretx_1;
run;


data t1 / view=t1;
set have;
date = intnx("day", date, -1);
rename ret=ret1 vwretx=vwretx1;
run;

data want;
merge t_1 have(in=ok) t1;
by ticker date;
if ok;
if n(of ret:) = 3 then
    ma_ret = (ret_1+1)*(ret+1)*(ret1+1) -
        (vwretx_1+1)*(vwretx+1)*(vwretx1+1);
keep ticker date ret vwretx ma_ret;
run;

proc print data=want noobs; run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;              TICKER          DATE      RET       VWRETX      ma_ret

               AAAP     2007-05-01     0.0330    -0.01730      .
               AAAP     2007-05-02     0.0210     0.00147     0.05838
               AAAP     2007-05-03    -0.0100     0.00165    -0.00625
               AAAP     2007-05-04     0.0160     0.03000    -0.04915
               AAAP     2007-05-05     0.0230     0.04500    -0.04648
               AAAP     2007-05-06    -0.0050     0.00400      .
               AAPL     2007-05-01    -0.0560     0.00140      .
               AAPL     2007-05-02     0.0290    -0.00700     0.07428
               AAPL     2007-05-03     0.1000    -0.00016     0.09551
               AAPL     2007-05-04     0.0010     0.04500    -0.03601
               AAPL     2007-05-05    -0.0821     0.00180    -0.19152
               AAPL     2007-05-06     0.0050     0.06500      .
&lt;/PRE&gt;</description>
    <pubDate>Wed, 04 Sep 2019 04:37:20 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2019-09-04T04:37:20Z</dc:date>
    <item>
      <title>How to calculate 3-day window buy-and-hold return</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/585992#M167221</link>
      <description>&lt;P&gt;Good evening everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to calculate 3-day-window (Day -1,Day 0, Day +1) market-adjusted buy-and-hold return&amp;nbsp;with CRSP data.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I checked several posts which had a similar&amp;nbsp;topic to mine but still can't figure out how to do it.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My data are as below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p1"&gt;&lt;STRONG&gt;TICKER&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p1"&gt;&lt;STRONG&gt;DATE&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p1"&gt;&lt;STRONG&gt;RET&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p1"&gt;&lt;STRONG&gt;VWRETX&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAAP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;2007/05/01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.033&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;-0.0173&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAAP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;2007/05/02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.021&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.00147&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p3"&gt;AAAP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;2007/05/03&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;-0.01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;0.00165&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAAP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;2007/05/04&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.03&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAAP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;2007/05/05&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.023&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;0.045&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAAP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;2007/05/06&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;-0.005&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;0.004&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAPL&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;2007/05/01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;-0.056&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.0014&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAPL&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;2007/05/02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.029&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;-0.007&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p3"&gt;AAPL&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;2007/05/03&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;0.1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;-0.00016&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAPL&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;2007/05/04&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.001&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.045&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAPL&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;2007/05/05&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p3"&gt;-0.0821&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p4"&gt;0.0018&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="p2"&gt;AAPL&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;2007/05/06&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.005&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P class="p2"&gt;0.065&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;RET&amp;nbsp; = stock return, and VWRETX&amp;nbsp; = market return.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And the formula is:&amp;nbsp;{ [(1+RET) of day -1]*[(1+RET) of day 0]*[(1+RET) of day +1]&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="5"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; { [1+VWRETX) of day -1]*[1+VWRETX) of day 0]*[1+VWRETX) of day +1] }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also,&amp;nbsp;I want to set each day as day 0 so that&amp;nbsp;I can get buy-and-hold return for each day (somewhat similar to moving average).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How can I do that? Any advice or comment will be highly appreciated.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 04 Sep 2019 02:24:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/585992#M167221</guid>
      <dc:creator>AzamonTuscomer</dc:creator>
      <dc:date>2019-09-04T02:24:36Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3-day window buy-and-hold return</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586003#M167224</link>
      <description>&lt;P&gt;One of many ways to do this. Merging data views:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input TICKER $	DATE:yymmdd.	RET	VWRETX;
format date yymmdd10.;
datalines;
AAAP	2007/05/01	0.033	-0.0173
AAAP	2007/05/02	0.021	0.00147
AAAP	2007/05/03	-0.01	0.00165
AAAP	2007/05/04	0.016	0.03
AAAP	2007/05/05	0.023	0.045
AAAP	2007/05/06	-0.005	0.004
AAPL	2007/05/01	-0.056	0.0014
AAPL	2007/05/02	0.029	-0.007
AAPL	2007/05/03	0.1	-0.00016
AAPL	2007/05/04	0.001	0.045
AAPL	2007/05/05	-0.0821	0.0018
AAPL	2007/05/06	0.005	0.065
;

data t_1 / view=t_1;
set have;
date = intnx("day", date, +1);
rename ret=ret_1 vwretx=vwretx_1;
run;


data t1 / view=t1;
set have;
date = intnx("day", date, -1);
rename ret=ret1 vwretx=vwretx1;
run;

data want;
merge t_1 have(in=ok) t1;
by ticker date;
if ok;
if n(of ret:) = 3 then
    ma_ret = (ret_1+1)*(ret+1)*(ret1+1) -
        (vwretx_1+1)*(vwretx+1)*(vwretx1+1);
keep ticker date ret vwretx ma_ret;
run;

proc print data=want noobs; run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;              TICKER          DATE      RET       VWRETX      ma_ret

               AAAP     2007-05-01     0.0330    -0.01730      .
               AAAP     2007-05-02     0.0210     0.00147     0.05838
               AAAP     2007-05-03    -0.0100     0.00165    -0.00625
               AAAP     2007-05-04     0.0160     0.03000    -0.04915
               AAAP     2007-05-05     0.0230     0.04500    -0.04648
               AAAP     2007-05-06    -0.0050     0.00400      .
               AAPL     2007-05-01    -0.0560     0.00140      .
               AAPL     2007-05-02     0.0290    -0.00700     0.07428
               AAPL     2007-05-03     0.1000    -0.00016     0.09551
               AAPL     2007-05-04     0.0010     0.04500    -0.03601
               AAPL     2007-05-05    -0.0821     0.00180    -0.19152
               AAPL     2007-05-06     0.0050     0.06500      .
&lt;/PRE&gt;</description>
      <pubDate>Wed, 04 Sep 2019 04:37:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586003#M167224</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-09-04T04:37:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3-day window buy-and-hold return</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586019#M167236</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input TICKER $ DATE :yymmdd. RET VWRETX;
format date yymmdd10.;
datalines;
AAAP 2007/05/01 0.033 -0.0173
AAAP 2007/05/02 0.021 0.00147
AAAP 2007/05/03 -0.01 0.00165
AAAP 2007/05/04 0.016 0.03
AAAP 2007/05/05 0.023 0.045
AAAP 2007/05/06 -0.005 0.004
AAPL 2007/05/01 -0.056 0.0014
AAPL 2007/05/02 0.029 -0.007
AAPL 2007/05/03 0.1 -0.00016
AAPL 2007/05/04 0.001 0.045
AAPL 2007/05/05 -0.0821 0.0018
AAPL 2007/05/06 0.005 0.065
;

data want;
    if _N_=1 then do;
        declare hash h(dataset:'have');
        h.definekey('ticker', 'date');
        h.definedata('ret', 'vwretx');
        h.definedone();
    end;
    
    set have;
    ret0=ret; vwretx0=vwretx;

    rc=h.find(key:ticker, key:date-1);
    ret_1=ifn(rc=0, ret, .);
    vwretx_1=ifn(rc=0, vwretx, .);

    rc=h.find(key:ticker, key:date+1);
    ret1=ifn(rc=0, ret, .);
    vwretx1=ifn(rc=0, vwretx, .);

    ma_ret = (ret_1+1)*(ret0+1)*(ret1+1) -
        (vwretx_1+1)*(vwretx0+1)*(vwretx1+1);

    keep ticker date ret vwretx ma_ret;
    format ma_ret 8.5;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;ticker  date        ret      vwretx   ma_ret 
                                             
AAAP    2007-05-01  0.021    0.00147  .      
AAAP    2007-05-02  -0.01    0.00165  0.05838
AAAP    2007-05-03  0.016    0.03    -0.00625
AAAP    2007-05-04  0.023    0.045   -0.04915
AAAP    2007-05-05  -0.005   0.004   -0.04648
AAAP    2007-05-06  0.023    0.045    .      
AAPL    2007-05-01  0.029   -0.007    .      
AAPL    2007-05-02  0.1     -0.00016  0.07428
AAPL    2007-05-03  0.001    0.045    0.09551
AAPL    2007-05-04  -0.0821  0.0018  -0.03601
AAPL    2007-05-05  0.005    0.065   -0.19152
AAPL    2007-05-06  -0.0821  0.0018   .       &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 04 Sep 2019 07:14:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586019#M167236</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-09-04T07:14:33Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3-day window buy-and-hold return</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586240#M167333</link>
      <description>Thank you so much for your help! I had a hard time with this problem. I really appreciate it.</description>
      <pubDate>Wed, 04 Sep 2019 19:48:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586240#M167333</guid>
      <dc:creator>AzamonTuscomer</dc:creator>
      <dc:date>2019-09-04T19:48:49Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3-day window buy-and-hold return</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586242#M167334</link>
      <description>Thank you very much for your help! I really appreciate it!!</description>
      <pubDate>Wed, 04 Sep 2019 19:50:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-day-window-buy-and-hold-return/m-p/586242#M167334</guid>
      <dc:creator>AzamonTuscomer</dc:creator>
      <dc:date>2019-09-04T19:50:24Z</dc:date>
    </item>
  </channel>
</rss>

