Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
st: RE: RE: Calculate variances of subsamples
From
"Martin Weiss" <[email protected]>
To
<[email protected]>
Subject
st: RE: RE: Calculate variances of subsamples
Date
Wed, 2 Jun 2010 20:54:39 +0200
<>
So here is an example that avoids -postfile- for Lars` case:
***********
//create resultsfile
cap erase myfile.dta
di in red _rc
clear*
gen start=.
gen end=.
gen _stat_1=.
gen stock=.
gen str15 kindofreturn=""
save myfile, replace
//get "3105.dta"
clear*
//8 stocks
set obs 8
gen byte stock=_n
//5 time periods
expand 5
bys stock: gen byte time=_n
gen double exret=rnormal()
gen double msciret=rnormal()
gen double msftret=rnormal()
gen double appret=rnormal()
gen double geret=rnormal()
gen double pgret=rnormal()
gen double jnjret=rnormal()
gen double bpret=rnormal()
save 3105, replace
//-use- "3105"
u 3105, clear
//Return calculation
gen double grexret=ex[_n]/ex[_n-1]-1 if _n>1
gen double grmsciret=msci[_n]/msci[_n-1]-1 if _n>1
gen double grmsftret=msft[_n]/msft[_n-1]-1 if _n>1
gen double grappret=app[_n]/app[_n-1]-1 if _n>1
gen double grgeret=ge[_n]/ge[_n-1]-1 if _n>1
gen double grpgret=pg[_n]/pg[_n-1]-1 if _n>1
gen double grjnjret=jnj[_n]/jnj[_n-1]-1 if _n>1
gen double grbpret=bp[_n]/bp[_n-1]-1 if _n>1
//loop to get -rolling- results for each stock
//and each return
foreach ret in exret msciret msftret{
//start inner loop
su stock, mean
qui forv i=1/`r(max)'{
preserve
keep if stock==`i'
tsset time
rolling r(Var), window(2) clear: su `ret'
gen stock=`i'
gen kindofreturn="`ret'"
append using myfile
save myfile, replace
restore
}
//end inner loop
}
u myfile, clear
ren _stat_1 Variance
sort stock kindofreturn start
l, sepby(stock kindofreturn) noo
***********
HTH
Martin
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Martin Weiss
Sent: Mittwoch, 2. Juni 2010 20:27
To: [email protected]
Subject: st: RE: Calculate variances of subsamples
<>
You could of course issue the -rolling- call with -clear- present, -save-
the result to a new file and reload your "3105.dta" to start anew for the
next stock. The datasets thus -saved- could be -append-ed to form one big
dataset afterwards. -postfile- is also an option, as always.
BTW, you may be better of with the lag operator "L." for your return
calculations.
HTH
Martin
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Lars Knuth
Sent: Mittwoch, 2. Juni 2010 20:22
To: statalist
Subject: st: Calculate variances of subsamples
Dear listers,
I have to say thanks to Martin, the recommendation of rolling was
great. Unfortunately, I have now a few problems with the
implementation.
1. -rolling- works with the "clear" option, but without it does not
("rolling r(Var), window(60) clear: summarize exret" works)
2. I need the data to calculate and store the variances for more than
1000 stock price returns in the end, so can I somehow keep all the
data and then perform -rolling- in a loop?
3. Is there also an opportunity to perform the return calculation in a loop?
I am attaching parts of the code I have so far. Any ideas would be of
great help to me.
Thanks in advance!
clear*
use "C:\...\3105.dta", clear
gen int time=_n
* Return calculation
gen double exret=ex[_n]/ex[_n-1]-1 if _n>1
gen double msciret=msci[_n]/msci[_n-1]-1 if _n>1
gen double msftret=msft[_n]/msft[_n-1]-1 if _n>1
gen double appret=app[_n]/app[_n-1]-1 if _n>1
gen double geret=ge[_n]/ge[_n-1]-1 if _n>1
gen double pgret=pg[_n]/pg[_n-1]-1 if _n>1
gen double jnjret=jnj[_n]/jnj[_n-1]-1 if _n>1
gen double bpret=bp[_n]/bp[_n-1]-1 if _n>1
tsset time
* Rolling
rolling r(Var), window(60): summarize exret
rolling r(Var), window(60): summarize msciret
rolling r(Var), window(60): summarize msftret
*
* 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/
*
* 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/
*
* 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/