线性回归和量化交易基础(中)
因为我们在因子选定的时候,包含了martket_cap市值这一项
但是市值又和其他的有一定的相关性,于是我们进行简单的市值中性化,
原理:线性回归 确定bias值的平均值, 这个值就是中性化之后的值,考虑到我们选的变量都明显和市值相关,都是由市值计算得来
因此我们对所有因子进行市值中性化操作
from sklearn.linear_model import LinearRegression for name in x.columns: if name == "market_cap": continue # 做市值中性化 y_factor=x[name] lr=LinearRegression() lr.fit(x_market_cap.values.reshape(-1,1),y_factor) y_predict=lr.predict(x_market_cap.values.reshape(-1,1)) y_bias=y_factor-y_predict print(y_bias) x[name]=y_bias
打印后如图所示y_bias的值,比如说当前的bias是市值和主要利润的差
当然,在市值中性化之前,我们不应该做任何的标准化,或者去极值的处理
之后,我们再进行去极值和标准化操作:
我们还要看到的是,因为最后一个月,并没有与之对应的下一个月的数据,所以最后一个月的回归数据必然是NaN,这会造成无法进行线性回归,我们用前面的数据就剋了
from sklearn.linear_model import LinearRegression # 建立回归方程 lr=LinearRegression() x=x.dropna()[:15676] y=y.dropna() lr.fit(x,y) lr.coef_
结果是这样的: