跳到正文

研究指南

股票因子研究

多加一个选股因子有用吗:比较合成评分和实际持仓

新增选股因子是否有决策价值,需要看它改变哪些成员、数量和成本。先冻结合成规则,在同一合格截面比较基础与合成分数,再把每次替换接到独立账户账。低相关或好看的回归系数不能替代这个组合检验,也不能直接命名为独立收益来源。

本指南用四只虚构美股、给定等级秩和美元合成价格,CoTrading多因子检查仍为规划或待核实。只测试固定等权合成,不搜索最优权重,不估计独立风险溢价,也不把人为账户结果当历史成绩。交付是基础与合成排序、边界成员、增量订单及净差异。

合成前先定义候选

记录两个因子原始定义、时间、有效域和经济方向。一个低值优先、另一个高值优先时,先统一偏好再合成。候选缺信息不是中性零,除非明确另有插补政策。覆盖表与数值表分别保留,避免候选覆盖更窄造成的样本差异,被误解释成评分带来收益。

本例两个因子都收到四至一的序数秩,高值更优。这是作者给定同一截面排序,不表示预期收益等距。真实研究的排名、标准化或其他变换只用允许窗口,并保存规则。不能把两种原单位直接平均,再因结果数值漂亮就声称可比,方向和尺度都应有先验说明。

看后续估值前固定各百分之五十评分权重。评分权重不同于股票资金权重,账户下面每只四十股并预留现金。配置分别命名,不能把“两个因子等权”写成“每股占半个账户”。选择层、数量层和执行层独立,可以让后面差异准确归到发生变化的一层。

对照群体和时点保持一致

两种构造使用相同四股、信息截止、决策与成交事件。若候选缺覆盖,可以先在共同合格池比较,但必须报告限制;另一份部署研究再评估丢失覆盖的代价。不能基础用全池、合成只用某类股票,随后把群体差异全部归因新增分数。名单变化先看资格再看排名。

新增字段同样受可得时间限制,不能因为基础因子不用它,就读取未来修订财务。保存变换与合成版本,让后续能区分新持仓来自候选修订、基础变化还是正常时间推进。未知时点应保留缺口,不用整体信号移动一行就当所有输入历史正确。

固定方法取两秩算术平均。Python统计模块说明提供独立脚本所用均值工具。计算简单不验证等权的经济合理性,它只是本例预先声明假设。需要估计权重的研究属于另一个问题,不在这里根据结果反复调整到候选看起来有效。

基础与合成名单逐项计算

基础A四、B三、C二、D一;候选A三、B一、C四、D二。等权后A三点五、B二、C三、D一点五。按分数降序,稳定标识升序决胜,取两股。所有输入都写在表里,不依赖隐藏归一化或外部模型,因此任何读者可手算。

基础选A/B,合成选A/C。A共同保留,B因候选给它最低秩而失去边界位,C凭最高候选秩进入。每股保留基础贡献、候选贡献、合成分数和选择状态,不只报告组合平均分。边界解释比“因子相关性较低”更接近真实发生的决策变化。

这不是因果估计,只说明一个冻结容量与权重下替换一只。其他名额和权重可以有不同结果,属于新增实验。不能调到某只喜欢股票恰好进入后,再把最后权重称为原始测试。尤其候选表现差时不偷偷减权,表现好时再强调等权,避免结果选择替代设计。

从相同期初持仓分别核账

账户开始有A、B各四十股,参考均十,现金二百,权益一千。这是给定期初状态,较早买入成本不在这次调仓比较里补造。两份研究读取相同后续估值,不能一边用收盘另一边用清仓收入,造成终值口径不一致。

基础保持A/B,没有订单。A后续十点二、B十点一,持仓分别四百零八、四百零四,加现金二百,权益一千零一十二。重新计算排名不会自动收一笔日费,收费只跟实际执行动作走。无新增单本身是可验收结果,不能为了显示系统运作而重建全部仓位。

合成保持A,按十卖四十B,再按十买四十C,每笔虚构费一。现金一百九十八,A十点二值四百零八,C十点五值四百二十,权益一千零二十六。相对基础净增十四,不是直接拿合成分数差乘资金得到,而是来自成员替换后的实际估值和费用。

拆清增量但不命名收益溢价

