Take the 2-minute tour ×
Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. It's 100% free, no registration required.

I am reading Cochrane's lecture note here

He mentioned that when you regress annual return on time t on that of time t-1, you will have neither statistically significant nor economically significant slope.

I performed a quick test with python as follows:

import statsmodels.formula.api as smf
import pandas as pd
import pandas.io.data as web
import datetime as dt
ts_spy = web.get_data_yahoo("^GSPC", start="1/1/1929")
ts_ret = ts_spy.Close.pct_change()

df_reg = pd.concat([ts_ret.shift(1), ts_ret], axis=1)

df_reg.columns =["prev", "cur"]
results = smf.ols("cur ~ prev", data=df_reg).fit()
print results.summary()

The result I got was not as claimed in the note.

     OLS Regression Results                            
Dep. Variable:                    cur   R-squared:                       0.001
Model:                            OLS   Adj. R-squared:                  0.001
Method:                 Least Squares   F-statistic:                     12.60
Date:                Mon, 28 Apr 2014   Prob (F-statistic):           0.000387
Time:                        08:50:08   Log-Likelihood:                 52035.
No. Observations:               16180   AIC:                        -1.041e+05
Df Residuals:                   16178   BIC:                        -1.041e+05
Df Model:                           1                                         
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
Intercept      0.0003   7.64e-05      4.306      0.000         0.000     0.000
prev           0.0279      0.008      3.549      0.000         0.012     0.043
Omnibus:                     4891.255   Durbin-Watson:                   1.998
Prob(Omnibus):                  0.000   Jarque-Bera (JB):           298584.422
Skew:                          -0.614   Prob(JB):                         0.00
Kurtosis:                      24.009   Cond. No.                         103.
share|improve this question
Btw, upvoted for useful reference and nice code –  user12348 Apr 28 at 23:44

2 Answers 2

up vote 5 down vote accepted

Why do you have 16180 observations? Is this daily data over 64 years or higher frequency data? I am guessing so by the magnitude of the intercept. At any rate, your test power would be huge with this large sample size, meaning small relationships will be statistically significant.

What Cochrane said is contingent on data frequency. At a high frequency it is untrue that you would find only statistical insignificance, as returns are very positively autocorrelated at these high sampling frequencies.

share|improve this answer
The data is the daily returns from 1950-01-03 to last trading day. You are right that, in his note, it was based on annual data. Using annual return, the statistical significance disappears. If returns are positively auto-correlated at high sampling frequencies, does it mean people can take advantage of this? –  zsljulius Apr 28 at 13:34
Can you also please further illustrate the point on test power? Why when using a higher frequency sample results in detecting even small relationship? Thanks! –  zsljulius Apr 28 at 14:41
@zsljulius Google statistical power for that answer. Just because there's statistical significance doesn't mean you can make money. There are transaction costs, overfitting and other issues you need to be careful of. In addition, with sufficient power, a truly tiny in sample relationship can be significant, but even if you had known this ahead of time (!) you may be looking at an extremely tiny revenue from trading (because of the high power). –  user2763361 Apr 29 at 13:54

You are right. Daily or even monthly financial series have serial correlation and lag 1 is generally the most correlated. Over the year, many competing forces may act on the market to randomize the returns.

Not sure the purpose of this exercise you are doing, but you can remove this auto-correlation if you want, using ARCH/GARCH(1,1).

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.