同一篮子股票等权还是波动率倒数加权:按期生成并比较权重
等权与波动率倒数加权的比较,不能只把两组数归一化。需要相同固定股票篮子、历史窗口、调仓日和资格政策,再执行含现金与费用的交易,允许调仓之间真实权重漂移。风险工具输出的是目标,不是已经筹足资金的完整账户。
本文在三条虚构股票历史上运行两种方案,为多头、单币种外部扩展,允许碎股和简化成交。CoTrading能力规划或待核实,数值不是历史绩效,也不建议据此选择实际资金权重。固定篮子不被改成因子选股问题。
冻结篮子与共同资格
比较前选定证券,记录稳定身份与成员期间,数据、日历、成本、资本和末期估值保持共同。股票池不同可能解释收益差,因此不能一边改权重、一边换成员,却仍称只比较加权法。真实历史成员范围也应有来源,不能默认为当前存续名单。
每次使用此前三个完整回报。历史短、缺失、非有限或样本波动率不高于一万亿分之一,股票从两方案都排除。阈值为本例明确政策,不是通用市场标准。零波动不能获得无限倒数权重,也不能无依据用极小常数强行制造满仓。
因此等权也只作用于相同合格子集。如果另一个问题想让等权保留恒定价格股票、倒数法删除,那是不同政策比较,应明确而非静默改变资格。本文C虽在固定原始篮子中,但两边都因零波动获得零目标,不隐藏这个范围变化。
只用已知历史计算目标
等权每个合格股为1/m;倒数法为(1/σi)/Σ(1/σj)。skfolio倒数波动率文档说明此归一化规则。本文资金账户为另加原创计算,不声称归一化本身就执行交易,也不认证产品风险工具的完整性。
波动率采用Python statistics记录的样本标准差,窗口只含持有前已经完成的回报。不能把待评价期放入自己的权重估计,也不能全样本算一次波动,再追溯应用到早期。真实信息时点和成交时点还需对齐。
倒数法使用各股边际波动估计,不是一般协方差优化。归一化不证明普遍等风险贡献,也不保证未来回撤更小,相关性、估计误差和窗口仍影响解释。本文没有计算完整风险平价解,不用类似名称扩大方法范围。
固定合成历史与逐期权重
A八期回报[0.01,-0.01,0.02,0.01,-0.02,0.03,0.01,0.01],B为[0.02,-0.02,0.04,-0.01,0.03,-0.01,0.02,-0.02],C全零。价格都从一百起,按虚构回报复合形成,未读取真实股票行情或账户。
持有索引三、五、七调仓,每次用此前三期。计分三至七,共五个账户回报,前两个持有块各两期,最后一块一期,无外部资金。C价格有效但波动零,两边持续排除。首次B波动是A两倍,因此等权各半,倒数A三分之二、B三分之一。
| 调仓索引 | 等权A/B | 倒数A/B |
|---|---|---|
| 3 | 0.500000/0.500000 | 0.666667/0.333333 |
| 5 | 0.500000/0.500000 | 0.559661/0.440339 |
| 7 | 0.500000/0.500000 | 0.452706/0.547294 |
后两次倒数目标真的随历史窗口重算,不是把初始固定权重改名动态。代码改变较晚回报,断言首个目标不变,用于检查本地信息边界;它不证明真实系统不存在全样本预处理或其他隐藏依赖,接入时仍需另外核实。
同时筹足持仓与费用
初始现金一千,每次按双边绝对成交额收零点〇〇一,即假设十基点。允许碎股和边界价即时成交,开盘等于前收盘,无跳空。这是理想模型,不证明可以在真实开盘用未知最终价格精确下股数,也不模拟盘口流动性。
设扣费后投资额V、目标w、原持仓市值h,解V+0.001×Σ|Vw−h|=交易前权益。脚本二分求解,再算股数差与现金。先把一千全部买股,再另扣费用会形成借款,违反本例自筹资金政策,不能把负现金藏在权重已归一化的图里。
notional = sum(abs(new_shares[s] - shares[s]) * prices[s]
for s in basket)
cost = 0.001 * notional
cash = pretrade_equity - sum(new_shares[s] * prices[s]
for s in basket) - cost
首次全现金投资额1000/1.001,约九百九十九点〇〇〇九九九。每次断言现金在一亿分之一容差内非负,交易后权益等于交易前减费用。这是目标之外的资金验收,不因为权重和为一就自动成立。
调仓之间让实际权重漂移
非调仓期股数固定,按随后价格估值,不能每天把展示权重重置目标,却不记交易。第一块结束,等权A约零点四九二五六、B零点五〇七四四,已偏离各半。实际权重分母为扣费后净值,也不能继续拿初始资本计算。
索引五,等权为恢复目标约买零点〇七三八九九股A、卖零点〇七〇五一五股B;倒数目标变化更大,约卖零点九九四〇四三股A、买零点九四四七三三股B。完整输出逐次列目标、股数差和持有块结束权重,能看出归一化怎样落到执行。
换手为固定五个计分会话的双边绝对成交额除初始一千,不年化、不除二。费用已经进入账户净值,不能从显示净回报再扣一次。真实整股、最低费用与现金残余可能改变结果,需要相应执行,不应只把本例小数股数舍入后沿用收益。
对比成本后表现
| 指标 | 等权 | 波动率倒数 |
|---|---|---|
| 期末价值 | 1023.715184 | 1018.583882 |
| 净回报 | 2.371518% | 1.858388% |
| 总费用金额 | 1.029243 | 1.433830 |
| 总成交额/初始净值 | 1.029243 | 1.433830 |
| 最差带符号回撤 | 负0.501480% | 负0.664589% |
费用和换手数值碰巧一致,是初始一千乘费率零点〇〇一所致,单位不同。本例倒数方案换手更高、实现回撤更差,名称不保证事后风险收益更优。不能只发布支持某种偏好的指标,或把先前较低单股波动说成组合未来风险保证。
样例按绝对百万分之一核验准确末值,并检查筹资、首权重和漂移。五个合成账户回报不足以形成长期结论,保留全路径与假设。输出既有交易费用,也有实际持仓块结束权重,避免只展示目标时显得始终等权或始终低风险。
零波动与缺历史边界
边界输入含恒定股票和只有两条历史的股票,两种方法都得到空合格集合。缺失值也共同排除。另跑全恒定完整价格账户,最终现金一千、费用零,不除零,也不把不存在的风险权重归一化成虚构仓位。
历史不足不允许编价格估现有持仓。若估值或执行价缺失,需要停止或遵循另立数据政策。本文在资格函数检验缺失历史,完整账户使用齐全价格,并非通用缺行情引擎,不能把共同排除规则当作所有数据故障都已解决。
真实持仓后来因资格失效需要退出时,也要将卖出及费用推进账户,而不是只从权重表删掉。这个政策与首次无仓位不入选不同,生产扩展需要保存原因和日期。本文合成C从未入场,不包含真实停牌无法卖出的情境。
交接逐期资金证据
归档固定篮子、各窗可得历史、资格表、目标、成交股数、费用、现金、估值与漂移。每次调仓可从前状态重算,证明买入没有使用未来盈利。缺一类证据时,权重工具输出仍只是建议配置,不能当完整资金回测。
检查起始现金、费用单位与调仓次序一致,两法都在相同价格和日历下执行。资金约束求解只针对当前比例费用模型;真实最低收费或整数股数需要新的求解与验收,不能宣称二分公式覆盖所有市场规则。保留无法实现的目标与残余现金,而不是抹平差额。
接手者可以先核对首次扣费后可投资额,再从A、B目标价值除当前价得到股数,与输出两边第一笔数量相符。后两次则先估旧持仓,按买卖差额计费,不能每次都对全部资产重新收一次费用。用这两种边界抽查,能发现把目标名义金额误当实际换手的错误,也能解释倒数法费用更高来自哪些调整。
运行与验收
下载完整示例。使用Python 3.12或更新版本,运行python R627.py。标准库断言共同资格、滞后目标、未来变化不改首权重、现金退路、费用自筹、漂移和上述准确期末,输出全部三次调仓的数量变化。
两方法同信息、同资格,目标落实到有资金支持的交易,成本和漂移可勾稽,才接受比较。篮子、窗口、日程、费用或执行政策改变后重建,保留旧运行。方法不认证真实产品风险工具,也不证明任何市场盈利,不能把合成优劣改写成实际配置建议。
常见问题
归一化权重已经包含资金和费用吗?
没有。需要独立账户执行流程筹资并记账。
等权可以静默保留零波动股票吗?
本比较不可以,两方法刻意共享已声明资格规则。