“高于均线就买,跌破就卖。”小林把这句话交给两个AI,一个用满全部现金,账户随后变成负数;另一个为了留手续费少买了一点。两边都认为自己执行了“买入”,为什么账本不同?
信号说明想达到什么状态,执行规则还得说明何时、按什么价格、买多少,以及没有足够材料时停在哪里。先把这些写成一份自然语言规格,再用边界例子检验,才有条件让AI帮你实现。
这次要留下什么
- 将研究目标、信号、目标仓位与成交安排写成同一份T05。
- 根据相等、缺失、休市与费用条件判断预期行为。
- 用版本和待确认项管理歧义,不让实现工具替研究者悄悄改规则。
不是让句子更长,而是让结果可判定
策略规格可以想成研究中的操作约定:给定哪些输入,应该产生什么判断和记录。它不是收益承诺,也不是一张自动下单授权书。规格写得完整,只说明可检验对象更明确,不表示它值得投资。
CFA的回测公开概要将历史环境中的规则评价与后续分析联系起来。[1] 若输入、成交和异常都由实现工具临时补齐,你最终评价的可能是这些默认选择,而不是原来的想法。
所以先给规格命名,标明作者、日期、版本和研究问题。改窗口、成本、成交时点或缺失政策,都算版本变化;不能只在代码里改了,再让旧报告继续使用原名称。
先把C2的范围摆在桌面上
主线采用已规划的C2-A,不另外发明一种“更容易赚钱”的规则。研究问题是:给定低频趋势规则在固定资产与期间中,扣费后的收益和回撤特征如何,是否值得继续观察;回撤降低不等于Alpha。
候选资产只有SPY与现金。教学区间为2007年1月1日至2024年12月31日,另从2006年起取得充分预热。这个资产及区间是事后教学选择,不是覆盖全市场的未知前瞻试验。
策略子账户初始10000美元,只做多、无杠杆;基础允许小数份额,现金收益设为0。不把这1万美元映射成家庭必须投入多少,也不把现金收益0等同于评价指标中的无风险收益0。
时间划分保持原规格:2007—2014用于规则理解与开发,2015—2019用于验证,2020—2024为冻结教学留出。作者知道这些历史,若提前用留出选规则,应记录污染,不能换个名称就说仍未看过。
输入材料须包括常规交易时段的原始开盘与收盘价、现金分红、拆股及交易日历,独立构建并核对总回报信号序列。若用供应商调整序列,先记录其定义和时间可用性,不把它与另一来源的字段直接混搭。资料许可、缺失与版本也要进入T05。
让信号、目标和实际账户各有一栏
每月最后一个正常交易日收盘后,取当时可得的总回报指数,与包含当月在内的最近10个有效月末值的简单平均比较。严格大于时,目标为子账户持有SPY;否则目标为现金,相等也归现金。
持有目标面向该子账户扣除相应费用后可用于持仓的资金;现金目标为不持有风险资产。没有止损、做空或其他资产,不因为本章讨论边界,就给C2暗中加一条保护规则。
目标不是持仓事实。先记录信号与目标,再根据当时现金和现有份额计算需要调整多少;已满足目标且没有需调整现金时,不应凭“每月调仓”机械制造一次卖出再买入。
真正交易须在下一正常交易日开盘按教学成交模型尝试。月末总回报指数的点位用于信号,不是SPY开盘的可成交美元价格。不能用同一个月末收盘既计算完整信号,又假装在知道它之前按该价成交。
钱要够付,费用要算在同一笔里
C2基础成本假设为每次成交按交易金额收5个基点佣金,滑点另按买卖方向作用于价格5个基点。1基点是0.01个百分点,5基点即0.05%,小数为0.0005。这不是任何券商实际费率,也不含个人税费,结果标税前。
若参考开盘价为P,教学买入价为P乘1.0005,卖出价为P乘0.9995;佣金在相应成交金额上另算一次。不能已经将滑点计入成交价,又完整从收益里扣同一份滑点。
给一个独立的小额边界练习:当前全为现金100美元、无持仓,持有目标有效,参考开盘价10,允许小数份额且没有最低佣金。含滑点买价10.005,再加按成交额0.05%的佣金,能够买入约9.9900075份,而不是10份。
用未舍入数量计算,成交金额约99.950025,佣金约0.049975,总支出100。若直接买10份,现金不够付总额。基础小数版本应把数量按含费预算算清,不能先超买,再用负现金“先跑下去”。
本版补充规格将买单向下取到百万分之一份,因此订单是9.990007份,总支出99.9999950450175美元,保留极小余款。内部金额不因显示到美分而抹平。整数份额情景另作对照,不能悄悄换成整股,再把差异归给趋势信号。
公司行动不是新交易信号
持仓期间发生拆股,账本按事件调整份额与单位;收到现金分红,按事件记录现金。分红现金在下一次既定调仓时纳入目标,买入持有基准采用相同再投入时间约定。
用于信号的总回报序列已经处理特定回报口径,不能将其变化再次直接加到账户,再额外加一笔分红。真实交易账本仍要用原始可交易价格、实际份额与事件,信号和现金各守自己的位置。
休市也不是公司行动。先核对应市场日历,找到下一正常交易日,再检查开盘资料是否有效;不把休市日补成一个有10美元报价的交易日。不同实现者必须依据同一日历与时区,不能一个按UTC日期、一个按美国交易日随意分组。
六种边界,先写预期再看实现
下面均为独立合成输入,用于核对规则,不是SPY历史事件。请把每条预期保存为测试材料,而非只在脑中觉得“应该没问题”。
| 输入条件 | 按已定规则可以确认的行为 |
|---|---|
| 十个有效月末值全为104 | 均值104,严格大于不成立,目标现金 |
| 当前月末值缺失,只有九个有效输入且未提供更早资料 | 不得算九项冒充十项,不生成有效新信号,标记资料不足 |
| 信号后次日休市 | 不在该日成交,查下一正常交易日开盘 |
| 目标持有但开盘缺价或不能成交 | 保留实际现金/持仓并记录,按既定异常流程等待有效交易日,不编成交 |
| 全现金100、参考价10、基础5/5基点成本 | 含费上界约9.9900075份,实际向下取到9.990007份,余现金非负 |
| 十个输入有效、当前值严格高于均值,但指数点位109 | 得到持有目标;不能据109点直接当109美元报价下单 |
第一条是明确的经济条件结果,第二条是缺资料,不能都写成“卖出”。第四条也没有使目标神奇地成为持仓;实际保留的份额仍会承担市场变化。
既有资料若没有约定所有异常,T05应标为“待补齐,未准备好运行完整研究”,先暂停对应实现。原C2确实没有写全无效新信号时的目标有效期;下节将它显式补齐,不能由AI依据行情好坏临时决定。
这不是要求每种罕见情况一次写尽,而是把会改变当前输出的歧义显式阻断。保留实际账本与原始输入,补充政策后另存版本;不要把“程序没有报错”当成所有边界已有一致答案。
把发现的缺口补进新版本
本书在2026-10-29登记了C2-A补充规格:每次月末决策,先使此前挂起的模拟目标过期,再检查当前输入。当前值无效或不足十个有效月末值,不发新目标,保留实际现金和持仓,等下一次有效月末判断。此前有效目标可在正常交易日缺价时重试,但不能跨过下一次月末决策继续沿用。
这意味着“资料不足时维持已有暴露”,并不是转为无风险现金。若另选延续旧目标直到成交,可能在信息已陈旧时继续买入;若选资料不足即退出,又是另加一条经济规则。不同选择需分别登记,不应混成同一份结果。真实订单的撤销还需确认状态,不能拿模拟过期替代券商回执。
数值方面,信号按已核输入作严格比较,不根据屏幕显示再取整。内部使用28位有效数字的十进制计算、平分时向偶数舍入;买入数量向下取到百万分之一份,再复核含费支出不超现金。拆股出现该份额单位无法表达的余量时暂停,先登记处理政策,不能把余量丢掉。
这些是本版新增的教学约定,会影响极小余款和异常月份的暴露,并非原资料早已规定。规格现在有了可核对的答案;完整真实资料、实现与绩效验证仍未完成。若你已看过相关历史,记录这一事实,不能把今天的登记倒填成当年的预注册。
参考系和期末,也要写进规格
C2用同资产买入持有基准,统一初始资金、期间、估值、分红再投入、入场费用与期末口径。策略多出来的主动交易成本保留,但不能为显得公平给基准添加没有发生的交易。
期末按可用收盘价估值,不强制卖出;若另做清算版本,策略和基准都计相应卖出成本。估值不是实际已经卖出,执行数据不足时也不能偷偷借用研究终点之后的价格补一笔成交。
成本压力保持原计划:零佣金/零滑点是理想参照,5/5基点为基础,15/15基点为压力;额外延迟一个有效交易日为独立情景。不能改了费用、滑点和延迟,却只把差别命名为“规则优化”。
真实市价订单不保证成交价与最后报价相同,具体执行还受市场条件影响。[2] 本章的开盘加滑点是教学模型,不证明真实账户可以逐笔复制,未来上线还需要单独核实实施与账户条件。
先自己检查规格
解释题:为什么“每月看一次,目标持有”不足以产生一笔可核对交易?应用题:十值全104时工具买入,而资料不足时工具全部卖出,这两种结果应如何分别检查?先写判断再核对。
第一题缺信号何时可知、执行日、价格、数量、成本和实际状态。第二题中,相等明确归现金,买入与原规则矛盾;资料不足没有有效新信号,不能直接映射成现金目标。应补资料与异常政策,不用其中一个答案替另一个。
换一个输入,检查钱和时间
独立变式:全现金200美元、无持仓,持有目标有效,下一正常交易日参考开盘价20,成本仍为5/5基点,允许小数份额且无最低佣金。助手说“买10份正好200;同一天若有分红,再立即买入”。请找出两项需修正的地方。
买入价要先变为20.01,再含佣金预算,上界约9.9900075份;实际向下取到9.990007份,总支出约199.99999009美元,余款约0.00000991美元且非负。这里展示近似值,实际现金核对仍用未舍入数据。不能按20直接买10份。数量与100美元/10美元例子相同,是金额和价格同比变化的巧合,不能视作固定买入数量规则。
分红也不能擅自立即再投入:要按事件资格与实际现金时点记账,再遵守C2下一次既定调仓约定;缺事件资料不能假定当天有分红。把钱分到正确的日期,与把数量算正确一样重要。
保存你的T05与行为表
T05至少写研究问题、资产与期间、数据及版本、信号输入和时点、目标仓位、订单与成交、现金与费用、公司行动、异常、基准、期末和压力情景。再附本篇至少五条输入—预期行为,保留首版。
将每项标为已定、资料待核或规则待确认。把规格交给另一位读者或另一个AI,要求它逐条解释预期行为,而非先写实现;若出现不同答案,回到相关条件补齐并登记版本。
自检时任选一笔订单,能否追到当时已知的信号、价格资料、现金和费用?任何一条断开,都先停在可确认的位置。T05的价值是让分歧能被发现和解决,不是用一页纸替真实历史、独立复核与投资判断全部签字。
小结:把默认选择改成可检查的约定
先分开信号、目标、订单和成交,再连接现金、公司行动与基准。同一句“持有”,在不同费用、份额、日历或异常政策下,可能对应不同账户结果。
用边界材料检查规格,缺资料和相等结果分开,尚未定义的地方先阻断。规则清楚后才能核对实现,结果好看也不能替代这一步。版本记录会告诉你以后究竟改了什么,而不只是看到收益曲线变了。
参考资料
- CFA Institute:Backtesting & Simulation,2026公开概要。回测与历史环境评价的范围;未读取付费课程。
- Investor.gov:Types of Orders。订单与执行价格的条件;C2开盘、费用及异常约定来自本书教学规格,不冒充市场保证。
C2原始规格见案例与模板。资料核查日期2026-10-29。本文是规格与独立合成边界练习,未取得完整真实回测验证,由AI辅助编写及检查,尚待人类金融审校与目标读者试读。