股票短期反转回测案例:五日跌幅排序与固定持有退出
股票短期反转案例不只是一列输家排名。先冻结流动性、周度决策、下一开盘、五期批次到期,以及重叠信号处置,再闭合股数、费用和现金。不能股票每次又入选,就延长旧批次到期,把固定持有变成无限等待反弹,最后仍沿用原策略名称。
本例在美元账户买十只虚构美股,价格与结果全部合成,CoTrading策略案例仍为规划或待核实。它验证反转机制与会计,不提供真实反弹、稳定盈利或流动性冲击完整模型。没有调用行情和券商,所有盈利仅为人为价格下可检查的计算,不构成历史业绩。
说明反转假设与范围
假设是最近短期输家可能随后反弹,不代表所有下跌股票都值得买。French短期反转原始说明采用月度规模与前期收益组合。本例五交易期、十股、纯做多构造不同,不复刻该公开因子,也不引用其历史结果为本策略收益。
排序前选一个市场与历史资格池。这里只给十二个名字,不提供美股历史成分服务。真实研究还需代码变迁、退市、公司行动和兼容收益价格。当前幸存名单回填仍有幸存者偏差,即使下面每笔批次完全算对,数据群体也未因此恢复当时可投资机会。
门槛在看退出结果前固定:最近五条量有限正、均量至少一千股。它是教学阈值,不证明实际容量,故意排除一只极端但低量输家。不能看谁反弹成功才选排除原因。真实流动性需要更多字段和执行证据,日均量规则只是明确可算资格,不是完整冲击估计。
形成区间与周度排程
指定完整收盘的分数为当期价除五期前减一,五个间隔需要六个有效价格,取最低十只,同分稳定标识。缺失、非有限、非正历史先排除,再算除法;量无效也不能通过资格。处理顺序保存,不能先得到无限负收益再把它误作最深输家。
合成周度决策索引五、十,相隔五会话,下一给定开盘六、十一成交。索引代表已声明周度计划,不查询真实日历。正式适配把选定星期映射到节假日与实际会话,不能简单按日历加五。排程与形成端点分别存,防止第二次信号错用尚未完成数据。
每次进入四十股,给定开盘十时每只四百,十只名义金额四千,初始资金一万。账户有意留现金,不把股票篮子假设为全资本。数量与分数幅度独立,不因跌得更深额外加仓;改数量方法就需要重新核资金和费用,而不再是同一案例简单换个图。
手算十只输家
编号股票形成价按十减编号乘期数再除一百产生。决策五时,S11由十至九点四五,负百分之五点五;S02至九点九,负百分之一。合格最深十只为S11直到S02。原表保留所有十二股分数和资格,不只导出赢家,便于解释边界为何排掉另外两只。
S12跌到九点四、跌幅最深,但均量仅五百,被预定门槛排除。S01有流动性,却跌得浅未达十名边界。两种原因不同,不能统一叫未入选就丢失证据。若后续供应商修订量,只能按新版本重建资格,不回头挑更有利名单,说原来始终如此。
实际进入开盘另给十,不是形成收盘,可能已经跳高。不能把低形成价到十的变化算作账户利润。Investor.gov订单说明也区分观察价格与保证执行价;本夹具假定给定开盘全成,现实能否如此要另有价格、价差和容量模型。
批次到期一经进入就固定
六期开盘进入时保存四十股、进入六、到期十一,五个开盘间隔。反复入选不替换或移动到期。每批历史依实际进入,不以最近信号重置。若只保存证券最后入选日,容易让高频反复资格把旧持仓永远延后,从而偏离原本固定退出假设。
执行开盘先处理到期,再处理新增。同一开盘刚退出的证券不立即重进,未到期旧批也不重复。这是明确重叠政策,不由字典顺序决定。若想允许多个同股批次,要另有逐批数量、资金与退出,不能只把布尔持有改成允许重复,就声称已完整支持。
第二周信号仍选同十只,但十一期开盘都到原到期,所以卖出,记录十个同开盘重入跳过。新信号不能无限延长旧批。这里没判断这项限制未来是否最好,只确认实现一致。不同重叠设计可以研究,但必须有自己的规格和预期,不按盈利结果临时放宽。
进入、持有与退出现金闭合
初始一万,十张各四十股价十,总名义四千,每单虚构费一,现金五千九百九十。同开盘股票值四千,权益九千九百九十,减少十为费用。断言全部买单、数量和到期,不只检查总持仓四百,因为选错一股也可能保持相同总数和金额。
十一期每股退出十点二,四百股毛收四千零八十,扣十笔退出费,最终现金一万零六十,无持仓。总费二十,价格毛增八十、净增六十,占初始资本百分之零点六。这是合成账,不是真实历史收益,不能按年化或交易次数外推成预测。
股票袖套实际开盘间涨百分之二,账户只投入百分之四十且有费用,两者不能互换。形成期负收益是过去排序输入,既不加到未来利润,也不在进入前就从账户扣损。分开形成、持有和账户三层,才能避免把“跌得多”同时当选择理由和已经赚到反弹。
运行完整批次样例
下载完整示例,保存R585.py,用Python 3.12及以上执行python R585.py。仅标准库和合成价格,源文件docs/growth/research/round-5/examples/R585.py不联网、不读凭证,不使用真实证券历史记录。
断言核精确十名、S12排除、全部买卖单、进入现金五千九百九十、到期十一、终值一万零六十、费二十、持仓零与十次重叠跳过。非有限执行开盘直接拒绝,不拿来造现金。数量、价格、费用与原因一起比较,避免仅末值正确却流水丢失的问题。
输入在首次进入后截断,历史账仍需相同;未来收盘大幅改动,首次名单也必须不变。到期来自进入加五,不依赖传入末行,所以短数据不会为了结算凭空多卖。这个前缀边界很重要,避免测试末期强退改变此前已存在的规则行为,混淆生命周期与报表收尾。
不同反例放在正确层解释
低量S12是选股资格反例,第二周重复信号是持仓生命周期反例,不能都用改回看期解决。排除、到期和跳过分别保留。开盘跳空是另一个账户输入,不允许用较早收盘替代。三种机制即使都改变净值,也有不同所需证据和修复,不应仅归为回测误差。
真实日线不能完整模拟困境股票价差、冲击和流动性。模型无法论证成交时,报告限制或另设明确执行压力测试,不保证买到不可进入的反弹。美股多头样例也不能自动搬到其他制度,不能为了更漂亮收益挑无真实可买条件的极端样本,然后省略未成交记录。
扩展前冻结研究包
归档股票池、排程、公式、量单位、容量、数量、批次期限、重叠优先级、成交与费率版本。加入历史绩效前,从原观察复建普通批与重叠信号,再计算收益指标。来源或成员变化后先比名单与到期,再解释新结果;执行假设变化也需另存,而不是静默覆盖旧账。
完成条件是选择、固定批次和实际模拟现金都可重建,包含明确不重入,而不是证明短反转真实盈利。若扩大到多批资金共享,先定义卖出释放和同时新增的分配,再添加独立验收。这个小例覆盖的是一个透明闭合路径,不能因十股都算完,就声称复杂多期策略已全部实现。
数据在到期前结束时保留仓位和原期限,不能为了报表空仓而倒填退出。前缀夹具故意停在进入之后,对照完整运行已有账。另加末期结算可以,但原因和费用必须区别于策略五期退出,不能混成一次主动卖出。这保护时间测试,也保留批次绩效实际对应哪个持有区间,避免短样本被收尾需求改写。
常见问题
新输家信号能推迟原退出吗?
本固定批次不能,到期由原进入决定。
跌幅最大就一定入选吗?
不一定,流动性和有效历史先于排序,S12即反例。