第 13 课 把想法写成可检验问题¶
研究从一句观察开始,却要在看结果以前把对象、时间、规则、比较方式和放弃条件写清。
一句话为什么还不能成为研究¶
小岚观察到,最近上涨较快的股票似乎还会继续强一阵。她把这句话交给两位同学,请他们独立写程序。第一位把“最近”理解为五个交易日,收盘买入后持有一天;第二位使用过去六个月的涨幅,在每月末选择排名靠前的股票并持有一个月。两段程序都能运行,也都声称研究了“强势股票”,结果却没有共同含义。
自然语言允许人们依靠语境补充细节,研究规则必须把这些细节变成可以核对的决定。研究对象是谁,观察多少期,强势怎样计算,相对于谁比较,信息在何时完整,订单何时进入市场,持有多少,怎样计算费用,什么结果才算支持原想法。只要其中一项仍然含糊,代码就会替研究者悄悄作出选择。
量化研究的第一项工作是把观察改写成一个可检验问题,调参数与运行回测都要等到问题明确以后。可检验表示数据可能支持它,也可能让我们放弃它。若任何结果都能被解释成“策略仍然有效,只是市场特殊”,这句话便没有接受证据反驳的空间。
从市场现象走向研究假设¶
市场现象是研究者反复观察到的一类表现,例如过去一段时间相对较强的资产,有时会在随后一段时间继续保持相对强势。这类现象通常称为动量。现象只告诉我们“可能存在什么”,没有说明原因,也没有保证在当前市场、费用与样本中仍然成立。
研究假设是一条可以被数据检查的具体说法。它需要把现象放进明确的对象、时间和比较关系中。我们先为贯穿本课的案例写一版草稿。
在每个交易日当时可交易的流动性较好资产中,过去约一个交易月相对涨幅较高的资产,在接下来一个交易周里是否仍比同日其他候选资产表现更强。这是一项等待检验的教学假设,不是市场事实,也不构成投资建议。
这句话已经比“强势股票还会涨”具体,但仍有待决定的内容。一个交易月用多少个交易日近似,流动性较好怎样筛选,相对涨幅与谁比较,未来一周如何衡量,订单使用什么价格,费用按什么口径。这些空白要在研究卡中逐项展开。
市场故事帮助我们提出会失败的条件¶
研究者常为现象寻找可能机制。机制是一条解释链,说明参与者行为、制度限制或风险承担怎样产生可观察结果。动量的一种解释是信息扩散需要时间。新信息出现以后,投资者理解和调整持仓的速度不同,价格可能逐步反映变化。另一种解释认为,趋势持有者承担了在市场转折时快速亏损的风险,历史回报可能包含风险补偿。
机制不能代替统计证据,它的价值在于推导边界。如果现象来自缓慢的信息反应,效果可能在有持续信息流、交易摩擦不太高的资产中更容易观察;若交易成本很高,信号即使存在也可能无法进入净收益;市场突然反转时,追随过去强势的组合可能集中受损。数据若持续违背这些推论,原来的解释就要修改或放弃。
只从大量指标里挑一条曲线,再事后编写市场故事,会把历史偶然包装成事先判断。较稳妥的顺序是先写观察与可能机制,再规定主要检验和失败环境,随后才打开结果。探索数据当然允许产生新想法,但新想法要被标记为探索结论,并交给新的时间段再次检查。
把含糊词逐个改成可计算决定¶
研究对象要有历史边界¶
“股票”需要说明市场、币种、资产类型与历史资格。教学案例可以规定,每个日期只从当时已经上市、没有停牌并满足最低成交活跃度的资产中选择。这个每日变化的范围叫作候选池。第 10 课已经说明,候选池必须使用当时记录,不能拿今天仍然存活的清单替换过去。
流动性筛选也要提前定义。可以使用过去二十日平均成交额,并且只采用截至信号日已经形成的数据。阈值来自市场容量与教学简化,而不是看到回测以后挑出最有利数字。真实研究还要说明自己的订单规模相对于成交额有多大。
最近与强势需要明确起点¶
一个交易月常近似为二十个交易日,因此案例先用二十日收益描述近期变化。某资产今天复权收盘价为 10.50 元,二十个交易日前为 10.00 元,二十日收益就是 10.50 除以 10.00 再减 1,得到 5%。复权价格负责保持公司行动前后的收益口径连续。
“相对强势”还需要比较对象。若同一天大多数资产上涨 10%,只涨 5% 的资产虽然绝对上涨,却处于候选池后部。截面比较会在同一个日期把候选资产按二十日收益排序,选择排名靠前部分。截面表示同一时点横向比较多个对象,与沿着一只资产的时间变化相区别。
接下来仍强要先规定观察终点¶
我们把“接下来一阵”暂定为未来五个交易日,并比较入选资产与同日候选池平均表现。未来五日结果只能在五天以后得到,它在研究中负责判断过去信号是否有信息,不能回到信号日参与选股。
这种用来检查预测目标的未来结果叫作标签,机器学习部分会在第 25 课详细解释。当前只需保持时间分工。信号日在左侧,订单与持有期向右展开,未来结果到期后才用于评价。任何计算标签的代码都不能把未来价格混入信号列。
订单与组合把判断接到账户¶
二十日收益要等当天收盘后才能完整,因此案例把买入安排在下一交易日。初版只选择排名前五的资产,每项分配相同资金,也就是等权持有。这样少了一个仓位优化问题,可以先把注意力放在信号与成交上。持有五个交易日后退出,重复信号与无法成交的处理也要写进规则。
等权不是最优结论,它是一条容易解释的起点。若选择五项,每项目标权重为 20%。后面可以研究波动率控制或风险预算,但复杂权重会同时改变现象、换手和风险,第一版先让选择逻辑保持清楚。
基线告诉我们新规则增加了什么¶
策略得到正收益时,市场本身可能上涨得更多;复杂模型超过现金,也可能仍然不如简单持有。用来比较新方法的简单对手叫作基线。基线必须使用相同数据区间、费用、候选池和风险预算,否则比较差异可能来自条件不公平。
动量案例可以安排三层基线。第一层是等权持有同一候选池,用来区分普遍市场上涨与选股效果。第二层只使用二十日涨幅,不加入其他过滤条件,用来判断新增规则是否提供额外信息。第三层在相同日期随机选择同样数量资产并重复多次,用来观察没有信息的选择会产生多宽的结果范围。
基线越简单,越容易复现和解释。复杂方案若无法稳定超过合理基线,新增数据、参数和模型就没有获得充分依据。研究者仍可以保留探索结果,但报告要承认复杂度没有带来可重复的增量证据。
参数需要来路,也需要邻近检查¶
二十日观察窗和五日持有期只是与“一个交易月”和“一个交易周”相近的教学设定,不是神奇数字。参数是规则中能够被选择的数值,例如观察天数、排名比例和持有天数。参数可以来自研究问题的时间尺度、市场制度、公开研究或执行限制,来源要写在卡片上。
一个稳健现象通常不会只在精确的单个数字上存在。二十日稍微改成十五日或二十五日,结论可以变弱,却不应毫无原因地完全翻转。围绕主要参数检查一小片合理范围,叫作邻近检查。它用于发现结果是否像一根只在特定点竖起的尖针。
邻近检查也会使用历史信息,所以尝试次数必须记录。一次试验不满意就继续扩大搜索,最终总会碰到某个漂亮组合。只有公布冠军参数而不报告参加过多少候选,会夸大证据。第 16 课会把这种多次尝试造成的过度拟合讲清。
放弃条件要在结果出现以前写下¶
可检验假设需要允许失败。研究者看到不理想结果以后,很容易增加过滤器、改起止日期或换一套费用,让曲线重新变好。提前写下停止或放弃条件,可以减少这种事后修补。
本例可以先规定四类失败。合理费用下,后期未参与开发的数据没有超过等权基线;优势几乎全部来自少数资产或少数日期;观察窗口从二十日小幅移动后结论方向翻转;恢复历史候选池、停牌和成交限制后,原优势消失。任何一项发生,都要先停下来解释,不能立刻把考试数据用于下一轮调参。
放弃一条假设不代表研究没有价值。它说明检查成功暴露了边界,也为下一项问题留下证据。市场研究面对不确定性,知道什么不值得继续投入,与找到暂时值得深入的方向同样重要。
九格研究卡把决定集中到一页¶
| 格子 | 需要回答的问题 | 动量案例的第一版 |
|---|---|---|
| 现象 | 观察到了什么 | 近期相对强势可能短期延续 |
| 机制 | 为什么可能出现,何时可能失效 | 信息缓慢扩散,快速反转与高成本可能削弱 |
| 市场 | 在哪里研究,历史对象怎样进入 | 当日可交易且达到流动性要求的候选池 |
| 数据 | 使用哪些字段,何时可见 | 时点候选池与复权日收盘价 |
| 信号 | 怎样把过去信息变成分数 | 同日比较二十日收益排名 |
| 订单 | 信息形成后何时、怎样交易 | 收盘算信号,下一可交易时点执行 |
| 组合 | 选择多少,怎样分配与退出 | 前五项等权,持有五个交易日 |
| 验证 | 怎样安排基线与未见数据 | 等权和随机基线,按时间切分并滚动复查 |
| 放弃 | 哪些结果会停止研究 | 扣费后无增量、结果过度集中或参数极脆弱 |
第一版允许出现“待确认”,因为暴露未知项比让代码默认决定更诚实。正式运行主要回测以前,应把会改变时间、交易与评价的待确认项解决。卡片还要保存版本号,参数、数据或规则改变以后生成新版本,旧卡不能被覆盖。
研究记录保存试验怎样长出来¶
研究记录与课堂学习笔记承担不同职责。它只保存会影响实验解释的决定,例如修改日期、修改原因、当时看过哪些结果、下一步准备做什么。几周以后,研究者可以根据记录数清已经尝试过多少版本,也能区分事先计划与看完结果后的探索。
日期 2026-08-06
版本 MOM-003
修改 把主要观察窗保持为 20 日,增加 15 日与 25 日邻近检查
原因 检查结论是否依赖精确参数
已看结果 只查看研究期,后期测试仍保持封存
下一步 冻结规则和费用口径,再运行滚动验证
记录失败、报错和负结果非常重要。若最终只保留最好版本,后来的人会误以为它是第一次尝试的结果。完整试验轨迹能让读者重新评估所谓最佳结果中包含多少选择机会。
让 AI 先当提问者¶
AI 很容易根据含糊想法补出一段完整代码,缺失的市场、时间和费用选择也会被它一起补上。第一轮协作可以明确禁止写代码,让 AI 只负责寻找研究卡空白与内部矛盾。
我想研究“过去一段时间相对强的资产,未来几天是否继续相对强”。现在不要写代码,也不要推荐最优参数。请作为研究审稿人,按照市场、历史候选池、数据可见时间、信号、订单、组合、成本、基线、验证与放弃条件逐项提问。每个问题后说明,如果不回答,回测可能产生什么误解。无法从我提供的信息确认的内容必须标为待确认。
你负责回答并核对问题,AI 可以把答案整理成研究卡,也可以寻找“收盘后计算却按同日收盘成交”这类冲突。交易所制度、数据商字段和费用仍要回到正式资料确认,不能让 AI 根据常识猜测。
在网页里完成第一张研究卡¶
AI 研究卡实验会依次询问市场、数据时间、信号、成交、成本、基线和放弃条件。内容只保留在当前浏览器中,可以复制为 Markdown 后纳入毕业项目。填写时先允许未知项存在,再为每个未知项写下一条查证途径。
请把“跌得太多会反弹”改成可检验草稿。至少补上资产范围、观察窗口、反弹期限、订单时间、比较基线和一项放弃条件。先独立写完,再查看参考。
查看参考写法
在每个日期当时可交易、成交活跃度达到预设要求的资产中,选出过去五个交易日收益排名处于最低十分之一的对象,从下一交易日可执行时点建立等权组合,并观察随后三个交易日相对于同日候选池的表现。若扣除费用后不能稳定超过同数量随机选择,或结果几乎只来自少数暴跌后的反弹日,就停止当前版本。流动性阈值、重复信号和成交假设仍需继续确认。容易弄错的地方¶
| 容易发生的做法 | 它怎样改变研究 | 应留下什么约束 |
|---|---|---|
| 先找赚钱参数,再补市场故事 | 把历史偶然写成事先判断 | 先写机制、主要参数与失败环境 |
| 只要策略上涨就宣布有效 | 市场或简单持有可能涨得更多 | 使用同区间、同费用和同风险的基线 |
| 样本外不好就继续调整 | 最终考试被反复使用,逐渐变成开发数据 | 打开前冻结规则,失败后启用新数据 |
| 覆盖旧版本,只保存冠军 | 尝试次数消失,证据被夸大 | 每次修改生成版本并保留已看结果 |
| 放弃条件写成“表现不好” | 别人无法判断何时触发 | 指明数据区间、费用口径、基线和阈值 |
一分钟自测¶
“买入强势股票”能否直接成为完整研究问题?
查看答案
不能。强势的计算窗口、历史候选池、相对比较对象、信号形成时间、订单、持有期、费用、基线与放弃条件都没有说明,不同研究者会得到不同规则。本课术语¶
| 词语 | 先这样理解 |
|---|---|
| 市场现象 | 在一类数据中反复观察到的表现 |
| 研究假设 | 可以由数据支持或反驳的具体说法 |
| 机制 | 解释参与者行为、制度或风险怎样产生现象的链条 |
| 候选池 | 某个历史日期当时有资格被策略选择的资产范围 |
| 截面 | 在同一时点横向比较多个对象 |
| 基线 | 新方法需要面对的简单比较对象 |
| 参数 | 规则中需要预先选择的数值设置 |
| 放弃条件 | 事先约定哪些结果会停止当前研究版本 |
课后练习¶
1 区分现象与假设¶
“低价股票经常反弹”为什么仍然更接近观察,而不是完整假设?
提示
检查低价、股票范围、反弹期限和比较对象是否已经定义。答案
这些关键词仍然含糊,也没有说明数据时间、订单、成本与失败条件,因此还不能被另一位研究者重复检验。2 收紧一个参数¶
把“最近上涨较多”改成一个可计算定义,并说明参数来路。
提示
可以使用交易周或交易月对应的日数,但要写清比较起点。答案
一个示例是“过去二十个交易日复权收盘价收益处于当日候选池前十分之一”。二十日近似一个交易月,仍需做邻近检查。3 识别考试污染¶
研究卡写着“后期测试不理想就继续调整,直到后期结果改善”。问题在哪里?
提示
反复看答案会怎样改变这份数据的角色?答案
后期测试会逐渐参与规则选择,从最终考试变成新的开发数据。应记录失败,修改后的版本使用新的未见数据再次检验。4 动手填写¶
打开研究卡实验,为自己的一个想法填写九格内容,并至少保留一个明确的待确认项。
提示
待确认项要附上查证途径,例如交易所规则、数据字典或费用表。答案
答案因问题而异。完整卡片至少覆盖市场、数据时间、信号、订单、组合、成本、基线、验证和放弃条件。5 开放思考¶
市场故事与统计结果冲突时,研究者应怎样处理?
评价要点
先检查数据、代码和实验设计。若实现无误而证据仍不支持机制,应记录冲突并修改或放弃假设,不能只挑选支持故事的区间。新解释需要新的可检验后果和未见数据。一句市场观察走到这里,已经有了研究对象、所需数据、信号与订单规则,也有了比较基线和放弃条件。把填好的研究卡交给另一位同学,如果他不需要猜测窗口、成交和费用就能复述实验,问题才算写到了可以回测的程度。