def macro_regression(ret, macro_index,macro_index_list):
'''
?????????????????????????????????????????????????
??????????????????????????*???????????????-??????
:param DataFrame ret: ??????????
:param DataFrame macro_index: ??????????
:return: [DataFrame,dict] [loading,significant_list]: ???????????????;??????????
'''
loading = pd.DataFrame(np.zeros([ret.shape[1], macro_index.shape[1]]), columns=macro_index.columns)
# ??????????????????
significant_list = dict()
# ??????
for i in range(len(macro_index_list)):
significant_list[macro_index_list[i]] = 0
# p???????????
pvalue_threshold = 0.1
# ??????????
for i in range(ret.shape[1]):
y = ret.values[:, i]
# ??????????????
for j in range(len(macro_index_list)):
x = macro_index.values[:, j]
model = sm.OLS(y, x).fit()
loading.iloc[i, j] = model.params[0]
if model.pvalues < pvalue_threshold:
significant_list[macro_index_list[j]] += 1
return [loading, significant_list]
评论列表
文章目录