# Re: st: Cumulative return for each firm each day

 From Austin Nichols To statalist@hsphsun2.harvard.edu Subject Re: st: Cumulative return for each firm each day Date Thu, 12 Mar 2009 13:37:05 -0400

Hua Pan <panhua@gmx.de>:
Here are two methods in one example (results may differ if you have
breaks in time series or missing data):

webuse grunfeld, clear
g ret=invest/1500
bys company (year): g cumul=1+ret if _n==1
replace cumul=(1+ret)*l.cumul if mi(cumul)
replace cumul=cumul-1
bys company (year): g c=sum(ln(ret+1))
replace c=exp(c)-1
li year ret cumul c if company==1, noo clean

On Thu, Mar 12, 2009 at 12:27 PM, Hua Pan <panhua@gmx.de> wrote:
> Dear Statalisters�¼
>
> I want to loop over firms and days, in order to calculate cumulative daily return for each firm and from day 1 to day 30. That means,
>
> firm       day             ret        Cret
> 1            1              x1         x1
> 1            2              x2        (1+x1)*(1+x2)-1
> …           …                …         …
> 1            30             x30       (1+x1)*(1+x2)*…(1+x30)-1
> 2            1
> …             …
> 2            30
> ..
> firm and day have numeric format.
>
> I tried:
>
> sort firm day
> generate Cret = 0
> levelsof firm, local(firms)
> levelsof day, local(days)
> foreach f of local firms {
> foreach d of local days {
> gen Cret(`f’, `d’) =  (1+Cret)*(1+ret)-1  if  firm == `f' & day == `d'
> replace Cret = Cret(`f’, `d’)  if firm == `f' & day >= `d'
> drop Cret(`f’, `d’)
> }
> }
>
>
> But it doesn’t seem to work. Have anyone idea about cumulative return or just cumulative sum for each firm and everyday, or just looping of this kind?
>
> Any help and suggestion would be greatly appreciated. Thank you very much in advance for your time.
>
> Best regards
>
> Hua

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/