<?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: Weighted Average  of a stock price in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229685#M41584</link>
    <description>&lt;P&gt;Hi Sandeep,&lt;BR /&gt;&lt;BR /&gt;Just to make sure, are the rows with the value "FRESH" in the variable 'FLAG' to be considered as the "Buy" you mentioned in your first message ? I would expect to have a Buy as first operation for each account (you cannot sell something you haven't bought earlier in my point of view).&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Florent&lt;/P&gt;</description>
    <pubDate>Tue, 13 Oct 2015 12:51:33 GMT</pubDate>
    <dc:creator>Florent</dc:creator>
    <dc:date>2015-10-13T12:51:33Z</dc:date>
    <item>
      <title>Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229521#M41547</link>
      <description>&lt;P&gt;Dear All,&lt;/P&gt;&lt;P&gt;I am having trouble coding the average pricing of stock.&lt;/P&gt;&lt;P&gt;Data&lt;/P&gt;&lt;P&gt;FLAG QTY PRICE AVG_PRICE CALCULATION&lt;BR /&gt;Buy 50 100&lt;BR /&gt;Buy 50 101&lt;BR /&gt;Buy 50 102&lt;BR /&gt;Sell 100 101.5 101 (50*100+50*101+50*102)/150&lt;BR /&gt;Buy 50 99&lt;BR /&gt;Sell 50 99.5 100.5 (50*100+50*101+50*102+50*99)/(150+50)&lt;/P&gt;&lt;P&gt;I need to generate weighted average price against flag 'S' as shown above with calculation how to calculate avg_price.&lt;BR /&gt;In case of first sell,I need weighted average price of all buys. total quantity purchased before first sell is 150 and quantity sold is 100.&lt;BR /&gt;Balance quanity is 50. To generate price against second 'Sell' we nee to take average of first 3 buys and 4th buy.&lt;/P&gt;&lt;P&gt;Kindly help me out.&lt;/P&gt;&lt;P&gt;Regards&lt;BR /&gt;Sandeep Gupta&lt;/P&gt;</description>
      <pubDate>Mon, 12 Oct 2015 11:22:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229521#M41547</guid>
      <dc:creator>san7981</dc:creator>
      <dc:date>2015-10-12T11:22:35Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229556#M41554</link>
      <description>&lt;P&gt;Hello Sandeep,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code here below should&amp;nbsp;do the job:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data results (drop= SUM_:);
	set input;

	retain SUM_COST SUM_QTY;

	if _N_ = 1 then do;
		SUM_COST = 0;
		SUM_QTY = 0;
	end;

	if strip(upcase(Flag)) = 'BUY' then do;
		SUM_COST = SUM(SUM_COST, QTY * PRICE);
		SUM_QTY = SUM(SUM_QTY, QTY);
		AVG_PRICE = .;
	end; else

	if strip(upcase(Flag)) = 'SEL' then do;
		AVG_PRICE = SUM_COST / SUM_QTY;
	end;

run;&lt;/PRE&gt;
&lt;P&gt;Considering that the content of your "input" dataset has the following colomns: FLAG, QTY, PRICE.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please let me know should there be something missing in my answer.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Florent&lt;/P&gt;</description>
      <pubDate>Mon, 12 Oct 2015 16:05:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229556#M41554</guid>
      <dc:creator>Florent</dc:creator>
      <dc:date>2015-10-12T16:05:21Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229641#M41575</link>
      <description>&lt;P&gt;Hi Florent,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for a quick reply.&lt;/P&gt;&lt;P&gt;I am getting the desired output for a single account. But if there are multiple accounts then the code is not giving desired output.&lt;/P&gt;&lt;P&gt;I am attaching the sample data for multiple accounts. Kindly help me out with this problem.&lt;/P&gt;&lt;P&gt;Sample data is as below:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ACCOUNT_NO&lt;/TD&gt;&lt;TD&gt;TRADE_DATE&lt;/TD&gt;&lt;TD&gt;FLAG&lt;/TD&gt;&lt;TD&gt;QTY&lt;/TD&gt;&lt;TD&gt;PRICE&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6233.75&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3-Mar-14&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6242.1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6250.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6249&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6251.2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6267.8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;6269.95&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6291.65&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6303.35&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6333&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5-Mar-14&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;TD&gt;6341&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1-Apr-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;6751&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1-Apr-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;6761&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4-Apr-14&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;6739&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4-Apr-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;6769&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;9-Apr-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;6795&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;9-Apr-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;6828&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;15-Apr-14&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;6787&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8858&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;18-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;8951.375&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;26-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8750&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8938&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8950&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8961.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8949.8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;20-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;8857.2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;20-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8888&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;20-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8848.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;23-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;8859.225&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;23-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8863&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;23-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;75&lt;/TD&gt;&lt;TD&gt;8740&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;24-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8780.8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;24-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8743&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;26-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8684.35&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8924.35&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8990&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;26-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;8766.775&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Sandeep&lt;/P&gt;</description>
      <pubDate>Tue, 13 Oct 2015 06:05:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229641#M41575</guid>
      <dc:creator>san7981</dc:creator>
      <dc:date>2015-10-13T06:05:19Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229685#M41584</link>
      <description>&lt;P&gt;Hi Sandeep,&lt;BR /&gt;&lt;BR /&gt;Just to make sure, are the rows with the value "FRESH" in the variable 'FLAG' to be considered as the "Buy" you mentioned in your first message ? I would expect to have a Buy as first operation for each account (you cannot sell something you haven't bought earlier in my point of view).&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Florent&lt;/P&gt;</description>
      <pubDate>Tue, 13 Oct 2015 12:51:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229685#M41584</guid>
      <dc:creator>Florent</dc:creator>
      <dc:date>2015-10-13T12:51:33Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229692#M41586</link>
      <description>Hi Florent&lt;BR /&gt;&lt;BR /&gt;Fresh is buy and cover is sell.&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;Sandeep</description>
      <pubDate>Tue, 13 Oct 2015 13:18:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229692#M41586</guid>
      <dc:creator>san7981</dc:creator>
      <dc:date>2015-10-13T13:18:20Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229731#M41594</link>
      <description>&lt;P&gt;Hi Sandeep,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Would the following version of the code&amp;nbsp;do what you want ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data results (drop= ACCOUNT SUM_:);
	set input;

	retain ACCOUNT SUM_COST SUM_QTY;

	if ACCOUNT ne ACCOUNT_NO then do;
		ACCOUNT = ACCOUNT_NO;
		SUM_COST = 0;
		SUM_QTY = 0;
	end;

	if strip(upcase(Flag)) = 'FRESH' then do;
		SUM_COST = SUM(SUM_COST, QTY * PRICE);
		SUM_QTY = SUM(SUM_QTY, QTY);
		AVG_PRICE = .;
	end; else

	if strip(upcase(Flag)) = 'COVER' then do;
		AVG_PRICE = SUM_COST / SUM_QTY;
	end;

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's important that all the data related to the same Account are consecutive (i.e. first all lines related to the account 1 then the ones of the account 2, ...etc) in your input otherwise this will not work as expected.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Florent&lt;/P&gt;</description>
      <pubDate>Tue, 13 Oct 2015 15:58:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229731#M41594</guid>
      <dc:creator>Florent</dc:creator>
      <dc:date>2015-10-13T15:58:33Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229844#M41633</link>
      <description>&lt;P&gt;Dear Florent,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The code you shared is not giving the desired output. I am attaching excel containing desired output with formula to calculate the output. Let me know in case you require extra information.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ACCOUNT_NO&lt;/TD&gt;&lt;TD&gt;TRADE_DATE&lt;/TD&gt;&lt;TD&gt;FLAG&lt;/TD&gt;&lt;TD&gt;QTY&lt;/TD&gt;&lt;TD&gt;PRICE&lt;/TD&gt;&lt;TD&gt;Desired_AVG_PRICE&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6233.75&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3-Mar-14&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6242.1&lt;/TD&gt;&lt;TD&gt;6233.75&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6250.3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6249&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6251.2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6267.8&lt;/TD&gt;&lt;TD&gt;6250.166667&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;6269.95&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6291.65&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6303.35&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4-Mar-14&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;6333&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5-Mar-14&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;TD&gt;6341&lt;/TD&gt;&lt;TD&gt;6277.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8858&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8890&lt;/TD&gt;&lt;TD&gt;8858&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;18-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;8951.375&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;26-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8750&lt;/TD&gt;&lt;TD&gt;8951.375&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8938&lt;/TD&gt;&lt;TD&gt;8951.375&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8950&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8961.7&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8949.8&lt;/TD&gt;&lt;TD&gt;8961.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;20-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;8857.2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;20-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8888&lt;/TD&gt;&lt;TD&gt;8857.2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;20-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8848.3&lt;/TD&gt;&lt;TD&gt;8857.2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;23-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;8859.225&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;23-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8863&lt;/TD&gt;&lt;TD&gt;8859.225&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;23-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8740&lt;/TD&gt;&lt;TD&gt;8859.225&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;24-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8743&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;26-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8684.35&lt;/TD&gt;&lt;TD&gt;8743&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8924.35&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;28-Feb-15&lt;/TD&gt;&lt;TD&gt;COVER&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;8990&lt;/TD&gt;&lt;TD&gt;8924.35&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;26-Feb-15&lt;/TD&gt;&lt;TD&gt;FRESH&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;8766.775&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Sandeep&lt;/P&gt;</description>
      <pubDate>Wed, 14 Oct 2015 05:34:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229844#M41633</guid>
      <dc:creator>san7981</dc:creator>
      <dc:date>2015-10-14T05:34:07Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229945#M41652</link>
      <description>Hello Sandeep,&lt;BR /&gt;&lt;BR /&gt;I don't understand why the logic to calculate the DESIRED_AVG_PRICE of the cell F7 of your Excel does not take into account the QTY and PRICE of the of row 2, whereas the calculation of the DESIRED_AVG_PRICE of the cell F12 of your Excel takes into account the QTY and PRICE values of the rows 4 to 6. It seems to me that the logic is not in aligned...&lt;BR /&gt;&lt;BR /&gt;I would expect to find 6246.0625 as DESIRED_AVG_PRICE in the cell F7 of your excel (calculated as with the formula =(D4*E4+D5*E5+D6*E6+D2*E2)/200).&lt;BR /&gt;&lt;BR /&gt;Kr,&lt;BR /&gt;Florent</description>
      <pubDate>Wed, 14 Oct 2015 17:41:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/229945#M41652</guid>
      <dc:creator>Florent</dc:creator>
      <dc:date>2015-10-14T17:41:21Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/231320#M42065</link>
      <description>&lt;P&gt;Hi Florent,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please find the attached excel. I have mentioned steps how to calculate weighted avg price. Kindly let me know if have any doubts regarding data or logic.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Sandeep&lt;/P&gt;</description>
      <pubDate>Fri, 23 Oct 2015 09:36:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/231320#M42065</guid>
      <dc:creator>san7981</dc:creator>
      <dc:date>2015-10-23T09:36:56Z</dc:date>
    </item>
    <item>
      <title>Re: Weighted Average  of a stock price</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/242411#M45000</link>
      <description>&lt;P&gt;Hi Sandeep,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sorry for the delay but I had a lot to do on my projects.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I don't know if you have solved your problem in the meantime but I'll still give it a last try. Please find below a new SAS program which, according to the logic I saw in your Excel, should match with your expectations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do not hesitate to comment the DROP statements in the code&amp;nbsp;so that you can have a look at the temporary variables that are created. Also, adding PUT statements before, inside, and&amp;nbsp;&amp;nbsp;after the DO loops may help in visualizing what is happening during the execution of the datasteps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kind regards,&lt;/P&gt;
&lt;P&gt;Florent&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data tmp_Results (drop= tmp_: len_:);

	set input;

	length List_Row List_Qty List_Price $1000 tmp_Row $100;
	retain List_Row List_Qty List_Price;

	tmp_row_num = _N_;
	tmp_Total_Qty = Qty;

	/* To keep exactly the same amount of rows as in the excel example */
	if tmp_row_num &amp;lt;= 22 then do;

		/* In case of Fresh, add the values to the lists */
		if strip(upcase(Flag)) = 'FRESH' then do;
			List_Row = strip(List_Row) || strip(put(tmp_row_num, best12.))|| ';';
			List_Qty = strip(List_Qty) || strip(put(Qty, best12.))|| ';';
			List_Price = strip(List_Price) || strip(put(Price, best12.))|| ';';
		end; else

		/* In case of Cover, remove values from the lists */
		if strip(upcase(Flag)) = 'COVER' then do;

			do until (tmp_Total_Qty &amp;lt;= 0);
				tmp_Row = strip(scan(List_Row, 1, ';') || ';');
				tmp_Qty = input(scan(List_Qty, 1, ';'), best12.);
				tmp_Price = strip(scan(List_Price, 1, ';') || ';');

				len_Price = lengthn(strip(tmp_Price));
				len_Qty = lengthn(strip(scan(List_Qty, 1, ';') || ';'));

				if tmp_Qty &amp;gt;= tmp_Total_Qty and tmp_Total_Qty &amp;gt; 0 then do;
					tmp_Total_Qty = tmp_Total_Qty - tmp_Qty;

					if tmp_Total_Qty &amp;gt;= 0 then do;
						List_Row = strip(tranwrd(List_Row, strip(tmp_Row), ''));
						List_Qty = strip(substr(List_Qty, len_Qty+1));
						List_Price = strip(substr(List_Price, len_Price+1));
					end; else
					if tmp_Total_Qty &amp;lt; 0 then do;
						List_Qty = strip(put(-tmp_Total_Qty, best12.)) || ';' || strip(substr(List_Qty, len_Qty+1));
					end;
				end; else
				if tmp_Total_Qty &amp;gt; tmp_Qty and tmp_Total_Qty &amp;gt; 0 then do;
					tmp_Total_Qty = tmp_Total_Qty - tmp_Qty;

					List_Row = strip(tranwrd(List_Row, strip(tmp_Row), ''));
					List_Qty = strip(substr(List_Qty, len_Qty+1));
					List_Price = strip(substr(List_Price, len_Price+1));
				end;
			end;
		end;

		output tmp_Results;
	end;
run;


data Results (drop= List_: tmp_:);
	set tmp_Results;

	List_Row = lag1(List_Row);
	List_Qty = lag1(List_Qty);
	List_Price = lag1(List_Price);

	if strip(upcase(Flag)) = 'COVER' then do;
		tmp_nb_items = countw(List_Row);
		tmp_numerator = 0;
		tmp_denominator = 0;

		do tmp_i=1 to tmp_nb_items;
			tmp_Qty = input(scan(List_Qty, tmp_i, ';'), best12.);
			tmp_Price = input(scan(List_Price, tmp_i, ';'), best12.);

			tmp_numerator = sum(tmp_numerator, tmp_Qty * tmp_Price);
			tmp_denominator = sum(tmp_denominator, tmp_Qty);
		end;

		avg_price = divide(tmp_numerator, tmp_denominator);
	end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 08 Jan 2016 17:36:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Weighted-Average-of-a-stock-price/m-p/242411#M45000</guid>
      <dc:creator>Florent</dc:creator>
      <dc:date>2016-01-08T17:36:02Z</dc:date>
    </item>
  </channel>
</rss>

