港股回测手数简化怎么核对:从目标金额到逐股可买数量
港股数量计算需要每只证券在当时生效的每手股数。统一假设一百股,可能得到不符合所选整手执行契约的数量、不同现金占用和不同模拟结果。这个假设只能明确标成简化参考,不能作为香港市场每只股票实际手数已经核实的描述,更不能只因收益较高就继续使用。
本文用两只虚构港元普通股,对照逐股生效元数据与统一一百股模型,两边都核对现金储备、实际订单和费用。CoTrading的真实手数查询、公司行动更新、碎股和券商执行能力仍属规划或待核实。虚构代码不对应任何真实发行人的当前手数,也没有声称取得历史价格业绩。
逐股手数必须带生效日期和来源
HKEX证券市场运作问答说明每只证券手数由发行人决定,并介绍碎股的不同处理。因此多股票组合不能仅凭市场名称或计价币种推断统一手数,应读取相关证券信息,并保存它在哪个日期范围有效。
HKEX于2026年6月30日公布的手数改革安排分阶段实施,包括7月2日第一阶段,以及公告计划于11月16日开始、附过渡安排的后续阶段。标准选项有多个手数,并非全部一百股;自动碎股撮合也属于更晚、附条件的安排。不能把改革标题翻译成每个发行人已经转换,或某项匹配已经全面可用。
真实研究应保存证券身份、手数、生效起止日、来源文档和版本。公司行动或调整每手股数,会让今天合法数量与历史日期不同。若没有版本覆盖订单日,或多个版本重叠冲突,应先停止并解决元数据。静默回退一百股,会掩盖本来需要审查的关键问题,后来即使现金对得上也不能证明规则正确。
本例虚构HK:A与HK:B。2026年10月1日至31日,A输入手数五百,B一千;另给B一条11月1日至12月31日生效的新版本,手数五百。来源字段明确标注为合成发行人表,不暗示任何真实上市公司曾在这些日期作出同样公告。真实应用不能把这张测试表复制为证券主数据。
先预留声明费用,再向整手取下限
账户总现金两万,分成两份独立的一万元预算。A开盘12.5港元,B开盘7.2港元;先为实际完成的买入预留费用一,再计算能负担几手,数量为非负完整手数乘逐股有效lot。预算之间不共享余额,不因另一只买得少就自动重新分配,避免手数和资金分配两个变化混在一起。
Python Decimal文档提供本例价格和现金使用的十进制算术参考,数值从字符串构造。价格必须有限且为正,预算有限且非负,lot为严格正整数,布尔值不能充当整数手数。算术只能验证给定契约下的数量,不能让缺失或错误来源的元数据自动变可靠。
预算扣除预留费用后买不起一整手,则数量为零,不收费,现金继续保留。反例以一千预算、12.5价格和五百手数得到零股、费用零、现金仍一千。没有完成买入却扣佣金,会让账户无订单而减少资金,属于与数量取整不同的成本错误。
本方法故意保留余款,不把A余款重新配给B。组合优化器或顺序现金分配可以另行设计,但必须把它作为额外规则验证。本对照两边固定预算、价格和费用,只有手数输入不同,才可以解释数量和最终结果的差异来自哪里,不能把未声明的再投资也算作lot影响。
逐股模型的完整现金桥
10月26日,A有效每手五百,一手本金6250,含一费用使用6251,分配预算剩3749。B有效每手一千,一手本金7200,含费使用7201,预算剩2799。因此组合进入后现金6548,持仓A五百股、B一千股,累计费用二。
两笔持仓按进入价估值为13450,加现金6548等于19998,准确等于初始两万减已支付费用二。这个恒等式能检查预留费用有没有在实际入账时又重复扣除,也能避免把下单前未使用预算与下单后真实现金混为一个数。持仓市值和现金都要使用实际已买数量。
独立终端夹具给出A卖价13、B卖价7,各收一单位费用。A净收6499,B净收6999,加原现金6548,最终现金20046,持仓清空,累计费用四。A价格收益250,B价格损失200,毛收益五十,扣费后净收益四十六,现金桥每一步都能由订单重新计算。
输出精确断言进入证券、方向、数量、价格、费用和采用手数,同时核对进入现金、末现金及清仓状态。因此它不是只给数量没有财务后果的计算器,而是完整双股账户。不过终端价格依然是人为夹具,不能把四十六写成真实观察收益,也不能推导这些手数本身具有赚钱优势。
如实解释统一一百股参考
简化模型里,A可买七百股,12.5价格含费花8751;B可买一千三百股,7.2价格含费花9361。进入后现金1888,显著低于逐股模型6548。两边在同样预算下都没有超支,但七百不是A所给五百手数的整数倍,一千三百也不是B一千手数的整数倍,不能称为符合当前整手契约。
按相同终端价格卖出,简化账户扣四笔费用后现金20086,比逐股模型多四十。更高合成结果不能为错误手数元数据提供理由。A多出的二百股贡献价格收益一百,B多出的三百股多亏六十,净差四十;差异来自暴露变化,不是同一组合在相同规则下神奇获得了额外收益。
参考数量相对于给定证券可能包含碎股。本文并不声称现实中所有碎股持有或出售一概不可能,真实碎股设施和券商政策应另行核实。这里指出它们不符合声明的整手执行模型。若要研究碎股,应明确独立价格、匹配、费用及资格,不能没有证据就继承整手开盘成交假设。
生效版本与缺证据分别测试
查询B在10月26日得到一千,11月2日得到五百,未来版本不能改变较早订单。这是元数据时间边界,与预算向下取整是不同机制。若每次只加载最新手数,发行人后来调整就可能重写历史买入数量,连原来已经报告的历史结果也会随之变化,不能据此声称时点正确。
未知证券抛出missing_or_ambiguous_lot_metadata,匹配多条记录也采用同样拒绝政策。真实数据应额外验证有效区间不重叠,并处理证券更名或代码变化。不能向另一只股票借手数,也不能根据价格高低随意猜测。在来源未确定时保留错误比补一个貌似合理值更有可审查性。
脚本没有实现汇率、非港元柜台、印花税、完整交易所费用、部分成交或券商最低费用,每笔实际完成订单只收声明的合成一单位。与真实账单对比前必须替换并核对这些输入。手数正确只是所选模型的一项必要条件,不能同时认证周围全部成本和执行假设,更不能表示产品已经提供它们。
下载运行并建立可核对证据
下载完整示例,使用Python 3.12或更新版本执行python R599.py,仅需标准库。所有港元价格及发行人表均为合成数据。输出元数据版本、两套订单、进入现金、终端现金、费用与清仓状态,不访问在线证券主表,不连接券商,也不尝试真实下单。
采用本核验流程时,应先冻结真实发行人记录,再独立手算若干数量和现金桥。统一一百股运行始终标为简化敏感性参考。真正有用的结论是哪条元数据改变了哪笔订单及资金暴露,不是从两个合成末余额中挑较高者,就宣称找到更优或可执行的历史策略。
每张订单连接实际使用的元数据行
订单审阅应保留有效lot数值,也保留选中版本,才能区分合法十月数量与提前使用十一月规则。后来修正可以说明原因并生成新运行,不静默改变旧数量。独立预算分配也要一并保存,否则资金重分配的差异可能被误归为手数更新。
对照报告可先比较元数据行、再比较可负担完整手数、实际数量、现金及终端结果。若最早差异已发生在元数据日期,就不应通过修改退出价格让两边末值重新一致;若元数据相同而数量不同,再检查费用预留和取整。这样的顺序让每一步有可核对输入,而不是用一个最终余额同时证明所有环节。真实证券加入之前,还应确认计价柜台和股数单位,避免将报价单位、每手数量与账户股数混成一个常量。
常见问题
2026改革是否让全部港股每手都是一百股?
不是。所引分阶段安排包含多个标准选项,研究仍需逐股生效信息,也不能假设所有发行人转换已经结束。
这里是否实现碎股撮合?
没有。碎股需要独立执行与费用契约,统一一百股仅作数量参考,不证明能按整手价格成交。