交易记录怎么生成股票策略:先检查可用于提取规则的样本
一份成交日志可能有很多看起来赚钱的成交,却只有少量能够完整核对的股票往返。在尝试从记录提取候选策略之前,需要先确认哪次买入与哪次卖出属于同一持仓、两侧费用分别多少,以及净利润是否使用相同币种。输入门槛只决定某个准备流程能否继续,不能证明交易策略可靠。
本指南整理一份带明确往返编号的合成日志,核对五笔美元盈利往返,并将港币计数单独保留。亏损、零利润、未平仓和配对歧义都会留下状态。这是外部研究准备方法,没有运行 CoTrading 规则提取器,没有生成策略,也不代表任何真实历史业绩。
先封存原始记录与解释规则
从不可覆盖的导出快照开始,说明账户、证券身份、币种、时区、成交编号和覆盖日期。对账单、委托日志与成交日志并非同一层记录:一张委托可以分成多次成交,撤单本身也不是成交。先保存原字段,再生成用于分析的标准化工作行,避免转换时丢掉追查依据。
本例要求每行包含账户、证券、币种、成交编号、往返编号、方向、股数、价格、费用和整数顺序时间。成交编号、往返编号、账户、证券和币种必须分别为含有非空白字符的非空字符串。支持币种集合明确限定美元 USD 与港币 HKD;缺失、空白和未知币种在配对前拒绝,不推测或自动规范化。时间只是合成序列位置,不冒充交易所时间戳。股数仅支持正整数;真实碎股记录必须另定数量契约,不能四舍五入后硬套进这个例子。字段齐全也不等于来源真实,仍需和实际导出记录核对。
SEC 投资者费用说明讨论费用及成交确认的检查,可支持分析前核对成本的原则。该来源没有规定本文的配对算法,没有认证五笔门槛,也没有说少量盈利交易足以证明策略有效。具体配对与计数规则均是本文明确限定的研究契约。
只配对关系已经明确的成交
往返编号是本合成输入提供的显式条件。只有字段有效之后才比较身份是否相等:两个空账户、缺失证券或未知币种不能构成有效配对。有效闭合组必须恰好有一次买入与一次卖出,两侧账户、证券、币种、股数相同,且卖出时间严格晚于买入。单独一笔买入标记为未平仓;多次买入或卖出的组保留歧义,不推断一组看起来方便的匹配。
这不是通用先进先出库存引擎,也没有实现部分卖出、平均成本、公司行动调整或空头回补。真实日志如果没有可信往返编号,必须先建立书面的库存分配规则并完成独立勾稽,才能使用准备门槛。仅按相邻时间自动编组,可能把不同持仓拼成一笔并不存在的赢家。
每个接受的配对都保留两侧成交编号,让复核者可以回到原始行。被排除的组和原因应放在相邻台账中,不因它们没有进入计数就删除。未平仓部分如果直接消失,读者会误以为覆盖区间内所有风险已经结清,也无法知道样本究竟缺了什么。
如果导出文件后来修正费用或成交身份,应建立新的准备版本,说明哪条输入发生变化及其原因,并重新计算全部配对与计数。此前快照达到门槛,不代表可以把资格标记直接移到修改后的日志。保留修订前后的差异,才能确认结果变化来自补齐真实记录,而非为达到门槛调整解释规则。
用两侧费用勾稽净利润
一笔配对多头往返的净利润,等于股数乘以卖价减买价,再减买入费用与卖出费用。R1 买入一股,价格为 100,之后以 103 卖出,两次费用各为 0.5,因此净利润为 2 美元。卖出价高于买入价只是毛价格变化,不能直接决定盈利资格。
R6 同样以 100 买入,却以 99 卖出,扣除两侧费用后为负 2 美元。R7 以 101 卖出,费用后恰好为零,两者都不计入盈利门槛。它们仍然是已经闭合的往返,应保留在完整台账;即使正利润计数没有改变,删去这些记录也会改变样本的经济含义。
程序由十进制字符串创建 Decimal 金额。Python Decimal 文档说明十进制运算与有限数检查。Decimal 仍能表示 NaN 和无穷,因此程序先拒绝非有限价格与费用、非正价格、负费用,再计算净利润。缺失费用直接报错,不能擅自当作零成本,否则微利成交可能被错误计为盈利。
主例按币种计数并保留异常组
R1 至 R5 每笔费用后赚 2 美元,美元组共有五笔合格往返,这五笔赢家的利润合计 10 美元。R6 与 R7 保持闭合状态,但不合格。赢家小计不是整份日志总利润,资格标记也不是完整账户盈利报告,不能用它代替所有成交的经济核算。
R8 只有买入,状态为 open;R9 有两次买入和一次卖出,状态为 ambiguous_pair;R10 的买入为美元、卖出为港币,状态为 identity_quantity_or_time_mismatch。程序保留这些状态,但不将它们纳入已闭合盈利计数,也不会通过简单填值强行修成一个赢家。
R11 是独立完整的港币盈利往返,净利润为 2 港币,因此港币组计数为一。最终结果是美元五笔、港币一笔,只有美元组达到示例的五赢家门槛。这里没有把两种币种利润相加,也没有让港币赢家补足美元样本;真实跨币种交易若需要换汇,必须另定汇率时点与成本规则。
下载并运行完整合成样例
下载完整示例,保存为 R638.py,以 Python 3.12 或更新版本执行 python R638.py。程序只使用标准库与合成记录,不连接券商、不调用模型、不需要账户凭据,也不下载行情数据。运行不依赖本文提供任何真实交易历史。
断言逐项核对净利润 2、负 2 和零,分币种计数,三类排除状态,重复成交拒绝,缺失费用拒绝,非有限价格拒绝,身份字段缺失、空值、空白和非字符串拒绝,未知币种拒绝,以及跨账户配对不兼容。输出明确包含 USD_input_eligible=True、HKD_input_eligible=False 和 rules_generated=False。这些结果只对应当前输入与契约,不表示另一应用已经接受导入。
将完整源码、实际输出、输入快照与解释政策一起交接,并附上尚未解决的排除记录。复现这个小程序能够验证所展示的整理逻辑,不能验证外部产品的导入格式、模型服务是否安装,或某个版本是否支持相同字段。应用能力需要另行查证,不能由本例运行成功推断。
用不同机制反例挑战门槛
删除 R5,保留那笔港币盈利后,全体币种加起来仍有五个赢家,但美元只剩四笔,因此美元资格必须失败。这个反例针对跨币种聚合错误;即使每笔利润都计算正确,错误地合并计数仍会把不合格输入误报为合格,不能只检查金额公式。
另一个检查只取日志最前面的五条成交。它们包含两笔已经闭合的美元赢家和第三笔往返的买入,最后一笔仍未平仓,所以五条成交并不等于五笔往返。若把行数、委托数或卖价上涨次数当作门槛,可能在配对算术完全正确时仍得到错误资格。
重复成交编号会在分组之前报错;不同账户之间即使证券、数量和价格相同,也只能得到不匹配状态。这些控制处理记录来源与身份问题,机制不同于币种聚合。发现异常后应追查导出数据,不能复制一条成交、跨账户搬动利润或删掉成本来凑足门槛。
合格输入仍然需要后续独立研究
至少五笔盈利往返只作为后续提取实验的参考输入条件,不是通用最小样本量,不是显著性检验,也不是重复盈利能力证明。当前流程没有评估所有亏损机会、市场方向暴露、选择偏差、时点泄漏或未来执行费用,记录整理正确也无法自动补上这些研究缺口。
后续研究应封存候选规则,记录每次决策当时可得信息,保留未触碰的评估区间、明确基准与成本假设。失败的提取尝试也需要留档。如果只展示最能解释五个赢家的那条规则,就会隐藏为了找到该解释做过的搜索,读者无法判断选择过程带来的偏差。
整理完的日志不应直接进入真实跟单。市场可用性、证券身份、账户权限以及应用支持的股票范围仍需逐项核实。固定高流动性参考篮子只是范围限制,不等于有权扫描或交易所有股票。本文止于输入准备,不声称这些后续环节已实现,也不把少量记录变成实盘执行授权。
常见问题
五笔盈利往返说明策略有效吗?
不能。它只是在单个币种内达到这个参考输入条件。本例没有生成规则,也没有做样本外评估。五个经过选择的赢家可以同时伴随亏损、未平仓风险或大量尚未测量的市场暴露,资格结果不能替代完整研究结论。
缺失费用或多次部分成交能自动修好吗?
本契约不能。缺费用会验证失败,复杂成交组保持歧义。应先取得确认费用并另定库存分配规则,再更改状态;不能只为了提高合格计数而填写未经核实的信息。保留原始行及处理过程,才能让之后的修订可复核。