研究概览业绩展示项目文档

本页直接读取仓库中的说明文档。 查看源文档 ↗

股票预测研究

Ridge 在中间一段几乎没有排序效果,最后一段效果较好。三段结果还不足以说明它能稳定赚钱。正式交易收益仍待验证。

这次算了什么

数据覆盖2025-09-25至2026-10-20,共有2516个来源代码,按身份分段后得到2518个候选,其中2511个分段的身份尚未核实。历史证券类型和身份资料还不完整。这份候选名单不能当作已经认证的普通股全集,也不代表历史指数成分股。

每月选样只看此前20个完整的XNYS交易日。20天的成交额都要齐全,前一日收盘价至少为5美元,日均成交额至少为1000万美元。按日均成交额排序,遇到并列就按候选标识排序,最多保留500个,当月固定名单。选样不要求月初当天已有行情。2025年11月至2026年10月,每个月都有500个候选。最初两个月的历史长度不足。

模型预测下一交易日首笔到末笔有效常规时段成交之间的涨跌。缺少下一交易日时,结果保留缺失。官方竞价价格、订单成交、容量和总回报尚未验证。

六项特征分别记录当天涨跌、价格范围、相对成交额、买卖价差、有效报价分钟占比和有成交分钟占比。相对成交额的分母只使用此前20个交易日。分钟占比按实际交易时长计算,包括提前收盘。缺失特征只用训练数据估算,未加入未经复权的隔夜收益。

怎样检验

可选研究环境使用Python3.12,锁定scikit-learn1.7.2、pyarrow23.0.1、exchange-calendars4.13.2和threadpoolctl3.6.0。原有股票引擎和默认命令保持现状。

最后60个合格的日历特征日期分成三段,每段20个交易日。每段用此前的数据训练,至少保留126个日历训练日期,最后20%用于内部验证。标签结束时间必须严格早于下一阶段的决策时点。同一天的候选放在同一组,缩放和缺失值估算只学习训练数据。

Ridge 比较alpha为0.1、1、10的三组参数。Elastic Net 比较alpha为0.0001、0.001、0.01与l1_ratio为0.1、0.5、0.9的九种组合,使用cyclic选择、max_iter2000和tol1e-4。按验证期每天排序相关性的平均值选参数,至少要有20个有效日期,每天至少30个不同候选。相关性相差不超过1e-12时,先比较平均预测误差,再按参数声明顺序决定。排序指标不够时,记录无法选定,保留原因。求解不收敛就记为失败,测试结果不参与选参数。

本轮实际做了42次拟合。上限为48次、单工作进程、最多两个BLAS线程,子进程最多运行1200秒。工具在拟合前记录尝试,拒绝覆盖已有结果。中断或超时后,先检查记录再决定新一轮运行。

修正后的实际结果

排序相关性用Rank IC表示,范围为负1到1。正数表示分数较高的代码后来通常表现较强。各有效日期等权平均,这项指标没有货币单位。

检验时期Ridge排序相关性Elastic Net排序相关性按当天涨跌排序的对照已计分的候选与日期组合数
2026-07-27至2026-08-210.020962无法计算−0.01628510000
2026-08-24至2026-09-21−0.0000370.000497−0.00049710000
2026-09-22至2026-10-190.0649790.064575−0.0692059954

每段计划检验20天。Ridge和当天涨跌对照在三段中都各有20个有效排序日期,Elastic Net分别为0、20、20。它在第一段给出了常数预测,排序相关性无法计算。统一预测为0的对照在三段中都无法计算排序指标。缺失值保留缺失。最后一段少了46个候选与日期组合的标签,测试日期保持固定。

三段出现过的不同身份数分别为539、531、526。股票池按月更新,因此整段身份数可能超过500,单日仍最多500个。

Ridge依次选中alpha10、10、1。Elastic Net依次选中(alpha0.001,l1_ratio0.5)、(0.001,0.5)、(0.0001,0.1)。第一段中,它的平均误差平方略低于统一预测为0,排序相关性却无法计算。两项指标衡量的性质不同。

首轮诊断发现,月初选样还要求当天存在行情,这会提前用到不该知道的信息。回归测试复现了问题,选样已改为完全依据上月末数据。使用相同冻结输入重跑后,表中指标保持一致。首轮私有记录仍保留备查。

在本地复现

按团队快速开始指南设置绝对路径DATA_ROOT和仓库外的UV_PROJECT_ENVIRONMENT。输入使用已经完成、字段符合约定的冻结daily_features.parquet。原始行情和私有记录留在Git之外。

cd research/equity-lab
uv sync --locked --group dev --extra predictive
uv run --locked --extra predictive python -m equity_lab.predictive.cli --input $FROZEN_INPUT --output $NEW_RESULT_DIR --mode exploratory_source_candidates

公开的equity-predictive.v1.json只保留经过核对的每日汇总误差、排序指标、样本数,以及来源哈希和适用边界。根项目独立检查允许字段、数值类型、日期边界、每日均值和样本数,再核对中英文页面中的结构化事实。原始价格、账户信息、私有路径和逐个候选的预测值均留在本地。

正式股票收益评估还需要带日期的证券身份和类型证据、相关公司行动处理,以及成交与成本验收。历史选样和幸存者偏差仍未解决。收盘可用时间只是未经独立核实的近似值。这段历史此前已经研究过,本次仍属历史检验。已有的后续观察登记保持原状。

存储交接

2026-10-25检查时,数据所属任务的标准按证券Zstd6版本报告完成,另一个delta/Zstd12重压缩仍在运行。有界比较检查分别记录了这两个所属任务状态。存储工具仍需完整凭证,核对最终file_index.csv的行数、成交量与SHA256记录,再按明确命令复制已验证的最终布局到挂载好的新目录。staging和包含旧路径的DuckDB目录文件不在复制清单中。原始ZIP需要另做冻结传输清单。本轮研究没有复制这些布局、删除原件或修改共享数据入口。

uv run --locked python -m competition_tools.datasets.storage_handoff --source $COMPLETED_LAYOUT --output $NEW_PRIVATE_MANIFEST

这条命令在仓库根目录运行。目标盘和带日期的新目录准备好后,才添加—copy-to。复制失败会保留.partial目录供检查,工具拒绝自动重试。SSH传输和后台触发不属于这项工具的功能。原件继续保留,后续再单独决定保留期限。

依赖审计后,可选环境已从PyArrow21.0.0升级至23.0.1。实际试验使用21.0.0读取冻结输入,两种版本读取的658472行内容指纹完全一致,未因此增加参数搜索。Apache官方修复说明见23.0.1发布记录。