<?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 Repeated Calculation across leading observations in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Repeated-Calculation-across-leading-observations/m-p/264498#M51882</link>
    <description>&lt;P&gt;Using SAS 9.4, I want to calculate compound company stock returns following intermittent director trades.&amp;nbsp;Many companies have director trades on consecutive days or several days apart, yet the compounding period extends up to 60 days.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;There are 2&amp;nbsp;compounding periods&amp;nbsp;for the calculation of returns:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Until the director-trade announcement date&amp;nbsp;plus one day, usually up to 6 days.&lt;/LI&gt;&lt;LI&gt;60 days after the director trade.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A simplified data sample looks like this:&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;Company&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;date&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;director_tradeID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Return+1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;trade_announcementdate&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;return_count&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30APR2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;a&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;06MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;b&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1.01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;06MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;c&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.98&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.88&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1.22&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA (up to 1,500 observations)&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAB&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAB&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;(similar data to AAA)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Where:&lt;/P&gt;&lt;P&gt;company&lt;/P&gt;&lt;P&gt;date = trading date:&amp;nbsp; thinly traded stocks have missing dates – no trade means no observation.&lt;/P&gt;&lt;P&gt;Return+1 = value of stock return plus 1. Return value may be for a period of more than one day.&lt;/P&gt;&lt;P&gt;director_tradeID = = signals a director’s trade&lt;/P&gt;&lt;P&gt;trade_announcement_date = usually up to 6 days after trading date.&lt;/P&gt;&lt;P&gt;return_count = the number of days between consecutive observations&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My preliminary code for calculating compound returns up to 60 observations from the date of director trade, and the error messages, are as follows:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Data &lt;/EM&gt;returns2&lt;EM&gt; ;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Set &lt;/EM&gt;returns;&lt;/P&gt;&lt;P&gt;By company date;&lt;/P&gt;&lt;P&gt;if (director_tradeID &lt;STRONG&gt;' '&lt;/STRONG&gt;) then do;&lt;/P&gt;&lt;P&gt;x = &amp;nbsp;_n_&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;y = (_n_ + 60);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;call symputx (&lt;STRONG&gt;'firstobserv', x&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;call symputx (&lt;STRONG&gt;'observ', y&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Set returns&lt;EM&gt;&amp;nbsp;&amp;nbsp; (firstobs = &amp;amp;firstobserv&amp;nbsp;&amp;nbsp; obs = &amp;amp;observ&amp;nbsp; &lt;/EM&gt;)&lt;EM&gt; ;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;if first.company then do;&lt;/P&gt;&lt;P&gt;compoundreturn_plus1 = 1;&lt;/P&gt;&lt;P&gt;compoundreturn_daycount&amp;nbsp; = 0;&lt;/P&gt;&lt;P&gt;End;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Else do;&lt;/P&gt;&lt;P&gt;compoundreturn_plus1 = (compoundreturn_plus1 * return);&lt;/P&gt;&lt;P&gt;compoundreturn_daycount&amp;nbsp; = (compoundreturn_daycount&amp;nbsp; + return_count);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;End;&lt;/P&gt;&lt;P&gt;Retain compoundreturn_plus1 compoundreturn_daycount;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Run; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The identical error messages for the firstobs and obs options are:&lt;/P&gt;&lt;P&gt;&lt;FONT color="#993300"&gt;ERROR 23-7: Invalid value for FIRSTOBS option&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#993300"&gt;ERROR: Invalid number conversion on &amp;amp;.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#339966"&gt;WARNING: Apparent symbolic reference FIRSTOBSERV not resolved.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#3366FF"&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#3366FF"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;Proc sql methods to calculate returns may be more efficient, so I’m open to alternate suggestions.&lt;/P&gt;&lt;P&gt;Many thanks,&lt;/P&gt;&lt;P&gt;TT.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 18 Apr 2016 08:07:02 GMT</pubDate>
    <dc:creator>tangotrain</dc:creator>
    <dc:date>2016-04-18T08:07:02Z</dc:date>
    <item>
      <title>Repeated Calculation across leading observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Repeated-Calculation-across-leading-observations/m-p/264498#M51882</link>
      <description>&lt;P&gt;Using SAS 9.4, I want to calculate compound company stock returns following intermittent director trades.&amp;nbsp;Many companies have director trades on consecutive days or several days apart, yet the compounding period extends up to 60 days.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;There are 2&amp;nbsp;compounding periods&amp;nbsp;for the calculation of returns:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Until the director-trade announcement date&amp;nbsp;plus one day, usually up to 6 days.&lt;/LI&gt;&lt;LI&gt;60 days after the director trade.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A simplified data sample looks like this:&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;Company&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;date&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;director_tradeID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Return+1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;trade_announcementdate&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;return_count&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30APR2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;a&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;06MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;b&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1.01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;06MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;c&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.98&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.88&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10MAY2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1.22&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAA (up to 1,500 observations)&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAB&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;AAB&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;(similar data to AAA)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Where:&lt;/P&gt;&lt;P&gt;company&lt;/P&gt;&lt;P&gt;date = trading date:&amp;nbsp; thinly traded stocks have missing dates – no trade means no observation.&lt;/P&gt;&lt;P&gt;Return+1 = value of stock return plus 1. Return value may be for a period of more than one day.&lt;/P&gt;&lt;P&gt;director_tradeID = = signals a director’s trade&lt;/P&gt;&lt;P&gt;trade_announcement_date = usually up to 6 days after trading date.&lt;/P&gt;&lt;P&gt;return_count = the number of days between consecutive observations&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My preliminary code for calculating compound returns up to 60 observations from the date of director trade, and the error messages, are as follows:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Data &lt;/EM&gt;returns2&lt;EM&gt; ;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Set &lt;/EM&gt;returns;&lt;/P&gt;&lt;P&gt;By company date;&lt;/P&gt;&lt;P&gt;if (director_tradeID &lt;STRONG&gt;' '&lt;/STRONG&gt;) then do;&lt;/P&gt;&lt;P&gt;x = &amp;nbsp;_n_&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;y = (_n_ + 60);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;call symputx (&lt;STRONG&gt;'firstobserv', x&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;call symputx (&lt;STRONG&gt;'observ', y&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Set returns&lt;EM&gt;&amp;nbsp;&amp;nbsp; (firstobs = &amp;amp;firstobserv&amp;nbsp;&amp;nbsp; obs = &amp;amp;observ&amp;nbsp; &lt;/EM&gt;)&lt;EM&gt; ;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;if first.company then do;&lt;/P&gt;&lt;P&gt;compoundreturn_plus1 = 1;&lt;/P&gt;&lt;P&gt;compoundreturn_daycount&amp;nbsp; = 0;&lt;/P&gt;&lt;P&gt;End;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Else do;&lt;/P&gt;&lt;P&gt;compoundreturn_plus1 = (compoundreturn_plus1 * return);&lt;/P&gt;&lt;P&gt;compoundreturn_daycount&amp;nbsp; = (compoundreturn_daycount&amp;nbsp; + return_count);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;End;&lt;/P&gt;&lt;P&gt;Retain compoundreturn_plus1 compoundreturn_daycount;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Run; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The identical error messages for the firstobs and obs options are:&lt;/P&gt;&lt;P&gt;&lt;FONT color="#993300"&gt;ERROR 23-7: Invalid value for FIRSTOBS option&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#993300"&gt;ERROR: Invalid number conversion on &amp;amp;.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#339966"&gt;WARNING: Apparent symbolic reference FIRSTOBSERV not resolved.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#3366FF"&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#3366FF"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;Proc sql methods to calculate returns may be more efficient, so I’m open to alternate suggestions.&lt;/P&gt;&lt;P&gt;Many thanks,&lt;/P&gt;&lt;P&gt;TT.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Apr 2016 08:07:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Repeated-Calculation-across-leading-observations/m-p/264498#M51882</guid>
      <dc:creator>tangotrain</dc:creator>
      <dc:date>2016-04-18T08:07:02Z</dc:date>
    </item>
    <item>
      <title>Re: Repeated Calculation across leading observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Repeated-Calculation-across-leading-observations/m-p/264500#M51883</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The macro variables within call symput functions can not be used in the same data step.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please read the section&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Problem Trying to Reference a SYMPUT-Assigned Value Before It Is Available&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;from this link:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000210266.htm" target="_blank"&gt;http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000210266.htm&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Apr 2016 08:15:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Repeated-Calculation-across-leading-observations/m-p/264500#M51883</guid>
      <dc:creator>Loko</dc:creator>
      <dc:date>2016-04-18T08:15:17Z</dc:date>
    </item>
  </channel>
</rss>

