# Using rolling returns in a multivariate linear regression?

I am trying to use fundamental factors such as PE, BV, & CFO in a multivariate linear regression with the response variable being the rolling 1 month returns. But this approach seems flawed as the autocorrelation of the residuals is to high and the Durbin Watson test points also to such flaws. What is the best what to use long time horizon rolling returns in a linear regression?

-
Incidentally, you have stumbled upon one of the skeletons in the closet for the Fama-French type multiple regression techniques. Many academic papers suffer from exactly the issue you describe (autocorrelated residuals) but it's simply not discussed. –  Quant Guy Aug 9 '12 at 19:36
I can't seem to find any deterministic solutions and I am not conducting such a study for academic purposes so I can't afford to be lazy with assumptions. I will post back once I have some results of interest –  user1129988 Aug 28 '12 at 9:26
why not ARMA(n,m)-GARCH(p,q)? several users below actually suggested just an arma model.. –  pyCthon Nov 16 '12 at 3:58
Have a look at the several serial correlation robust bootstrap estimators. –  Jase Dec 7 '12 at 2:03

Why not fit an ARMA model to the rolling returns first, and then model the residuals in your regression equation? That way you should be removing most of the effects of auto-correlation.

-
where can I read more about this approach of using an ARMA model? ARMA model will help to deal the smoothing for rolling returns but I dont quite understand what you mean by model the residuals? –  user1129988 Jul 11 '12 at 8:10
Are you looking for practical examples of ARMA models in a language like R or more a theoretical explanation? By modelling the residuals I meant you first fit an ARMA model, then run predictions from this model and the residuals are the actual returns minus the predicted returns. You use the residuals (which if you choose your ARMA model correctly, should be free from autocorrelation) instead of the rolling returns in your model. Note: You will likely want to fit the ARMA model on a rolling window like you would a rolling mean. –  psandersen Jul 11 '12 at 9:50
Alternatively you could look at including your predictors as exogenous variables in your ARMA process. –  psandersen Jul 11 '12 at 9:50
I am using matlab. if there are any practical examples for using an ARMA model approach that would be great. I still don't quite grasp how the ARMA model is supposed to work.. –  user1129988 Jul 12 '12 at 6:56
I dont know any examples in matlab unfortunately, but I found plenty using R (my language of choice). You may find the series of blog posts at theaverageinvestor.wordpress.com/2011/04/14/… useful, and a number of trading strategies with code discussed at systematicinvestor.wordpress.com/?s=garch (for example, his use of rolling regression for factor analysis seems similar in principle to what you want to do.) Since you seem to be at the prototyping stage, might make sense to play around with some of these examples in R first. Hope this helps. –  psandersen Jul 12 '12 at 19:34

It simply points to the fact that your model as stands does not have much explanatory power of monthly returns. One reason could be of a observation period mismatch. I am not a fundamental type of guy, but I imagine that the monthly returns are measured over too short a period (1 month) while most fundamental factors are updated on a quarterly basis (sometimes semi-annually or annually depending on local market regulations). Thus, changes or absolute levels in cash flows on a quarterly basis may not be able to explain changes in monthly returns. Can you run the same model again but use quarterly returns (or match the periodicity of the independent variables periodicity) and report back?

-
once I difference (once) the rolling returns and the factors it seems to handle any issues that may violate the requirements of the OLS.. I still think I am missing something? –  user1129988 Jul 10 '12 at 13:32

Try fitting a model with ARMA errors?

However, if by "rolling returns" you imply a moving average of returns or some QoQ or YoY return series, which has much persistence, I am not so sure what the right way to proceed really is (with the exception that you can apply some corrections suggested in econometrics literature).

-

The rolling n month return contains autocorrelation by its very nature. This is most obvious in a two-period case where $R_{t}\equiv0.5r_{t}+0.5r_{t-1}$. This implies that $R_{t-1}\equiv0.5r_{t-1}+0.5r_{t-2}$ so that when you calculate the correlation between $R_{t}$ and $R_{t-1}$ it should be close to $0.5$ as a result of both containing a $R_{t-1}$ component.

Hence, it might be better off avoiding using the rolling return in the calculation. If you are using it because you are seeing better results, it is likely an artifact of the smoothing used to construct the rolling series. If you insist on using it, one option is to include the lag of the rolling return in the regression.

-
How is this related to the question at hand? The question was not about autocorrelation of the return series. –  Matt Wolf Jul 8 '12 at 6:15
I thought I was quite clear that I was talking about the autocorrelation of the rolling return series. –  John Jul 8 '12 at 13:10
same, it does not relate at all to autocorrelation in residuals. Maybe OP can specify what he means with "rolling returns", however, I am almost certain that he meant calculating returns for each given months rather than building something such as a moving average. If he calculated moving returns in ways you described in your post then I would agree with you but it would make zero sense to use absolute absolute fundamental factor values to regress over a moving average return series. It again all comes down to choosing matching periodicity (see my suggested answer) –  Matt Wolf Jul 9 '12 at 2:24
For equities, I wouldn't think there would be much of an issue with autocorrelation if he were only looking at one month returns. But you're right that the OP is not exactly clear. –  John Jul 9 '12 at 3:55
Would it be valid(correct) to difference the rolling returns in order to assess the robustness of the regression? and then after convert it to levels data.. in matlab; diff(rolling returns) --> run regstats(x,y) --> obtain regression stats data --> return to levels data: cumsum(yhat) in order to obtain prediction? –  user1129988 Jul 10 '12 at 12:18