data_frame['cum_xobs'] = data_frame['xobs'].cumsum()
data_frame['cumsum_xy'] = data_frame['xy'].cumsum()
data_frame['cumsum_x2'] = data_frame['x2'].cumsum()
data_frame['cumsum_x'] = data_frame[rhs_column].fillna(0.0).cumsum()
data_frame['cumsum_y'] = data_frame[lhs_column].fillna(0.0).cumsum()
data_frame['cum_cov'] = data_frame['cumsum_xy'] - 1.0 / data_frame['cum_yobs'
    ] * data_frame['cumsum_x'] * data_frame['cumsum_y']
data_frame['cum_x_var'] = data_frame['cumsum_x2'] - 1.0 / data_frame['cum_xobs'
    ] * data_frame['cumsum_x'] ** 2
data_frame['FactorBeta'] = data_frame['cum_cov'] / data_frame['cum_x_var']
data_frame['FactorBeta'][data_frame['cum_yobs'] < min_obs] = np.NaN
return data_frame[[date_column, 'FactorBeta']].set_index(date_column)
Накопительный OLS с Python Pandas