跳到正文

研究指南

股票策略开发

股票低波动选股回测案例:固定窗口排名与月度持有

低波动策略按风险特征选股票,不保证正收益,也不是最小方差优化器。先冻结收益窗口、新鲜度和流动性、月度排名、股票等额及真实订单时点,再核袖套、现金、费用和末期处理。低风险分数本身不能证明可交易,更不能替代每月成员与退出路径。

本指南用二十二只合成美股、二十个月度名额和美元账户,CoTrading防御选股能力仍为规划或待核实。没有历史成分服务、借贷或真实券商测试。所有权益用于验证机制,不是实际低波动业绩,也不根据结果优化窗口、股票数或风险目标。

六十三收益需要六十四价格

指定完整收盘需六十四条兼容价格,构造六十三个简单收益,即当期除前期减一。不能直接对价格水平算标准差,也不能把六十三价当六十三间隔。保存窗口两端日期,检查代码是否含当前,与文章写的历史长度一致,避免同名参数实际少一条。

本例取这六十三收益的总体标准差。Python统计官方说明区分它与样本标准差。分母是声明约定,不认定普遍最优。相同窗口相对排序无需年化,若报告真实年化风险,应另写频率与缩放,不能把排名分数直接当账户未来风险。

合成原始价格没有公司行动,现实需统一分红与复权。不同供应商同名价格可产生不同收益,历史成员缺口也不能由正确波动函数修复。市场与币种保持同一,不用跨市场股票补名额。输入来源、版本和资格应先于评分保存,让新旧结果能追查。

先排陈旧再奖励低风险

全部六十四价有限正,且按给定price_age都新鲜;六十三量有限正,平均至少一千股。门槛预先固定,这个数是教学假设,不是现实容量估计。零量本政策不合格,不能填成一让股票继续参与;新鲜度也不能仅由数值是否变化反推。

前填的停牌或不可用价格会产生人工零收益,不能因为标准差小就获胜。新鲜状态与价格有效分开,重复十的有限序列,不足以证明发生可交易观察。缺bar也不自动证明正式停牌,真实状态需要来源,本例只按显式年龄与活动输入裁决,不补造市场事件。

另一方面,真正新鲜且有活动的平价可以有零估计波动,本契约允许。样例包含这个反事实,不把所有零风险分数都等同停牌。资格判断看证据,不能仅因为数字与陈旧控制相似就删除。这样低波动选择不会一方面奖励坏数据,另一方面又无依据排除合法平价。

合成截面成员重建

S01至S20交替正负简单收益,幅度从零点零零一到零点零二逐步增加。S21幅度零点零零零一但缺第一价;S22平价、零量且初始整段报价年龄一。它们分别检验正常排序、历史不足和陈旧伪低波动,原始数据与资格原因一起保留。

索引六十三,最低有效二十只依次S01至S20,S21因价格不完整排除,S22因陈旧排除。不能把它们转成零风险来填名单,精确成员与原因均断言,不只检查数量二十。若坏数据进来,即使最后也恰好二十股,策略含义已经被改变。

第二月决策索引八十四,过二十一会话,六十四价窗口从S21缺首价之后开始,S21首次完整且最低,名单为S21再S01至S19,S20退出。这是历史覆盖随时间变完整,不是向过去补了首价。原缺失继续保留,第一次选股不能被后来资料改写。

月度持有与数量独立

决策下一给定开盘执行,分别六十四、八十五,之间保持成员,不日内或每日重新排名。排程是明确合成索引,不查询真实交易所日历。真实月末需要会话映射,不能默认二十一行永远等于一个月;这里用相距二十一会话构造两次可检查事件。

每只四十股,给定交易价十时各四百,二十股袖套八千,初始资本一万,余款保留现金及费用。等额只指股票部分,不声称账户满仓。若合格不足二十,固定分配设计留空位现金,不给余股加杠杆。普通样本两次都足二十,数量在执行账中核验。

窗口改变与资金权重改变是不同实验。本例不按分数反比加仓,也不借贷对齐风险。某只最小波动不表示它独占大部分资金,等额规则在看结果前固定。若改目标波动或最小方差,需要协方差、优化约束和新样例,不能从本排序名字自动推断支持。

