删掉没有未来收益的样本后,因子胜率为什么变了
删掉未来收益缺失的样本,因子胜率可能变得更好,也可能变差,因为评价对象已经改变。本例二十个形成时入池候选中,十二个标签可得,八个严格正收益,完整案例胜率为三分之二;对原二十人的胜率只能给四成至八成的逻辑界限,不能把未观察八人的收益默认为零后宣布总体胜率四成。
形成名单先与未来标签分开
构造形成时刻2026年10月1日09:00Z,二十只候选全部满足预先条件,可知特征从二十依次降到一。评价截点设为10月15日09:00Z,未来标签收益单位百分数,定义“胜”为严格大于零,所以零收益不算胜。样本与日期纯属教学,不是任何真实因子选股结果。
完整构造输入如下。时间和状态按本篇约定解释,JSON中的null代表未知而非零:
{
"evaluation_time": "构造2026-10-15 09:00Z",
"formation_time": "构造2026-10-01 09:00Z",
"reasons": [
"已知",
"已知",
"已知",
"已知",
"已知",
"已知",
"已知",
"已知",
"已知",
"已知",
"已知",
"已知",
"窗口未满",
"窗口未满",
"窗口未满",
"停牌未取到退出价",
"停牌未取到退出价",
"源缺失",
"源缺失",
"退市终局待核"
],
"values": [
4,
3,
-2,
1,
0,
-1,
5,
-3,
2,
1,
2,
3,
null,
null,
null,
null,
null,
null,
null,
null
],
"win_rule": "收益严格大于0"
}
形成时刻只使用入池状态和可知特征,不允许先查看哪些候选未来有标签再选池。前十二个标签完整,后八个缺失:三人窗口未满、两人停牌未取到退出价、两人来源缺失、一人退市终局待核。原因可以影响补证据路径,却不直接给出收益符号;特别是退市终局未知不等于必然零回收。
把二十行留在主台账,标签可得表作为评价子视图。这与“只在价格文件里保留还能下载到的证券”不同,候选身份不能随文件齐全程度变动。否则后续连缺失人数都无法确认,胜率分母悄悄从形成名单变成可得标签名单,报告却仍写成同一策略的全部观察。
二十个候选的状态逐行核对
| 入池 | 原因 | 形成时可知特征 | 标签收益百分数 | 标签状态 | 证券 |
|---|---|---|---|---|---|
| 是 | 已知 | 20 | 4 | 可得 | S01 |
| 是 | 已知 | 19 | 3 | 可得 | S02 |
| 是 | 已知 | 18 | -2 | 可得 | S03 |
| 是 | 已知 | 17 | 1 | 可得 | S04 |
| 是 | 已知 | 16 | 0 | 可得 | S05 |
| 是 | 已知 | 15 | -1 | 可得 | S06 |
| 是 | 已知 | 14 | 5 | 可得 | S07 |
| 是 | 已知 | 13 | -3 | 可得 | S08 |
| 是 | 已知 | 12 | 2 | 可得 | S09 |
| 是 | 已知 | 11 | 1 | 可得 | S10 |
| 是 | 已知 | 10 | 2 | 可得 | S11 |
| 是 | 已知 | 9 | 3 | 可得 | S12 |
| 是 | 窗口未满 | 8 | — | 缺失 | S13 |
| 是 | 窗口未满 | 7 | — | 缺失 | S14 |
| 是 | 窗口未满 | 6 | — | 缺失 | S15 |
| 是 | 停牌未取到退出价 | 5 | — | 缺失 | S16 |
| 是 | 停牌未取到退出价 | 4 | — | 缺失 | S17 |
| 是 | 源缺失 | 3 | — | 缺失 | S18 |
| 是 | 源缺失 | 2 | — | 缺失 | S19 |
| 是 | 退市终局待核 | 1 | — | 缺失 | S20 |
S01至S12里八个正、三个负、一个零,胜数八、分母十二;标签覆盖率是十二除二十等于六成。后八人的特征排名更低,但本文没有证据说低特征者必亏,不能因为它们靠后就选择一个更乐观的总体估计。同样,缺失原因与风险可能有关,也不能凭常识给每个原因硬指定收益。
完整案例仅回答“标签可得的十二个人里有多少正收益”。它不是错误的算术,错误在于省略条件,把这个条件胜率说成二十人总体胜率。即使缺失比例很小,也应先明确总体对象;比例本身不能证明缺失随机,更不能证明剩余样本代表全部候选。
完整案例与原候选上下界
| 分子胜数 | 分母 | 口径 | 胜率百分数 |
|---|---|---|---|
| 8 | 12 | 完整案例 | 66.666667 |
| 8 | 20 | 缺失全部不胜的下界 | 40.0 |
| 16 | 20 | 缺失全部胜的上界 | 80.0 |
八个已知胜者已经确定,所以二十人中最少八胜;其余八个未知者全部胜则最多十六胜。下界四成、上界八成,中间所有离散结果都有可能。这个界限只对本篇二十个候选和严格正收益定义成立,不是置信区间,没有采样概率解释,也不是对下一批真实证券胜率的预测。
将缺失都填零,会得到与下界同一个四成数字,但含义不同。下界明确保留未知,只表示最坏胜数;填零则伪造了八个确定零收益,后续均值、分布和排名都会被改变。相同汇总数字不意味着数据处理等价,必须同时保留状态和情景标签。
缺失中有多少胜者,结果就怎样改变
| 总分母 | 总胜数 | 缺失中胜数 | 胜率百分数 |
|---|---|---|---|
| 20 | 8 | 0 | 40.0 |
| 20 | 9 | 1 | 45.0 |
| 20 | 10 | 2 | 50.0 |
| 20 | 11 | 3 | 55.0 |
| 20 | 12 | 4 | 60.0 |
| 20 | 13 | 5 | 65.0 |
| 20 | 14 | 6 | 70.0 |
| 20 | 15 | 7 | 75.0 |
| 20 | 16 | 8 | 80.0 |
八个未知里若四个胜,总胜十二除二十为六成;若六个胜,得七成。完整案例三分之二落在某些离散总体胜率之间,但没有理由把它直接填给缺失组。只有另加缺失机制或概率模型,才可能做统计推断;本篇没有这些输入,所以不把中点六成称为“修正后真实胜率”。
缺失原因台账如下:
| 人数 | 缺失原因 |
|---|---|
| 3 | 窗口未满 |
| 2 | 停牌未取到退出价 |
| 2 | 源缺失 |
| 1 | 退市终局待核 |
窗口未满可以等待预先设定的观察窗真正结束,再冻结补录版;停牌缺价需要查可执行退出或明确评价政策;来源缺失可换源核对,但要保持同一标签定义;退市终局待核需要真实终止现金流证据。不同处置可能改变标签可得状态,不能把全部原因一律用前值填零来追求完整矩阵。
补到标签后怎样避免改写历史选择
假设后来取得某个候选真实标签,先在原二十行上补一格,并记录取得时刻、来源和评价窗口。形成时特征与入池决定保持冻结,因为未来补到结果不是当时已有信息。重新生成覆盖率、完整案例分母及上下界;一个未知变已知,会缩小界限,但最终方向由补到的胜负决定。
若发现标签定义本身改变,例如持有期从五日改为十日,那是另一套评价任务,不应只补缺行而保持旧十二人的五日标签。统一窗口、价格口径、费用和终止事件处理,才有可比较的胜率。本文没有交易费用与真实可成交退出建模,标签只是构造收益符号,不能据此推断策略利润或执行能力。
按特征分组统计缺失也有意义。本例缺失全落后八位,提醒审阅者原样本和完整案例的特征分布不同;但这只是构造的一种非随机结构,不能由此断言任何现实缺失都按排名发生。完整台账让读者看到选择发生在哪里,而不是用一个胜率数字隐藏选择过程。
官方方法与能做的检查
scikit-learn Common pitfalls第12.2节说明预测时不可得信息不能用于建模,本文读取该节及预处理示例,核对日2026年10月24日。它不提供本篇缺标签胜率修正公式;四成至八成来自已知胜数与未知人数的有限枚举,不能声称已经调用某个机器学习包修复偏差。
实际核对可从形成名单左连接标签开始,检查每个原候选仍有一行,输出匹配状态和原因,再计算条件胜率与原总体界限。连接后若只保留both,待核八人会消失,这种代码即使顺利运行也改变了问题。应把“样本覆盖不足”保留在报告标题或图表旁,让读者先知道分母是谁,再解释数值。
本篇不以胜率替代收益风险。八次小胜与四次大亏仍可能合计亏损,而未知者的金额影响也不能从符号上下界推出。完整案例、标签覆盖与总体界限是三个互补产物,任何一个都不自动给出因子有效、无偏或可投资的结论。
数据六项自查母文用于检查总体数据健康。样本分割基础工具只辅助理解训练与检验样本的划分;本篇专门的逐行审计由教学表和标准库脚本完成,工具没有内置这些检查。相关核对可继续阅读行情时区夏令时对齐、行情API分页截断检查。
道积君编辑组,AI辅助编写与核算。本文为构造教学样本,公开脚本只使用Python标准库,默认在脚本同目录生成UTF-8、LF换行的JSON;不依赖pandas、网络或仓库。没有实测第三方框架或实际交易系统,不据此推断真实收益、成交或数据源可靠性。
复算资料
本篇编号DJ4-051。下载Python复算脚本(文本)与构造输入输出JSON,按编号核对本篇。脚本改存为.py后可用Python标准库运行,数据不是实际用户记录。