<?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 standard deviation on rolling basis in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523744#M142334</link>
    <description>&lt;P&gt;If you don't specify a time variable (with the ID statement) proc expand assumes 1 row = 1 time unit. So you can simply say:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=a;
	by PERMNO Date;
run;

proc expand data=a out=result;
	by PERMNO;
	convert Returns = Returns_std / transformout=(movstd 60);
run;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 28 Dec 2018 05:28:08 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2018-12-28T05:28:08Z</dc:date>
    <item>
      <title>Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523714#M142319</link>
      <description>&lt;P&gt;Hi Experts,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'd like to calculate the 60-month standard deviation(sigma) and I have the monthly returns for each company. Now I want to compute the standard deviations for the lat 60-month observations on the rolling bases. For example, I want the standard deviation of stock returns from 1987-02 to 1992-01 to be the sigma of 1992-01. &amp;nbsp;Do you know any good solutions?&lt;/P&gt;&lt;P&gt;Thanks a lot!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ADou&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 27 Dec 2018 22:37:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523714#M142319</guid>
      <dc:creator>ADou</dc:creator>
      <dc:date>2018-12-27T22:37:11Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523718#M142323</link>
      <description>&lt;P&gt;&lt;STRONG&gt;proc expand&lt;/STRONG&gt; (part of SAS/ETS) would be a &lt;STRONG&gt;very good&lt;/STRONG&gt; solution. It has plenty of moving window operations, including the STD.&lt;/P&gt;</description>
      <pubDate>Thu, 27 Dec 2018 22:47:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523718#M142323</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-12-27T22:47:07Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523722#M142326</link>
      <description>&lt;P&gt;Thanks a lot! But I'm not very familiar with proc expand, could you please give me some example codes? And I've attached a printscreen of mt data.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data.png" style="width: 473px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/25901iE76902BF49AB65C3/image-size/large?v=v2&amp;amp;px=999" role="button" title="data.png" alt="data.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Thu, 27 Dec 2018 23:02:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523722#M142326</guid>
      <dc:creator>ADou</dc:creator>
      <dc:date>2018-12-27T23:02:17Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523735#M142331</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=a;
	by PERMNO Date;
run;
proc expand data=a out=result(drop=time);
	by PERMNO;
	convert Returns = Returns_movstd / transformout=(movstd 60*30);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 28 Dec 2018 02:44:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523735#M142331</guid>
      <dc:creator>learsaas</dc:creator>
      <dc:date>2018-12-28T02:44:59Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523744#M142334</link>
      <description>&lt;P&gt;If you don't specify a time variable (with the ID statement) proc expand assumes 1 row = 1 time unit. So you can simply say:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=a;
	by PERMNO Date;
run;

proc expand data=a out=result;
	by PERMNO;
	convert Returns = Returns_std / transformout=(movstd 60);
run;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 28 Dec 2018 05:28:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523744#M142334</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-12-28T05:28:08Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523843#M142380</link>
      <description>&lt;P&gt;Thanks a lot!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ADou&lt;/P&gt;</description>
      <pubDate>Sat, 29 Dec 2018 22:10:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523843#M142380</guid>
      <dc:creator>ADou</dc:creator>
      <dc:date>2018-12-29T22:10:29Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523844#M142381</link>
      <description>&lt;P&gt;Thank you!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ADou&lt;/P&gt;</description>
      <pubDate>Sat, 29 Dec 2018 22:11:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523844#M142381</guid>
      <dc:creator>ADou</dc:creator>
      <dc:date>2018-12-29T22:11:08Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523872#M142394</link>
      <description>&lt;P&gt;CODE NOT TESTED .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table have as
 select *,
(select std(return) from have where permno=a.permno and
 date between intnx('month',a.date,-60) and a.date) 
 as rolling_std
  from have as a;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 30 Dec 2018 11:19:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/523872#M142394</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-12-30T11:19:04Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/524010#M142448</link>
      <description>&lt;P&gt;Thanks for your example and it works well. But I still have a question. Since I have to delete the companies that have returns less than 12 months, so I need the number of standard deviation of each company in one rolling(60 months). It is something like nrolling_std. How should I modify the codes?&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jan 2019 20:21:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/524010#M142448</guid>
      <dc:creator>ADou</dc:creator>
      <dc:date>2019-01-01T20:21:25Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/524011#M142449</link>
      <description>&lt;P&gt;Thanks KSharp! It takes a long time to run the sql.&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;And I still have a question. Since I have to delete the companies that have returns less than 12 months, so I need the number of standard deviation of each company in one rolling(60 months). It is something like nrolling_std. How should I modify the codes?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jan 2019 20:25:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/524011#M142449</guid>
      <dc:creator>ADou</dc:creator>
      <dc:date>2019-01-01T20:25:30Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate standard deviation on rolling basis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/524066#M142476</link>
      <description>&lt;P&gt;OK.just add one more clause.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table have as
 select *,
(select std(return) from have where permno=a.permno and
 date between intnx('month',a.date,-60) and a.date) 
 as rolling_std,
(select count(*) from have where permno=a.permno and
 date between intnx('month',a.date,-60) and a.date) 
 as n_rolling_std
  from have as a;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 02 Jan 2019 12:21:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-standard-deviation-on-rolling-basis/m-p/524066#M142476</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-01-02T12:21:12Z</dc:date>
    </item>
  </channel>
</rss>

