线性回归和量化交易基础(中)

因为我们在因子选定的时候,包含了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_

结果是这样的:

 

posted @ 2021-03-25 23:32  ProgrammerZT  阅读(80)  评论(0编辑  收藏  举报