news 2026/5/28 3:04:09

基于机器学习的多因子选股预测模型全流程研究(包含数据获取与处理)”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于机器学习的多因子选股预测模型全流程研究(包含数据获取与处理)”

基于机器学习的多因子选股预测模型研究(全流程,包含数据) 1、数据获取 2、数据预处理 3、特征选择 4、划分训练集和测试集 5、机器学习模型构建(随机森林、线性回归、支撑向量机) 6、预测未来走势 7、选股+构造策略 8、收益曲线可视化绘制 9、模型评估累积收益率、夏普比率、年化收益率等

最近在搞量化交易的朋友应该都听说过机器学习选股。这玩意儿听着高大上,实际操作起来倒也没那么玄乎。今天咱们就用Python手把手走一遍全流程,从数据到策略落地,中间踩过的坑和发现的宝藏都会掏出来分享。

数据获取就像买菜

别急着上模型,没数据都是白搭。咱们用Tushare搞点沪深300成分股的历史数据(需要先注册获取token):

import tushare as ts pro = ts.pro_api('你的token') df = pro.daily(ts_code='000300.SH', start_date='20180101') print(df[['trade_date','close']].head())

这里有个坑:金融数据经常有复权问题。记得用复权因子处理收盘价,不然哪天股票拆分能让你策略翻车。别问我怎么知道的,都是泪。

数据预处理才是真·体力活

拿到的原始数据可能长这样:

df.fillna(method='ffill', inplace=True) # 离群值处理 from scipy import stats df = df[(np.abs(stats.zscore(df['turnover_rate'])) < 3)]

碰到停牌数据直接向前填充,成交量突变的直接当异常值干掉。这里有个骚操作:用3σ原则处理异常值比简单截尾靠谱,能保留更多真实波动信息。

特征选择别当无头苍蝇

因子不是越多越好。试过用随机森林看特征重要性,结果发现:

from sklearn.ensemble import RandomForestRegressor rf = RandomForestRegressor() rf.fit(X_train, y_train) importance = pd.Series(rf.feature_importances_, index=X.columns) print(importance.nlargest(5))

结果发现市盈率、换手率、20日波动率这几个因子吊打其他花里胡哨的指标。重点来了:特征选择一定要结合业务逻辑,MACD这种技术指标在机器学习模型里可能还不如简单动量因子好用。

模型实战翻车现场

基于机器学习的多因子选股预测模型研究(全流程,包含数据) 1、数据获取 2、数据预处理 3、特征选择 4、划分训练集和测试集 5、机器学习模型构建(随机森林、线性回归、支撑向量机) 6、预测未来走势 7、选股+构造策略 8、收益曲线可视化绘制 9、模型评估累积收益率、夏普比率、年化收益率等

试了三个模型对比效果:

from sklearn.svm import SVR from sklearn.linear_model import LinearRegression # 线性回归 lr = LinearRegression().fit(X_train, y_train) # 随机森林 rf = RandomForestRegressor(n_estimators=100, max_depth=5) # SVM记得先标准化数据 scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) svr = SVR(kernel='rbf').fit(X_train_scaled, y_train)

实测发现随机森林在非线性的股票数据上表现最好,但SVM调参调到怀疑人生。重点提示:线性模型在因子共线性严重时容易翻车,记得先用VIF检验。

策略落地才是真章

模型预测完不是结束,怎么转换成交易信号才是关键:

# 生成预测收益率 test_df['pred_return'] = model.predict(X_test) # 每周调仓选前10%股票 selected_stocks = test_df.groupby('trade_date').apply( lambda x: x.nlargest(int(len(x)*0.1), 'pred_return'))

这里有个反直觉的点:预测收益率绝对值不重要,排序才是核心。实盘时记得控制换手率,高频调仓的手续费能吃掉大部分收益。

收益可视化暴击心灵

最后用pyecharts画收益曲线比matplotlib酷炫多了:

from pyecharts.charts import Line line = Line() line.add_xaxis(dates) line.add_yaxis('策略收益', strategy_returns) line.add_yaxis('沪深300', benchmark_returns) line.render('收益对比.html')

当看到自己策略的曲线稳稳跑赢指数,那种成就感...然后下一秒就发现过拟合了(手动狗头)。所以务必做滚动回测,别掉进单一时间段的陷阱。

模型评估别只看收益率

夏普比率计算要注意无风险利率的选择:

risk_free_rate = 0.03 # 假设3%无风险收益 excess_returns = returns - risk_free_rate/252 sharpe_ratio = np.sqrt(252) * excess_returns.mean() / excess_returns.std()

年化收益计算有个坑:别直接用总收益率折算,要用几何平均。最大回撤计算记得用expanding().max(),不然会低估风险。

走完整个流程最大的感悟:机器学习在量化中的应用,七分靠数据,两分靠特征,一分靠模型。下次可以试试把新闻情绪数据加进因子,说不定有惊喜——当然,也可能是惊吓。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 15:38:37

面试官:你的RAG项目更像demo!从玩具RAG到工程化落地,我悟了…

面试官的提问揭示了做RAG项目从“玩具级demo”到“工程化落地”的巨大差距。本文深入剖析了玩具RAG的缺陷&#xff0c;如检索效果不可控、分块策略粗糙、无容错机制等&#xff0c;并详细阐述了工程化RAG的优化策略&#xff1a;流水线架构、多路精细检索、自适应分块、完整评测体…

作者头像 李华
网站建设 2026/5/23 1:54:28

别再瞎学AI了!90%的人都踩了这5个致命坑

常见误区与解决方案盲目追求最新技术 许多初学者热衷于学习最前沿的模型&#xff08;如GPT-4、Stable Diffusion&#xff09;&#xff0c;但忽视基础理论&#xff08;如线性代数、概率论&#xff09;。应先掌握机器学习基础&#xff08;如监督学习、梯度下降&#xff09;&#…

作者头像 李华
网站建设 2026/5/23 1:54:26

javaweb校园物品租赁共享资源平台设计与实现校园版咸鱼

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析技术实现要点特色功能扩展示例代码片段项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 用户管理模块 注册与登录…

作者头像 李华
网站建设 2026/5/26 9:28:35

第 3 章 函数 知识点精讲

3.1 def 语句和参数核心知识点函数是组织好的、可重复使用的代码块&#xff0c;用于实现单一或相关联功能。定义&#xff1a;使用 def 关键字定义函数。调用&#xff1a;通过函数名加括号来执行函数。参数&#xff1a;在函数定义时放在括号内的变量&#xff0c;用于接收调用时传…

作者头像 李华
网站建设 2026/5/23 1:54:50

Prompt工程师过剩?2026年软件测试从业者必备的五大抗淘汰技能

从“工具使用者”到“策略定义者”的必然跃迁随着生成式AI的浪潮席卷全球科技行业&#xff0c;一个曾经炙手可热的新兴岗位——“提示工程师”&#xff08;Prompt Engineer&#xff09;——正悄然经历着市场预期的理性回调。过去两年&#xff0c;各大招聘平台上“Prompt Engine…

作者头像 李华
网站建设 2026/5/23 1:54:30

终极免费指南:5分钟搞定Windows网络性能测试

终极免费指南&#xff1a;5分钟搞定Windows网络性能测试 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds iperf3-win-builds项目提供了专为Windows系…

作者头像 李华