I am doing a study correlating stock market (S&P 500) valuations to future annual market returns and want to use time series operators to find the lag that produces the best fit. Being new to Stata my first approach was to generate 20 new variables representing forward annual returns for each year 1 through 20. My data is monthly so the variable, for example, for 6-year forward returns is: sp500_6yf_ret = (((f72.sp500/sp500)^(1/6)) -1). I can then do 20 correlations of the valuation variable against each of these 20 return variables and find the time period with the highest correlation. The approach works but is sloppy and the output is limiting. I've searched the documentation and Statlist for help on this but I am stumped. Is there a single time series operator that would allow me to iterate/loop through the S&P500 monthly price data to generate the time lag that best correlates valuation with future annual returns?