ich habe ein datenset mit 1000 firmen über 10 jahre, monatliche daten. Nun möchte ich für jede Firma über ein "rolling window" von 2 Jahren den Market Beta koeffizienten ermitteln. Die regressinosgleichung ist wie folgt:
- Code: Alles auswählen
reg return x1,r
Allerdings habe ich ein unbalanced panel, und somit für einige firmen keine daten in den Frühen Zeitperioden meines samples. Daraus entsteht die problematik, dass wenn meine for-schleife auf eine solche Firma in den frühen jahren meines samples trifft, dass die regression abgebrochen wird. Deshalb habe ich nun eine weitere variable definiert, die den wert =1 annimmt, wenn das jeweilige regressionsfenster für die jeweilige Firma alle daten enthält:
- Code: Alles auswählen
Beispielhaftes zeitfenster von 4 monaten:
ID Return x1 Zeit Periode
1 1% 5% 01/1990 1
1 2% 6% 02/1990 1
1 3% 7% 03/1990 1
1 4% 8% 04/1990 1
2 .% 5% 01/1990 0
2 .% 6% 02/1990 0
2 3% 7% 03/1990 1
2 4% 8% 04/1990 1
Die von mir geschriebene For-Schleife für eine "rolling window"-regression sieht so aus:
- Code: Alles auswählen
forvalues k = 1/1000 { ///Definiert die ID
matrix E = (0,0,0) /// Kreiert matrix um koeffizienten abzuspeichern
forvalues i=528/627{ /// Definiert Zeitfenster aka rolling window
quietly reg return x1 if (id==`k' & month>=`i'-24 & month<`i'), r /// regression der Firma 'k' über ein zeitfenster von 24 monaten
matrix E = E\(`i',_b[msciwde], _se[msciwde]) ///abspeichern der werte in einer matrix
}
}
Nun würde ich also gerne die Regression NUR durchführen, wenn meine "perioden Variable" =1 ist und ansonsten soll die Forschleife zum nächten monat (derselben ID) springen. Also in etwa:
Wenn Period ==1 für alle month>=`i'-24 & month<`i'
DANN laufe die regression
Ansonsten springe zum nächten zeitfenster der ID (also count `i'+1) und prüfe (Wenn period==1 für alle .....)
Ich wäre euch für jede HIlfe überaus dankbar!