- // Noncalendar years: http://www.stata-journal.com/sjpdf.html?articlenum=st0394
- * Example generated by -dataex-. To install: ssc install dataex
- clear
- input int id str10 Date double RET
- 14593 "1998/01/30" .395
- 14593 "1998/02/27" .29
- 14593 "1998/03/31" .164
- 14593 "1998/04/30" -.005
- 14593 "1998/05/29" -.027
- 14593 "1998/06/30" .077
- 14593 "1998/07/31" .20700000000000002
- 14593 "1998/08/31" -.099
- 14593 "1998/09/30" .222
- 14593 "1998/10/30" -.026000000000000002
- 14593 "1998/11/30" -.14
- 14593 "1998/12/31" .28200000000000003
- 14593 "1999/01/29" .006
- 14593 "1999/02/26" -.155
- 14593 "1999/03/31" .032
- 14593 "1999/04/30" .28
- 14593 "1999/05/28" -.042
- 14593 "1999/06/30" .051000000000000004
- 14593 "1999/07/30" .202
- 14593 "1999/08/31" .17200000000000001
- 14593 "1999/09/30" -.03
- 14593 "1999/10/29" .266
- 14593 "1999/11/30" .222
- 14593 "1999/12/31" .05
- 14593 "2000/01/31" .009000000000000001
- 14593 "2000/02/29" .105
- 14593 "2000/03/31" .185
- 14593 "2000/04/28" -.08700000000000001
- 14593 "2000/05/31" -.323
- 14593 "2000/06/30" .247
- 14593 "2000/07/31" -.03
- 14593 "2000/08/31" .199
- 14593 "2000/09/29" -.577
- 14593 "2000/10/31" -.24
- 14593 "2000/11/30" -.157
- 14593 "2000/12/29" -.098
- end
- * convert to monthly date
- gen mdate = mofd(daily(Date,"YMD"))
- format %tm mdate
- isid id mdate, sort
- // from May to April
- gen FY = year(dofm(mofd(daily(Date, "YMD")) - 4))
- * no product function in Stata, sum logs instead
- gen double lret = log(1+RET)
- rangestat (sum) lret (count) lret, interval(mdate -11 0) by(id FY)
- gen wanted = exp(lret_sum) - 1 if lret_count == 12
- list Date FY wanted, sepby(FY)