Super newbie here and as per this thread am working on developing the code to back test a momentum strategy. I believe I was able to track down the code the author used on this page. Based on my rudimentary analysis of this code, I believe it will get me to an adjusted slope which is essentially an annualized exponential slope number * r-squared. Have I read that right?

P.S. There will be errors in here as I have not defined the periods.

//Determine the Adjusted Slope for each stock in the defined universe which is the exponential slope * R-squared for each stock in the defined universe.

 public double GetSlope()

 {

 double n = this.periods -1;

 double x, y;

 double[] xVals;

 double[] yVals;

 xVals = new double[this.periods];

 yVals = new double[this.periods];

 for (int i = 0; i < this.periods ; i++)

 {

 x = ((int)n- i);

 y = Math.Log(inputs[0].LookBack(i));

 xVals = x;

 yVals = y;

 }

 double rsquared, yintercept, slope;

 LinearRegression(xVals,yVals,0,this.periods - 1,out rsquared, out yintercept,out slope);

 double annualSlope;

 double dayCount = 250;

 annualSlope = ((Math.Pow(Math.Exp(slope), dayCount))-1) *100; // Annualized percentage

 //

 annualSlope = annualSlope *rsquared;

 return annualSlope;

 }

 public static void LinearRegression(double[] xVals, double[] yVals,

 int inclusiveStart, int exclusiveEnd,

 out double rsquared, out double yintercept,

 out double slope)

 {

 double sumOfX = 0;

 double sumOfY = 0;

 double sumOfXSq = 0;

 double sumOfYSq = 0;

 double ssX = 0;

 double ssY = 0;

 double sumCodeviates = 0;

 double sCo = 0;

 double count = exclusiveEnd - inclusiveStart;

 for (int ctr = inclusiveStart; ctr < exclusiveEnd; ctr++)

 {

 double x = xVals[ctr];

 double y = yVals[ctr];

 sumCodeviates += x * y;

 sumOfX += x;

 sumOfY += y;

 sumOfXSq += x * x;

 sumOfYSq += y * y;

 }

 ssX = sumOfXSq - ((sumOfX * sumOfX) / count);

 ssY = sumOfYSq - ((sumOfY * sumOfY) / count);

 double RNumerator = (count * sumCodeviates) - (sumOfX * sumOfY);

 double RDenom = (count * sumOfXSq - (sumOfX * sumOfX))

 * (count * sumOfYSq - (sumOfY * sumOfY));

 sCo = sumCodeviates - ((sumOfX * sumOfY) / count);

 double meanX = sumOfX / count;

 double meanY = sumOfY / count;

 double dblR = RNumerator / Math.Sqrt(RDenom);

 rsquared = dblR * dblR;

 yintercept = meanY - ((sCo / ssX) * meanX);

 slope = sCo / ssX;

 }