Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待
4999元包邮
去购买 >
前言
“回归”一词是由英国著名统计学家Francils Galton提出来的。1889年,他在研究祖先与后代身高之间的关系时发现,身材较高的父母,他们的孩子也较高,但这些孩子的平均身高并没有他们父母的平均身高高;身材较矮的父母,他们的孩子也较矮,但这些孩子的平均身高却比他们父母的平均身高高。Galton把这种后代的身高向中间值靠近的趋势称为“回归现象”。后来,人们把由一组变量的变化去推测另一组变量的变化方法称为“回归方法”。
将“回归现象”应用于统计套利时的理论依据为:价格将围绕价值上下波动,即股价上涨/下跌只是暂时的,价格会回复到一个相对正常的水平。本文根据股价走势绘制出拟合曲线,并将拟合角度作为选股参数应用于自选股删选中。
回归直线和最小二乘法
以研究人体的脂肪含量与年龄之间的关系为例,我们得到一组样本数据,从散点图上可以看出年龄越大,体内脂肪含量越高,呈现一种正相关的关系,并且点的分布整体上大致在一条直线附近,这条直线即为回归直线。计算得到这条回归直线的方程,即可以清楚地了解年龄与体内脂肪含量的相关性。
假设这条回归直线方程为y=bx+a,将样本的数据点(xi,yi)与直线上横坐标xi的点之间的距离来刻画点(xi,yi)到直线的远近,即|yi-(bxi+a)|(i=1,2,3,...,n)。由于绝对值计算不方便,实际应用中使用公式:Q=(y1-bx1-a)2+(y2-bx2-a)2+(y3-bx3+a)2...(yn-bxn+a)2。通过最小二乘法(method of least square)计算直线斜率b和截距a值使得Q最小,即样本数据的点到回归直线的距离的平方和最小。这样就得到了回归直线方程式。
线性回归实现
导入Statsmodels库。Statsmodels是Python中一个强大的统计分析包,包含了回归分析、时间序列分析、假设检验等等的功能。通过statsmodels.api.OLS()函数实现多项式拟合计算,OLS(ordinary least squares)即为普通最小二乘法的缩写,具体使用例程可参考官网文档/st...。
此处回归模型是最基本的一元模型:Y=β0X0+β1X1,x(array)为回归变量(自变量),y_arr(array)响应变量(因变量),statsmodels.OLS未假设回归模型有常数项,通过sm.add_constant()在x(array)左侧加上一列常量1。statsmodels.regression.linear_model.OLS输出结果是一个类,并没有进行任何运算,需要在 OLS 的模型之上调用拟合函数fit()执行得到β0、β1,即回归直线的截距和斜率。
import statsmodels.api as sm
def calc_regress_deg(self, y_arr):
x= np.arange(0, len(y_arr))
x = sm.add_constant(x)#添加常数列
model = regression.linear_model.OLS(y_arr, x).fit()
rad = model.params[1]#y = kx + b :params[1] = k
deg = np.rad2deg(rad)#弧度转换为角度
intercept = model.params[0]#y = kx + b :params[0] = b
reg_y_fit = x * rad + intercept
return deg, x, reg_y_fit, y_arr
计算走势角度
遍历自选股中的股票分别计算出每个股的收盘价格拟合角度。y_arr为收盘价曲线,reg_y_fit为相同x变量下的拟合曲线,ang为计算得到的拟合角度值。
pick_stocks = {u"浙大网新": "600797.SS",u"高鸿股份": "000851.SZ",u"开山股份": "300257.SZ",u"水晶光电": "002273.SZ"}
def fit_pick(self, symbols,show=True):
for index, stockName in enumerate(symbols.keys()) :
kl_pd = web.DataReader(symbols[stockName], "yahoo", datetime.datetime(,1,1), datetime.date.today())
kl_pd.fillna(method='bfill',inplace=True)#后一个数据填充NAN
ang, x, reg_y_fit, y_arr = self.calc_regress_deg(kl_pd.Close)#计算走势角度
显示效果
分别选用的时间区间为-1-1至今,-6-1至今和-9-1至今,以-9-1至今的回归直线为例分析,股价以回归直线为中心表现为震荡走势,其中水晶光电的下跌角度值更大。由于线性回归作用于股票的整个时间段,因此选择合适的时间段非常重要,选择的标准即为策略因子及整个交易系统的风格。
原文链接:/a/1190000014389316