#python #regression #nested-loops #beta
Вопрос:
Я выполняю скользящую регрессию доходности акций за последние 4 года с использованием 26 факторов. И я хочу рассчитать бета-версию, связанную с каждым фактором для каждого возврата. Итак, у меня есть два фрейма данных, один с доходностью за 2016-2020 годы и факторами. Я использовал циклы for для извлечения каждого значения из фрейма данных, а затем выполнял скользящую регрессию, чтобы найти бета-значения, но для вычисления требуется слишком много времени. Я хочу сделать это быстрее. Есть ли какая-либо альтернатива использованию для циклов и ускорению его выполнения?
Это мой код прямо здесь:
N = len(XY) #XY is merged dataset of sec_rets and fac_rets regression = np.zeros((len(fac_rets.index),2)) for s in range(len(sec_rets.columns)): for i in range(N): XY.iloc[i:i 252] Y = XY.iloc[i:i 252, s] X = XY.iloc[i:i 252][fac_cols] regr = linear_model.LinearRegression() regr.fit(X,Y) coefs = pd.DataFrame(regr.coef_, index=fac_cols, columns=[s])