跳到正文

研究指南

股票组合与模拟研究

多个股票策略买到同一只股票:合并目标权重再调仓

两个股票策略都满仓,也都买同一证券,合成之前需要共同资金预算和统一身份,再执行组合限制。直接相加得到两份资本暴露,不是单账户可筹资配置;各策略单独合规,也不证明重复股票合并后未超限。

本文合成两个同币种多头袖套,显式把超帽转现金,再运行两期合成调仓,为外部扩展,不证明CoTrading共享账户路由。价格、权重、零费用成交均虚构,没有真实下单或历史成绩承诺。策略指令与实际账户仍分开验收。

先规定袖套资金

单组合预算S1零点六、S2零点四,各策略内部股票权重和一,资金份额也和一。两层相乘才是总账户贡献。不能每策略各拿一个完整本金,再把得到的股票数量或期末权益当成同一资金规模结果。

真实政策允许未分配预算时,另列现金储备;本例要求完整预算,不自动归一化超额指令。借款、空头和混币种都在范围外。目标时间、策略版本和缺袖套政策也冻结,新的S1配不明时点旧S2是另一问题。

代码要求可用袖套集合与预算一致。缺一个不会悄悄放大其他策略,实际系统若要等待、沿用、转现金或停止,需要预先政策。存在策略列表不代表已经调度同步,更不能假设所有输出都可共享一个真实账户。

先统一证券身份

S1称AAA,S2称A_ALIAS,输入映射都指向A;BBB、CCC分别B、C。它是明确合成映射,不是自动识别器,相似名称不证明同一证券。真实股份类别、市场和币种差异要按证券主表处理,不能为减少重复而随意合并。

FINRA集中风险说明讨论重叠暴露造成集中。本文处理策略目标,不是基金穿透,产物为直接股票合成账,不推断未观察底层资产,也不借一般说明认证这组权重安全。

未知身份阻断,不删除后把其他值归一化。错误合并可能隐藏集中,也可能制造假重复;映射版本应在数值计算前冻结。改名与不同证券也要区分,不能只按展示代码比较,实际身份变化需要另有记录。

有限数和预算逐层校验

每个内部权重和预算先有限且非负,再检查和一。Python isfinite文档支持显式拒绝NaN和无穷。只有和与一的误差比较,可能让NaN绕过,因此顺序本身属于验收。

样例拒绝非有限向量和零点六加零点六预算,也构造两个满仓不加资金系数的错误合计,确认和为二而拒绝。不能把它缩放回一后继续声称保留了原预算,这已经改变策略资金份额,必须明示。

单策略规范值合法,不证明交易已筹资。内部校验、身份聚合、组合限制与账户执行各有输出和失败,不用一个总成功标签盖过去。缺权重、错单位或时间不明时,不应先下单再补日志解释。

第一期贡献怎样合成

S1内部A零点七、B零点三;S2内部A零点五、C零点五。先乘资金再合并:

行ABC现金
S1资金0.60.420.1800
S2资金0.40.2000.200
原合计0.620.180.200
帽调整负0.1200正0.12
准入目标0.500.180.200.12

每个原证券值可从策略贡献恢复,A超过统一零点五帽。本政策超额转现金,不分给B/C,是一种明确规则,不是一般约束最优化。其他限制或再分配方法要另实现,不能只改表中数字就称完整求解。

调整单独成行,因为限制后无法精确满足全部原袖套指令。没有额外分配约定,不把最后A零点五随意反摊给S1或S2。原贡献加组合调整能还原最终值,归因与约束处理清楚,不把现金来源藏到其他策略。

执行第一个共同账户

初始现金一千,三股价格一百,买A五股、B一点八、C两股,现金一百二十。碎股、零费为简化,真实成本、手数与拒单应在实际执行前落实。目标合规不是市场一定成交的证明。

之后A一百一十、B一百、C九十,实际股数加现金得到一千零三十。保留现金储备,不把证券内比例归一化假装全投。价格变化让实际权重漂移,下一次目标仍从当前真实权益生成,不回到最初本金。

