2026.4.20谷雨:EquiNet v2归档,v3 start ~,v3将转为私有仓库继续开发。方向:应用因子规模化、参数规模化、架构重构,核心聚焦风险与稳定性。
- EquiNet基于历史数据进行统计建模,对未来3天是否具有短期上涨趋势进行打分
- 架构主流:BERT拥有一定的时序建模能力
- 训练监控:每轮训练计算并显示各种评估指标
- 参数配置:自定义模型配置以适应不同需求
EquiNet/
├── data_all/ # 全量股票池
├── data/ # 训练数据
├── out/ # 模型权重输出
├── src/
│ ├── train.py # 主训练脚本
│ ├── run.py # 推理/选股脚本
│ ├── training_utils.py # 训练工具模块
│ ├── train_dft.py # DFT微调训练脚本
│ ├── config.py # 统一配置文件
│ └── ... # 其他可能的脚本/目录
├── LICENSE # Apache-2.0许可证
└── README.md
- 全量数据目录:
data_all/,训练数据目录:data/ - 每个
.csv文件对应一只股票(不复权),000000.csv为上证指数 - 字段:
date, open, high, low, close, volume, exchange - volume 为成交量(千元),exchange 为换手率
v1参考数据集:https://huggingface.co/datasets/Mhuixs/EquiNet-v1-319_420
采用两级架构:全量股票池(data_all/)→ 筛选训练数据(data/)
data_update.py ──更新──> data_all/ (全量股票池)
data_check.py ──检查──> data_all/
data_select.py ──筛选──> data/ (训练数据)
data_update.py --mode train ──增量更新──> data/
python data_update.py # 增量更新已有股票的最新数据(默认)
python data_update.py --mode full # 全量更新:拉取所有A股完整历史(首次/添加新股)python data_select.py # 使用默认配置筛选(市值<MARKET_CAP_MAX and > MARKET_CAP_MIN)
python data_select.py --dry-run # 仅查看结果,不复制文件
python data_select.py --market-cap 200e8 # 自定义市值上限筛选条件:主板股票 → 排除ST → 排除退市/停牌 → 市值 < MARKET_CAP_MAX and > MARKET_CAP_MIN
python data_update.py --mode train # 增量更新 data/ 中的股票(快,推荐频繁使用)python data_check.py # 检查全量股票池最近100天数据
python data_check.py --days 50 # 指定检查天数# 首次使用 / 偶尔维护
python data_update.py --mode full # 1. 拉取全量数据(首次需要数小时)
python data_select.py # 2. 筛选训练股票(约数小时)
# 日常训练
python data_update.py --mode train # 3. 刷新训练数据(几小时)
python src/train.py # 4. 开始训练
python src/run.py # 5. 选股推理modelB_top1_p1_11pct_thr0_485_auc0_6182_ep29_1214_1930.pth
│ │ │ │ │ │ └── 时间戳
│ │ │ │ │ └── 最佳轮次
│ │ │ │ └── AUC
│ │ │ └── 阈值(实盘用)
│ │ └── 收益率
│ └── Top-K
└── 模型类型
modelB - 模型的来源:clone脚本生成的B型模型 top1 - Top1%选股,k取1 p1_11pct - 收益率 +1.11% 在测试集上的收益率 thr0_485 - 阈值 0.485(预测值≥0.485即入选Top1%) auc0_6182 - AUC 0.6182 ep29 - 第29轮 1214_1930 - 12月14日19:30 ...可能有其它字段
- 环境配置:environment.yaml
- 克隆项目
git clone https://github.com/hujiyo/EquiNet-v2.git
- 创建虚拟环境
conda env create -f environment.yaml && conda activate equinet - 准备数据(详见上方「数据管理」)
- 训练
python src/train.py
- 选股
python src/run.py
Epoch 229/400, LR: 0.000468 (正常训练) [A+B训练]
动态采样策略:按需生成索引,直到满足1个batch...
已生成 1/1 个Batch (已采样50轮)
已生成 1/1 个batch (总共采样50轮, 41050个索引)
[循环统计] 已循环股票: 821/823, 总循环次数: 3887
标签分布: 上涨=128(25.0%), 边界=0(0.0%), 不涨=384(75.0%)
训练进度: 100.0%, Loss_A: 1.6334, Loss_B: 1.6574
[模型A] 训练损失: 1.6334, 测试损失: 0.3678, AUC: 0.7008
预测均值: 0.413, 高置信(>0.7): 0, 低置信(<0.2): 1641
Top1%收益: +1.25%
【实战收益率(全局阈值,每日上限4)】每日统计: {(2,13.2%), (3,12.0%), (4,5.4%), (4,6.2%), (4,4.5%), (4,0.5%), (4,6.5%), (4,-5.3%), (4,-7.3%), (4,0.1%), (4,5.3%), (4,2.4%), (4,9.0%), (4,12.6%), (4,13.4%), (4,-1.8%), (4,-3.1%), (4,-2.2%), (4,4.3%), (4,16.5%), (4,3.2%), (4,-4.0%), (4,1.1%), (4,0.8%), (4,-0.2%), (4,-0.0%), (4,-2.6%), (4,-6.8%), (4,-0.6%), (4,5.6%), (4,5.5%), (4,3.6%), (4,7.3%), (4,-0.0%), (4,-7.1%), (4,-8.0%), (4,2.7%), (4,7.5%), (4,1.8%), (4,5.4%), (4,6.7%), (4,5.4%), (4,0.7%), (4,-3.2%), (4,-6.0%), (4,-8.8%), (4,-7.1%), (4,-6.8%), (4,6.8%), (4,-2.8%), (4,14.2%), (2,-2.8%), (1,7.5%), (4,-7.3%), (4,-1.8%), (4,0.6%), (4,-5.5%), (4,-7.5%), (4,7.8%), (4,11.1%), (4,-0.4%), (4,3.2%), (2,12.6%), (3,-4.2%), (3,2.4%), (4,-6.4%), (4,-4.4%), (4,2.2%), (4,1.0%), (3,4.1%), (4,6.1%), (4,-5.7%), (2,-2.2%), (3,0.5%), (3,1.6%), (4,1.6%), (4,6.5%), (4,-3.5%)}
【实战收益率(全局阈值,每日上限4)】平均实战收益率: 1.6%
【预测值分布直方图】
0.0 ▁▁▁▂▄▆▇█▇▆▅▄▄▂▁▁▁▁▁▁ 1.0
├────────────────────┤
均值=0.413, 标准差=0.1256, 范围=[0.122, 0.677]
>0.5: 26.6%, >0.7: 0.0%
趋势: 📈 分散度上升 (+12.9%) | 收益率变化: (+1.0%)
⚠ 无改善 (50/100)
[模型B] 训练损失: 1.6574, 测试损失: 0.3640, AUC: 0.6991
预测均值: 0.429, 高置信(>0.7): 1706, 低置信(<0.2): 3397
Top1%收益: +0.79%
【实战收益率(全局阈值,每日上限4)】每日统计: {(4,4.0%), (4,10.0%), (4,3.4%), (4,6.2%), (4,6.2%), (4,1.8%), (4,6.5%), (4,-5.5%), (4,-9.6%), (4,-0.6%), (4,7.1%), (4,-1.4%), (3,0.4%), (4,12.3%), (4,11.8%), (4,-2.0%), (4,-2.9%), (4,-3.4%), (4,2.3%), (4,11.5%), (4,2.4%), (4,-3.4%), (4,-2.1%), (4,-1.5%), (4,-1.1%), (4,-0.3%), (4,-0.4%), (4,-4.2%), (4,6.5%), (4,10.7%), (4,4.8%), (4,4.0%), (4,9.2%), (4,1.5%), (4,-7.8%), (4,-10.9%), (4,-1.6%), (4,-0.1%), (4,2.6%), (4,4.0%), (4,6.7%), (4,9.5%), (4,2.5%), (4,-3.2%), (3,-9.5%), (4,-7.7%), (4,-7.1%), (4,-4.4%), (4,0.2%), (4,-0.8%), (4,11.5%), (3,-1.3%), (0,0.0%), (4,-3.6%), (4,1.2%), (4,4.5%), (3,-5.0%), (4,-7.5%), (4,7.8%), (4,4.9%), (4,-0.4%), (4,3.6%), (4,5.6%), (4,-4.2%), (3,2.4%), (4,-6.4%), (4,-3.0%), (4,2.1%), (4,-2.1%), (4,1.4%), (4,-0.5%), (3,-6.0%), (4,2.5%), (4,-1.4%), (4,2.5%), (4,1.6%), (4,8.5%), (3,-4.2%)}
【实战收益率(全局阈值,每日上限4)】平均实战收益率: 0.9%
伪标签来源: 最佳A(第39轮, 收益+1.69%)
伪标签统计: 伪正=5, 伪负=25, 不变=482
模型并没有任何实战能力,现阶段预测波动性大于确定性,各种指标请参照代码算法的具体实现自行判断现实性,建议模型的输出仅作为参考或者筛选依据。
- 2026.4.20谷雨:EquiNet v2归档,v3 start ~,v3将转为私有仓库继续开发。方向:应用因子规模化、参数规模化、架构重构,核心聚焦风险与稳定性。
- 2026.4:新增正样本距离保护,添加AMP混合精度支持并优化模型评估
- 2026.4.6:新增大盘指标特征,新增股票数据筛选功能并重构数据管理架构
- 2026.3:修复数据集维护更新脚本中更新时的单位错误、复权方式错误等问题,优化收益率计算策略。新增特征两阶段归一化处理流程,简化模型embedding层,新增embedding层评估脚本。
- 2026.3.8:EquiNet许可证从MIT改为Apache-2.0
- 2026.2:优化实战评分机制的计算方法,新增推理脚本、数据集维护更新脚本,优化部分模块,增加一些数据的可视化。区分涨跌幅与收益率的关系,将收益率的计算方法与实战进行统一。重新使用可学习位置编码嵌入。
- 2026.2.13:从简单涨幅阈值预测改为短期强势信号检测机制判断,减少了"有趋势但被标0"的矛盾样本,明确了模型的预测目标。二分类强迫模型做买卖二选一,新标签机制为扩展模型规模打下稳定性基础。新增实战收益率评估指标,修正收益率计算逻辑错误。未来主测评机制由原实际涨跌评分制(原收益率分数)改为“实战样本均分”评分机制。
- 2026.2.10:强制过滤超过10%涨跌幅限制的样本,降低收益率与现实的差距,新增多种可选优化器和训练机制,完全解决了收益率被高涨幅限制股拉高的现象,修正后均值最高达到1.8%,均值为0.4%-1.2%。
- 2026.1.23:新增注意力聚合机制,自适应加权所有时间步特征,替代原来仅使用最后时间步的机制,收益率最高上限提升至2.8%,均值为1.0%-1.5%
- 2026.1.8:EquiNet v1归档,v2 start ~,v2的重点是将项目从实验性质全面转为对实战应用的评估性质。特征提取层改为FFN结构,修正收益率计算规则(将当日涨停股从收益率计算中剔除),优化采样机制:动态索引生成与循环采样支持。修正前收益率最高达到3%,修正后均值最高达到2%。
- 2025.12.14:增加Top-N收益率测评机制,之前的固定阈值计算收益率并不符合实际应用,收益率由-3%
-1.5%提升到-1%-0.3%。恢复软标签机制,收益率首次达到0.1%-0.7%的正值。使用克隆模型训练策略+多教师模型纠偏机制,进一步将模型的上限拉高到1%~1.8% - 2025.11:发现了数据泄露的问题,这意味着过去的评分全部失准。已修复测评集划分机制
- 2025.10.18:v1实验性质的数据集统一放到huggingface。修复索引越界错误,修复动态权重计算错误。改积分评分制为实际涨跌评分制。
- 2025.10.15:增加学习率预热和余弦退火调度机制,残差连接改为Pre-Norm架构,调整了部分参数。进一步提升了模型训练时的稳定性。
- 2025.9.16:修正了原来错误的权重平衡方法,模型的预测能力各项指标普遍上涨5%-15%。取消专业头机制,优化训练时数据采样流程,改为每批次提前批量抽取数据,训练效率提升50%以上。
- 2025.8.1:重构采用二分类方案,专注于预测股票是否会上涨,输出0-1之间的概率值,更符合实际交易需求。使用固定的31个测试文件和评估样本,确保评估的一致性和可重复性。模型准确率达到58%,接近60%目标。在预测为上涨的股票集中,股票上涨2%的概率高达49%,远超随机平均水平(34%-42%)
- 2025.6.1:重新设计模型架构,增加模型维度(128)和层数(3),优化注意力头分配(价格3头、成交量2头、波动率2头、模式1头),使用时间感知注意力机制,提升模型表达能力。
- 2025.5.31:积分制成为默认机制,增加时间感知位置编码、Focal Loss损失函数、结合标准正弦余弦位置编码、指数衰减机制、种类差异化多头注意力机制、多尺度注意力,加入了残差连接和层归一化。
- 2025.5.12:增加mark积分制判别最优模型,但保留原判别机制
- 2025.5.1:项目start ~
- 联系hujiyo并加入项目维护者 --> 新建分支(
dev_yourname)-->维护项目- Fork 本仓库 --> 建立 Pull Request
- Name: "hujiyo"
- 邮箱: "hj18914255909@outlook.com"
- WeChat: "wx17601516389"
Apache License 2.0