C位置四百二十比B四百零四高十六,替换付二,净剩十四。两条计算桥一致,说明合成决策确实进入账户,不是只改变报告标签。这个增量不是相关系数推出来,也不证明候选以后持续有用;人为估值仅让机制可检查,无法提供市场有效性证据。

最后双方都仍有持仓,若比较清仓需分别提供退出价格与费用,不能把一份估值权益和另一份已扣清仓费现金直接相比。大面板里候选引发多次替换,还需计数量取整、资金约束和未成交目标。毛优势若被成本吃掉,应原样展示,而不是只保留最有利口径。

候选可以大幅改变分数却不跨选股或数量边界。此时没有新增订单,也可能没有实际决策收益。统计变化与经济变化应分别记录,不能因某指标显著就强制认定组合改善。下面用明确冗余候选检验这一点,避免代码为了新增字段而制造无必要换仓。

复制基础因子的反例

把候选换成基础秩的完全复制,仍用等权,合成每股等于基础,成员仍A/B,没有订单、没有增量费。脚本明确断言,不为了表现“用了新因子”而先卖再买。它与主例边界替换是不同机制:一个改变决策,一个只重复已有信息。

即使某候选相关低,也不能保证跨边界,只有完整规则能决定。复制例故意简单,让无必要重建仓位的实现容易暴露。每只保留候选单独秩、合成秩及标记,读者才能看出变化来自决策、覆盖还是报告重算。不能用此合成对照认定独立收益来源。

运行增量决策样例

下载完整示例,保存R570.py,用Python 3.12及以上执行python R570.py。仅标准库和合成数据,源文件docs/growth/research/round-5/examples/R570.py不访问任何外部接口,不需要账户和密钥。

断言核合成分数与选择、A/B对A/C、两张替换单、基础零费、合成费二、权益一千零一十二与一千零二十六,以及复制候选不改成员。十四的汇总旁应查看持仓前后,避免不同错误刚好抵消。实际成交无法满足目标时另留拒绝,不把它改写为未曾选择。

脚本逐项断言合成评分字典、基础订单为空且现金二百,以及卖B买C各四十股、价十、每单费一。合成现金必须一百九十八、费用二。报告增量由合成末权益减基础末权益实际计算,再断言十四;即使两个终值仍正确,删除订单追加也必须失败,不能把正确汇总当成流水完整证据。

更新时保持问题不变

归档冻结规则、权重、变换、可得政策、股票池和期初持仓。每次新版先定位首个输入差异和首个成员差异,再解释账户结果。候选定义变了就另开比较,不无声拼入原系列。真实历史扩展报告覆盖、换手、暴露、费用与日期,市场执行规则另行核验。

完成条件是检查者能复建准确决策增量和净现金后果,包括没有变化的分支,不是证明权重最优或存在持久因果优势。若研究下一步确实要估计权重,需要新的训练验证设计与成本约束;不要把本题小型确定对照扩写成未运行的优化结果。保留原版也有助于分清后续改进到底来自哪里。

比较窗口和会计状态一起对齐

给定旧持仓意味着这里只比较下一次调仓,不是说完整历史策略没有买入成本。真实报告从更早开始,两种构造都要包含早期交易;结束若清仓,也用可比末期规则。否则所谓新增因子增量,可能只是账本窗口不同。把开始状态与计费边界写在输出旁,不让同一个权益数承担不同含义。

实际持仓与请求目标分开。请求从B换C但没成交,不能给账户记C之后估值。样例假设给定价全部完成,真实扩展需先传播拒单与现金限制,再归因候选表现。新增因子改变候选,不保证对应资金能同时买齐;若用目标收益代替实际账户,会把不可执行优势混进净结果。

如果一次修订既改候选定义又改执行窗口,先拆成可独立对照版本。观察到的合并差异可以如实报告,却不能全算因子贡献。保留旧规则与工件,后续才有条件判断哪项变化带来什么,而不是在一份不断变化的配置上追逐更高数字,最后无法复算原始比较。

常见问题

低相关能证明候选帮助组合吗?

不能,实际影响由冻结合成、选择边界、数量与成本共同决定。

不变成员需要强制再交易吗?

固定数量目标不变时,不需要替换订单。

相关阅读