股票因子排名相同怎么处理:固定分组和换仓规则
股票因子同分时,需要明确组合规则。稳定排序可以保留相同键的输入顺序,却仍让供应商任意列顺序决定最后入选股票。先固定分组容量、同分键和已有持仓保留政策,再打乱输入,验证同一数据与账户状态仍生成同样成员、订单及费用。
本指南使用五只虚构美股、离散分数和美元合成持仓。CoTrading排序检查仍为规划或待核实,不假设内部评估器已经采用这些方法。下载文件定义一套独立确定构造,并逐项运行验收;目标是复现决策,不是从等级里制造额外预测信息。
排序前定义什么叫相同
固定分数字段与精度。来源只给评级时,同级在该测量上就是无法区分,不应编造小数来挑喜欢的股票。若有未舍入原值,需要在看结果前决定是否允许使用;入选不满意才提高精度,会改变研究规则,不能当成无关技术调整。
浮点近似相等也需谨慎。两两接近未必形成一致分组关系,逐条与前一只比较可能依赖顺序。预先明确舍入或区间桶,通常比临时容忍度更容易复算。本例用整数评级精确比较,不设置浮点阈值,故同分边界是明确输入,而不是计算误差解释。
一至五级不表示预期收益等距。四级不代表二级两倍收益,平均等级也不直接作仓位权重。本组合只使用次序。解释等级含义与实现排序是两件事,不能因为代码把等级转成整数,就声称具备线性收益预测关系,或据差两级决定双倍买入。
固定容量与边界裁决
选中组两个名额,其余三只在组外。先按分数降序。纯标识政策在同分内按稳定证券标识升序;旧股保留政策先优先已持有股票,再按同样标识解决剩余并列。容量仍是两个,不为避免选择而把全部同分股都纳入,改变投入比例。
保留优先级低于分数,不能让低分股票压过高分新股,也不能保留已经不在有效输入中的证券。它与允许名次下降一点仍继续持有的换手缓冲不同,后者需要独立参数。本题只研究精确同分,不把任意少交易规则混在一起,避免无法说明成员为什么留下。
旧持仓集合是显式输入,必须随分数快照保存。两次运行期初状态不同,同分选择可以合理不同,这不是不确定性;但隐藏全局持仓会让看似同样输入产生不明差异。验收时核数据也核状态,不能只比较代码和当天分数,忽略上次实际成交留下什么。
稳定排序为何还会随输入改变
Python官方排序文档说明,相同键会保留原输入顺序。这个性质有用,但不会自动创造经济上合理的决胜键。供应商调整列顺序时,只按分数的选择就可能在任何分数都没变的情况下换股,随后产生真实模拟费用。
样例A五分,B、C、D四分,E一分。原顺序只按分数取前两,得到A、B;输入全部倒序,得到A、D。两份结果都满足分数降序,差异完全来自未定义的四分内部顺序。只看最高最低分或组容量,无法发现这个问题,需要检查具体成员。
不要改用可能历史复用的显示代码就认为根治。正式证券主表需要稳定身份及明确排序表示。本例A至E固定唯一,所以足够。真实股票更名、代码复用、股类变化时,显示名和内部身份应分开,不让表面字母顺序变更成为隐藏策略参数。
手算两种已批准政策
账户旧持A和C。纯标识先A,再由B赢第二个并列名额,目标A/B;旧股保留让C在边界胜出,目标A/C。两者均严格两名额,既没有纳入第三只,也没有临时给所有四分股平均分配。不同结果来自明确政策,不是哪个排序函数更聪明。
遍历五条输入的全部一百二十种排列。每一次纯标识都必须A/B,保留都必须A/C。它比检查一次随机打乱更强,但仍仅覆盖这组五行分数和旧持仓,不代表任意市场数据永不出错。实际新增规则后,还需针对相应状态补充新样本。
把C降低为三分,B与D仍四分,此时保留也必须选A/B,因为C不再与边界同分。把C从有效输入删去,同样选A/B。这两条反例与输入顺序依赖不同,防止实现误写成“始终保留旧股票”。有持仓不等于永久有资格,评分与资格仍高于同分优惠。
同分决定怎样形成费用
两个账户期初均四十股A、四十股C和现金二百,参考价与后续估值都十,权益一千。保留政策没有订单,权益仍一千。每天重新评价排名,不自动产生费用;费用跟执行订单走,不跟运行次数或输出一条信号走。原有买入费用不在本次调仓比较内补造。
纯标识卖四十股C,价十、虚构费一,再买四十股B,价十、费一。现金一百九十八,股票价值八百,权益九百九十八。两单位差额全部来自平价替换费,不估计哪只四分股票未来更好,也不证明保留普遍提高预期收益。此处人为平价是为了隔离成本机制。
成员表旁保存真实模拟一卖一买。排名列表变化可能无实际数量变化,边界替换却可能带来往返。只算等权分组回报会忽略同分驱动换手,让长期评级不变时曲线仍被费用影响却难以解释。因此至少保存目标数量与实际数量,不把有序列表位置直接当订单。
执行确定性验收包
下载完整示例,保存为R566.py,使用Python 3.12及以上运行python R566.py。仅标准库、合成数据,不联系外部服务,源文件为docs/growth/research/round-5/examples/R566.py。
断言检查两种政策全部一百二十排列,展示只按分数倒序失败,核对C降分及失去资格时不得保留,并闭合平价账户。输出同时保存朴素与批准名单,读者可以独立解释每个差异。若只是随机试一次没看到变化,不足以证明已消除任意输入顺序的影响。
多日研究保存状态再更新
逐日归档分数精度、股票池、前期实际持仓、容量、同分政策和最终目标。比较业绩前,先从这些工件复现一次边界并列。重跑时账户状态若被错误清空,即使分数完全相同,也会改变保留行为;这种变化不能归因于数据供应商或信号失效。
同分机会、请求替换和实际执行拒绝分别计数。确定政策可能发出替换,但交易失败后实际旧股仍在,影响下一次保留判断。不能用未成交目标更新旧持仓。本样例假设全部成交,没有验证部分执行,实际引入后需增加一个拒单后再排序的连续状态案例。
库升级或分组实现变化后,重跑排列样例和一段已保存账户转移。新规则即使也确定,也可能不同于旧批准规则;保留版本,说明哪些历史成员会变。完成条件是同一声明数据和状态复现同一分组及费用路径,而不是声称同分处理增加了测量本来没有的选股信息。
旧持仓快照在本期决策中保持不变
开始评价截面前冻结上一期实际持仓。不能一边扫描候选一边把新入选加入保留集合,否则后面股票的同分判断又依赖遍历顺序,排列测试保证被绕过。批准排序键在整次决策里只读同一份快照,结束后等真实成交再更新账户,不将临时目标提前写成旧股。
快照标识、评分快照和政策版本一起存,两份实现不同先比这些输入,不先调决胜键。昨天目标没成交就不是已有持仓,今天失去资格也不能凭昨天账户争取保留。降分与失去资格反例就是为了区分这些状态。确定性指完整研究状态相同才相同,不是只看当天评级相同。
审阅还要说明第二名为什么入选:是分数更高、精确同分下旧股优先,还是最后标识键胜出。原因不能只写“排名第二”,否则政策切换后难以追查。本例C不是因为未来更好留下,而是旧持仓且与边界同分。提前写出这条理由,可以防止看完表现再把有利成员称为稳定选择。
若实际系统只提供按输入顺序分组,研究者可以先明确记录这个行为,或在独立研究层替换为批准键,再重新核对成员与费用,不能既沿用原顺序结果,又在报告声称已经顺序无关。需要一致的是实际执行规则与描述,不是某个术语听起来更稳健。测试提供证据,不能替代实现变更本身。
常见问题
稳定排序保证打乱后同一组合吗?
不保证。同键保留传入顺序,仍需独立确定决胜键。
保留规则能留下更低评级股票吗?
本政策不能,它只在合格证券的精确同分内应用。