首次进入和每日估值

二十单各四十股价十,每单虚构费一,买后现金一千九百八十、费用二十、持仓二十股。每单标识、方向、数量、价格和原因都精确断言。执行价下股票价值八千,立即开盘权益九千九百八十,不因输出了一条月度信号就再额外收费。

每日权益用所持股票给定收盘,不永久沿用买价。首个持仓收盘约9,943.406948,与立即开盘9,980不同,因为收盘标记不同,没有额外现金交易。原脚本保留高精度值,文中近似展示不是新的舍入政策,更不把这项未实现变动当成已卖损失。

第二次以十卖S20四十股、费一,再以十买S21四十股、费一,十九个继续成员不换仓。现金一千九百七十八,累计费二十二,仍二十股。当期给定收盘均十,权益九千九百七十八。这个桥明确解释成员替换成本,不用排序收益代替实际持仓价值。

末期清仓单独命名

教学运行另有固定结算开盘八十六,不从传入末行推导。二十位置按十全卖,各费一,最终现金与权益九千九百五十八、总费四十二、数量零。平价交易使最终损失四十二全部来自费用,中间估值仍会波动。这是合成账,不是实际防御策略风险收益。

若报告在清仓前截止,应使用当时持仓估值,不能偷加另一运行的末期费用。S20在八十五是月度退出,八十六全部是结算退出,原因不同。末期会计事件不表示策略主动抛弃所有低风险股票,日期也不能在前缀测试时移动,让短数据凭空出现清仓。

真实最后一日可能受市场限制,本例给定可成交开盘,不认证所有证券末日一定能变现。扩展时须另外检查实际许可,无法卖就保留持仓与不确定性,不能用报表需求覆盖交易约束。教学结算在这里完整实现,只因情景明确允许,而不是通用强平保证。

运行低波动验收包

下载完整示例,保存R587.py,用Python 3.12及以上运行python R587.py。仅标准库和合成输入,文件docs/growth/research/round-5/examples/R587.py不联网,不拉历史价格或成员,也不连接实际账户。

断言核两次精确名单、首次两项排除、全部进入单、S20/S21替换、现金一千九百八十与一千九百七十八、末期九千九百五十八、费用和零持仓。末期订单数量与字段同核,不能缺交易工件却只因终值正确通过。普通路径既算信号也实际推动现金与股数。

额外把S22年龄变新鲜但仍零量,要求流动性排除;再使新鲜有量,真实平价零波动可入选。六种坏价格排除S01。进入后截断仍保持此前账,替换未来价格不改首次名单。它们分别核资格、数值与未来边界,不以一项通过代表其他全部正确。

反向控制给S22正成交量但保持陈旧年龄,仍必须排除。这把新鲜度与零量门槛分开,不能只用一只本来就会因流动性失败的股票,来支撑陈旧价格已被正确处理的声明。

风险结果不等于收益保证

Investor.gov订单说明区分观察参考价与保证执行价,真实模型需价差、流动性、公司行动与制度证据。十元开盘是明确假设,不是数据模型自动保证。低历史波动仍可能集中、跳空或亏损,不能给结果冠以安全承诺。

本策略不借贷设目标风险、不解协方差优化,真实研究若进行,应在收益旁报告暴露、排除、换手与成本。窗口端点、估计器、新鲜度来源、量政策、月度排程、容量、数量和结算一起归档,来源或执行变更后重跑。先比较成员与订单,再解释新净值,避免混淆变化原因。

完成条件是低值优先、陈旧排除、月度持有及退出现金全可复现,不认证最小方差或未来盈利。这个有限包能让接手者清楚看到何时有资料、何时选、何时卖、何时只是估值。实际风险有效性需要独立历史样本和对照,不能从几个正确小数或合成平价清仓推出。

常见问题

陈旧平价会因为零波动获胜吗?

本例不会,新鲜度和活动门槛先于排序。

这是最小方差或杠杆风险目标吗?

不是,是带现金预留的固定窗口选股。

相关阅读