怎么统计涨停股票?
这个问题我早就想过,而且也早就有办法实现,只不过一直没有找到合适的应用场景,所以一直没有拿出来分享,今天正好借这个题目把方法分享给大家! 先上结果:用此方法在2017年能够选出所有一年内的涨停板,且成功捕捉到90%以上的涨停板。(说明:本文所用的数据均来源于通达信)
具体实现过程如下: 选择条件:只选取涨停当天的K线是阳线的个股 设置条件:只保留符合条件的个股的涨停信息 整理数据:对每个交易日的涨停股进行排序 提取特征:提取每日涨停股的某些特征值,用于建模 建立模型:基于上述特征值建立回归预测模型 评估模型:利用历史数据对建模效果进行评估 利用模型:对未来交易日可能出现的涨停股进行预告 对上述代码的注释: Data:用于保存所有日线的数据和建模需要的其他参数;
data.info():显示数据的信息; data.head():显示数据的头几个样本;
data[['Open','High','Low']]=data[['Open', 'High', 'Low']].apply(pd.Series):将日线的数据转化为数组格式,并生成三个新的列,分别表示开盘价、最高价和最低价;
data.corr():计算相关性矩阵;
feature_list=[]:用来存储用于建模的特征值;
for col in data.columns::循环处理每一个列;
if col not in feature_list::如果该列未出现在已处理的特征列表中则继续;
x=np.array(data[col]):将列转换成数组格式;
x=StandardScaler().fit_transform(x):对数组做标准化处理;
y=data['Close']:获取收盘价数据;
model=LinearRegression():创建线性规划模型;
model.fit(x, y):使用提供的数据训练模型;
coef=model.coef_:获取系数的值;
var=model.predict([[14865.91]]):使用给定的x值预测Y值;
features=feature_list+[str(round(c, 3)) for c in coef]:将系数值转换为字符串格式以便于保存;
data[‘Features’]=features:将新列添加至data集以供后续分析使用。