单一账户连续推进,独立跑每策略一千再相加,是两账户二千资本问题,不验证本文预算和统一帽。资金分母错误时,即使每个子回测都正确,合成解释也可能完全错,不能靠摘要收益率平均解决。

第二期重新合并并调仓

S1新内部A零点四、B零点六,S2新A零点二五、C零点七五,资金仍原份额。合计A零点三四、B零点三六、C零点三,都不超零点五,所以当前规则不再要求新现金储备。旧现金可以参与资金链。

净值一千零三十、价格一百一十/一百/九十,对应目标股数约A三点一八三六三六、B三点七〇八、C三点四三三三三三。实际卖A约一点八一六三六四,买B一点九〇八、C一点四三三三三三,先卖后买,每笔核现金不负。

后价一百、一百零五、九十五,期末一千零三十三点八七〇三〇三,按绝对一亿分之一对未舍入参考核验。这是两期合成账户,不是独立策略收益相加,也不提供未来袖套成绩。交易总值来自共同实际持仓差,不凭策略名字估算。

保留政策冲突与执行冲突

每袖套原目标、时点、预算贡献、统一身份、原合计、帽调整和准入目标都留,再连请求成交、现金和持仓。向量和一并不代表冲突已解决;某项硬帽未通过应阻断,不让下游直接用一组看起来整齐的值。

真实卖出受阻,不把计划所得给另一袖套买入。目标不可用,按预定沿用、现金或停止规则,不静默缩放其余。小例只拒绝缺袖套身份,没有实现完整异步调度,也不管理真实共享账户权限。

统一帽只作用于本次合成输出,不证明任意策略不能另交订单,也不证明券商执行同一限制。账户治理和授权需要另证据,参考系统有权重工具不等于所有策略已共享资本。这个边界应在实施说明与产品文案中保持。

交接贡献和资金闭合表

先核S1的零点四二与S2零点二共同形成A零点六二,再核帽减少零点一二转现金。第一期实际买入八百八十、现金一百二十闭合一千。第二期卖出与旧现金一起筹资,不能少记旧现金或给两个策略重复使用。

如果想把限额调整分摊到各策略,需要预先决定按贡献比例、优先级还是其他规则,并输出分摊后账。本文选择组合层单独调整,避免没有依据的策略绩效归因;不得把它改名为原策略仍完整执行。两种账的用途不同,应分别解释。

实际扩展费用后,先预留费用再算可达到股数,末期未花现金也保留。不能用本文零费末值减一个总成本继续沿用所有数量,因为融资条件可能改变。新限制、新资金政策和新映射都需要共同账户重新执行,而不是只修最终权重。

袖套元数据还需币种、目标期限和信息时点,不只有策略名。样例双方声明USD,并实际拒绝USD与HKD混合;它不换汇,也不从股票名称自动识别币种。可读取的旧目标未必符合时点要求,真实异步流程应明确检查,不把能解析误当已经同步。

若选择把超帽部分再分配,要复核重新分配后每股及行业限制,不能只裁一次就假定其他项安全。本例留现金有意避免第二次分配问题,不是覆盖所有委托约束。真实整股转换、未成交和之后价格漂移还会再次改变实际权重,目标合规不替代后续账户验收。

下载完整示例。使用Python 3.12或更新版本,运行python R637.py。标准库断言策略贡献恢复、A原零点六二/帽后零点五和现金零点一二、筹资成交、准确末值,以及非有限、未知身份和超预算拒绝。

预算、目标、映射、限制、价格或执行改变后重建,保留原运行。只接受资本不重复、身份有依据、调整可见、成交追到准入目标的结果。本文不验证产品接入或真实盈利,更不提供自动下单能力承诺。

常见问题

两个满仓策略权重能直接相加吗?

不能,先乘共同资金预算,再按证券聚合。

超帽部分必须再分给股票吗?

本例不必,明确留现金;其他规则属于另一实验。

相关阅读