Try something like:
bysort firm (day) : gen Cret=exp(sum(ln(1+ret)))-1
Antoine
Hua Pan 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
>
>
>
>
>
>
--
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.
*
* 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/