独家整理,盗用必究
用 scikit-learn RandomForest,以MA/RSI/MACD/量比/布林带为特征,预测次日涨跌方向。测试集胜率62.8%,我把优缺点都说清楚。

▲ 系统架构图
■ OpenClaw 一句话,出ML预测结果
在浏览器打开 `http://localhost:18789`,对话框输入:
用机器学习预测贵州茅台明日方向
5秒后 OpenClaw 返回:
[模型精度]
训练集精度:74.3%████████████████████████████░░░░
测试集精度:62.8%████████████████████░░░░░░░░░░░░
随机基准:50.0%████████████████░░░░░░░░░░░░░░░░
过拟合差值:-11.5%⚠️ 中等过拟合风险
上涨概率:68.4%████████████████████░░░░░░░░░░
下跌概率:31.6%██████████░░░░░░░░░░░░░░░░░░░░
信号:BUY(阈值>60%)置信度:MEDIUM
这个结果是从 Tushare 拉取2022-2024年日线数据,构建15个技术指标特征,现场训练 RandomForest,然后预测今日特征对应的明日涨跌概率。整个过程5秒内完成。
■ 机器学习预测是怎么实现的?
三步走:
第一步:特征工程(15个技术指标)
# 二进制特征(有/无信号)
ma_bullish= 1 if price > MA5 > MA10 > MA20 else 0
macd_golden= 1 if DIF 金叉 DEA else 0
# 连续值特征
rsi_norm= RSI / 100# 归一化到[0,1]
boll_position = (price - 下轨) / 布林带宽# 价格在布林带中的位置
vol_ratio= 今日成交量 / 5日均量# 量比
ret_5d= 5日涨跌幅
第二步:训练 RandomForest
# 标签:次日是否上涨
label = 1 if close_tomorrow > close_today else 0
# 训练集 2022-2023,测试集 2024
model = RandomForestClassifier(n_estimators=200, max_depth=8, ...)
model.fit(X_train, y_train)
第三步:预测今日
prob_up = model.predict_proba(X_today)[0][1]
# → 68.4%,超过阈值60%,信号 BUY
■ 真实测试数据(未修改)

▲ 真实运行输出
{
"stock":"贵州茅台 600519.SH",
"model":"RandomForestClassifier",
"train_period":"2022-01-01 ~ 2023-12-31",
"test_period":"2024-01-01~ 2024-12-31",
"accuracy":{
"train":"74.3%",
"test":"62.8%",
"random_baseline":"50.0%",
"overfit_gap":"-11.5%"
},
"today_features":{
"ma_bullish":1,
"rsi_norm":0.52,
"macd_golden":1,
"vol_ratio_cat":"high (1.82)",
"boll_position":0.743
},
"prediction":{
"prob_up":"68.4%",
"prob_down":"31.6%",
"signal":"BUY",
"threshold":">60%",
"confidence":"MEDIUM"
}
}
■ 这套方案的局限性
1. 62.8%胜率不等于62.8%的盈利概率
方向预测正确,不代表盈利。次日涨0.1%,扣掉0.13%手续费,实际亏损。需要盈亏比 > 1.5:1 + 仓位管理,才能将胜率转化为正期望。
2. 11.5%的过拟合差距是中等风险
理想情况下,训练集和测试集精度差 < 5%。11.5%说明模型在训练集上记住了一些不泛化的规律。实盘中精度可能进一步下滑到55-58%。
3. 只用技术指标,忽略了重要变量
•基本面:财报变化、行业政策
•事件驱动:业绩预告、重大公告
•宏观因素:利率、汇率、大盘情绪
在涨停板、黑天鹅等极端情况下,技术指标完全失效。
4. 特征工程的主观性
为什么是这15个特征?量比为什么按0.8/1.5分三档?这些是我手动设定的超参数,不同设定会导致截然不同的精度。
5. 训练数据的时代性
2022-2023年A股整体震荡下行,2024年反弹。如果2026年市场风格再次切换,模型精度可能大幅下滑。
■ 62.8%胜率
值得用,但不能单独用。
62.8%相比随机的50%,多了12.8个百分点,有统计意义。在合理的风控下,这个优势可以积累为正收益。
但必须结合:
•板块动量(教程08):先确保板块强势
•五因子评分(教程09):确保股票基本面+技术面支撑
•ML预测(本教程):作为第三个确认信号
三个信号都支持时,胜率和期望会显著提升。
■ 完整的 OpenClaw 搭建教程在哪?
完整教程(含脚本、SKILL.md 配置、截图)在知识付费专栏:
•教程08:板块轮动策略
•教程09:五因子量化选股
•教程10:机器学习预测A股涨跌(本文)
•教程11:分钟线短线交易信号
•教程12:ETF双动量轮动
教程尽在👇👇
*⚠️ 以上内容仅供学习研究,不构成任何投资建议。市场有风险,投资须谨慎。*
夜雨聆风