“高于十个月均线就持有。”小林觉得这次已经说得很精确,结果两个工具仍在同一个月给出相反信号。一个包含本月,一个从上月往前数;另一个地方还把“不大于”写成了“严格小于”。
问题没有藏在复杂算法里,而在句子没有填满的部分。把窗口、比较方向和信息时点写清楚,指标才会变成别人能够重算的信号。本篇先冻结定义,再考虑它值不值得用。
这次要留下什么
- 为时间序列信号写清输入、窗口、频率、方向和延迟。
- 区分有效信号、相等条件与数据不足,避免用补数改变判断。
- 认识时间序列与横截面比较的区别,保存可复核的信号定义表。
指标只描述,信号还要给条件
指标或特征是对资料的某种描述,例如一段平均值、过去收益或盈利比例。信号则说明当描述满足什么条件时,产生怎样的研究判断。把每个指标都直接叫作买点,会漏掉方向、时点与适用范围。
例如“最近表现强”可能是同一资产超过自己的过去水平,也可能是比其他资产跌得少;“低估”也要确定相对于什么。经济机制帮助选择问题,可计算定义让这个问题能接受核查,二者不能互相替代。
趋势研究可能围绕过去变化的延续,但某篇趋势研究的方法、资产和多空安排,并不等于本书ETF与现金的规则。AQR公开趋势材料描述了一种时间序列动量思想;它不能给我们随意选择的窗口或简化信号提供自动盈利证明。[1]
所以先不要争“十个月最好还是十二个月最好”。把目前要检验的版本锁定,记录为何选择它;后来改窗口时,保留新版本和看过的结果,而不是把原定义悄悄覆盖。
十个月末值,到底数哪十个
本书C2-A按月末形成信号:在每月最后一个交易日收盘后,先确认当前总回报指数有效,再与包含当月在内的最近10个有效月末值的简单平均比较。十项足够且严格大于时目标为持有,相等或低于时目标为现金;当前无效或历史不足则不发新目标。目标只作用于策略子账户,不是家庭全部资产配置。
现在只练这个信号,给出独立合成指数点位。它们不是SPY真实价格,也不代表已经完成C2回测;假设全部为相同口径、已经核验且当时可得的有效月末观察。
| 月末 | 指数点位 |
|---|---|
| M1 | 100 |
| M2 | 102 |
| M3 | 101 |
| M4 | 103 |
| M5 | 104 |
| M6 | 102 |
| M7 | 105 |
| M8 | 106 |
| M9 | 108 |
| M10 | 109 |
到M10收盘后,十个值之和1040,简单平均104;当前值109严格大于104,因此按给定条件产生持有目标。如果从M9往前数,就是另一组观察,不能把“十个”相同当作窗口相同。
这里平均的是指数水平,不是十个月收益的算术平均,也不是计算波动率。输入若改为原始收盘价或另一种分红调整序列,信号可能改变;即使列名都叫价格,也应回到数据定义确认。
当前值和平均值还必须在同一单位。总回报指数109是用于比较的点位,不是保证能以109美元成交的报价。信号之后,实际账本要使用对应证券的可交易价格和公司行动资料,不能直接拿策略现金除以109当作可买份额。
“十个观察”与“十个月”要逐字核对
窗口长度说明用了多少历史,观察频率说明这些点间隔多久。十个日收盘、十个月末或十个财报期,不因为数量都是十就变成同一种信号;缺失一个月时,也不能拿日频记录来补一格。
C2规格写的是最近10个有效月末值。补充规格要求当前值有效,再向前取九个有效月末,记录缺月造成的跨度;不能用旧值冒充缺失的当前值。当前这张表假设十项均有效;如果后来发现历史一项无效,又没有更早有效值可补,就不能把九项结果标作十项均线。无效决策先使旧挂起目标过期,保留实际账户,等下一有效月末,不在月中补数据后临时交易。
“简单平均”则表示每个值同等参与。若工具默认近期权重更高,或者先对数据平滑,就是不同的特征计算。它不一定不好,但需要另一个名字和版本,不能当原计划已经实现。
最低观察数量也要写明。预热资料是为首次计算提供足够历史,不是可以偷用未来的理由。开始日期前有多少真实可得观察,需要资料证明;没有就留下不足,不让AI编造一段平稳历史填满窗口。
等于门槛,也是一项事前决定
把另一个独立十点样例设为每项104,平均104,当前也是104。C2的严格大于条件不成立,因此目标为现金。这里不是“工具没有判断”,而是已经按照明确规则完成了判断。
若改成大于或等于,便会得到持有目标。两个版本只差一个边界符号,订单和后续成本却可能不同。不能等看到哪种结果好,才解释自己原本说的是那一种。
还要区分比较精度与显示精度。屏幕可能都显示104.00,底层数值却不同;用原始数据、统一容差还是固定小数,必须有规定。不要依视觉上的相等决定交易,也不要为得到期望信号临时四舍五入。
其他策略可以登记不同数值政策;C2本版已经规定按已核原输入严格比较,不先按显示位数舍入,也不临时添加相等容差。这样一来,屏幕展示相同并不授权实现者改写底层比较,变更政策也需要另存版本。
知道信号的时候,早盘已经过去
C2在月末收盘后才能完成当月输入,所以在下一正常交易日开盘按教学成交模型尝试调整目标。不能为了使用更低价格,把收盘后才知道的109放到当日开盘之前。
信号频率与执行延迟也不是同一件事。每月观察一次,不等于可以在当天任意时刻成交;目标要求持有,不等于订单一定成交。缺价或不可成交时按既定规则保留实际账户状态并记录,不能拿信号替代确认。
CFA回测公开概要强调,检验需要规定规则、形成组合、调整并评价结果。[2] 本篇停在信号定义与时点核对,没有把尚未发生的交易写进收益。后面建立账本时,还要连接费用、数量、现金与公司行动。
扩展:比自己的过去,还是比别人
时间序列比较沿着同一对象的历史,例如M10与自身十点平均。横截面比较则在同一观察时点,把多个对象放在一起,例如按过去同一期间收益排序。这两种信号可能给出完全不同的选择。
用独立合成例子:甲过去一个月收益负3%,乙负5%,丙负10%。按横截面从高到低排名,甲第一;按“本月收益严格为正”判断,三者都不满足。排名第一只是相对跌得少,不能把它读成自身正在上涨。
横截面还要定义候选范围、同分处理与缺失政策。若甲乙同为5%,只选第一名时按什么稳定规则处理?不能让文件行序或工具随机决定,而报告里却声称结果完全可复现。
标准化是把特征转成某种统一尺度;极值处理改变特别大的或小的输入;行业处理可能在行业内排名,或调整行业差异。它们都会改变信号,不是无关紧要的清洁步骤。不同负债结构或财务行业的指标,也不能因完成标准化就自动可比。
这些是因子路线必须继续学习的定义工作,不是本篇主线已经完成的横截面研究。选择财务因子还应补齐相应财务前置;G82—G87会把信号构造、检验、暴露与组合连起来,排名本身不是收益证据。
处理输入时,不要把未来带回来
假如为了判断某个旧月份的数值高不高,用包含后来所有月份的均值和标准差标准化,旧信号就受到了当时未知资料的影响。即使没有直接把未来收益当输入,预处理也可能泄漏信息。
scikit-learn官方文档说明,预处理的统计量若利用测试资料,会让测试信息进入模型选择或学习过程。[3] 对这里的时间研究,还要按当时信息可得性限制统计量;不是随便分成两组就消除了时间穿越。
同一时点的横截面处理不一定使用未来,但仍要核对当时可得的候选和特征。财报指向的期间结束日,不等于报告公开日;后来重述的数据,也不能不说明就替换旧判断。预处理能否使用一项资料,要沿着时间而不是沿着表格完整程度决定。
先把一句规则补完整
解释题:109高于104,为什么不能立刻写成“已经以109买入”?应用题:十个值都为104时,工具给出持有,声称因为“等于也算走强”。按本篇C2规则应该怎样改?先写理由,再看答案。
第一题要区分指数点位、收盘后信号与下一可执行时点,实际成交还需对应价格与数量证据。第二题应按严格大于处理,目标为现金;若研究者想采用包含相等的新版本,需要提前记录并重新评价,而不是修改旧记录的含义。
数据少了一项,答案不是随便选零或一
仍用主例,但M1的100后来确认并非有效值,而且没有提供更早月末资料。助手删掉它,把剩余九值求平均,再标记“十个月信号已完成”;它还计划用M10当天开盘执行。请指出两处需要处理的问题,先不要补造缺失值。
剩余九值之和940,平均约104.44,当前109仍在其上方,但这不是原先规定的十个有效月末均值。先标记这次输入不足,核对是否有符合规格的更早有效观察及完整缺失政策;不能把九项结果冒充原信号,也不能把不足直接写成经济意义上的现金信号。
执行时点仍有另一处错误:M10收盘值在当天开盘未知,不能用它安排那时的订单。补足历史观察与修正执行时点是两件事;修好一个,并不会自动修好另一个。
保存你的信号定义表
为一个时间序列想法写下对象、输入字段与版本、计量单位、观察频率、窗口起止和最低数量。再填是否包含当前点、计算方法、比较方向、相等与精度规则、缺失处理、信号形成及最早执行时点。
用本篇主例和相等例子各重算一次,保存预期结果。若走因子路线,再列候选范围、排名、同分、极值与行业处理,以及每一步统计量来自哪段当时可得资料;不要直接把另一个模型的默认配置当成自己的定义。
自检时交给另一个人:他能否选择同一组输入,在同一时点得到同一条件结果?如果他只能靠猜你的“走强”是什么意思,就先补定义。得到一致信号后,下一步才检查它能否转成一致账本,以及是否有研究价值。
小结:每个信号都要带着时间说明
先把指标输入、窗口、频率和方向写全,明确等于与资料不足分别怎样处理。数量相同不等于时间范围相同,排序靠前也不等于绝对上涨;这些区别直接决定你检验的是哪一个想法。
再检查预处理与执行是否只依赖当时可知资料。信号定义明确,只证明别人能重算这项条件,尚未证明能够成交或获得收益。把未知和版本留下,才有可能在后续实验中判断改动究竟改善了什么。
参考资料
- Hurst、Ooi、Pedersen:A Century of Evidence on Trend-Following Investing,2017原作者机构页面。仅用于时间序列趋势研究思想,不把其研究结果推广为本篇C2或任意窗口的效果。
- CFA Institute:Backtesting & Simulation,2026公开概要。规则、组合及评价流程,未读取付费全文。
- scikit-learn官方文档:Common Pitfalls—Data Leakage。预处理统计量与信息泄漏,仅引用概念,不要求编程或采用该库。
资料核查日期2026-10-29。本文由AI辅助编写与检查,尚待人类金融审校或目标读者试读。所有指数点位与排序例子为独立合成输入,不是已完成的真实C2回测。