The intention of the function below is to calcualte the beta of a security. 

 

I have used Investopedia to verify I'm calculating beta correctly.(trying to at least)

 

correlation*(STD_deviation_of_return_of_spy/STD_of_return_of_stock) = beta

 

The function below is my attemtp to calcualte beta: 

import numpy as np
from scipy import stats

def get_beta(self, security, period):
        if not self.Securities.ContainsKey(security):return 'no data'
        security_data = self.History([security], period, Resolution.Daily)
        spy_data = self.History(['SPY'],period,Resolution.Daily)
        if 'close' not in security_data:return 'no close'

        y = security_data['close'].pct_change().dropna().values

        x = spy_data['close'].pct_change().dropna().values
        slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
        return r_value * ((np.std(y))/(np.std(x)))

Can someone please tell me where my error is ? Thanks. 

Author