高ROE选股回测踩过的坑:开卷考试 vs 闭卷考试

如果你经历过5年前贵州茅台、以及后来各种"药中茅台"的那波行情,应该对"高ROE"这三个字不陌生。那几年,几乎所有卖方研报、公众号回测、甚至量化选股组合,都在做同一件事:把过去10年ROE又高又稳的公司挑出来,做成一个"好公司"池子,然后回测——结果无一例外,都好看得让人心动。 但这些回测有一个共同的、很容易被忽略的毛病:它们几乎都是"以今天为终点"倒推出来的。你今天觉得茅台、片仔癀是好公司,是因为你已经看到了它们过去10年的成绩单——是先知道了答案,才拿着答案去对题。这就好比拿着这次期末考试年级前十名的名单,回头证明"这些学生平时成绩就很好"——这句话当然没错,但它没有任何预测能力,因为你是先看了考试结果,才挑出的这批人。 真正检验一套选股方法有没有用,不能只看它在"已经知道是好学生"的这批人身上表现如何。而要问:如果我回到过去每一个时间点,只用当时已经公开的信息去选股、去决策,这套方法在"当时还不知道结果"的未来里,到底管不管用?这就是"样本外检验"——不是拿着答案对题的开卷考试,而是没见过题目的闭卷考试。 我最近做了一次A股价值股回测,想把这个道理坐实——不是空口讲"以当时为终点的回测不靠谱",而是拿真实数据、同一套方法,先做一遍开卷考试,再做一遍闭卷考试,看看两者到底能差多少。这篇文章想把这个过程和背后的道理,用尽量通俗的方式讲清楚。 二、第一步:先把"开卷考试"做扎实 要证明"开卷考试"的分数不可信,得先老老实实考一次,不能只是嘴上说说。所以我按市面上最常见的做法,认认真真走了一遍流程。 先把"好公司"这三个字量化:过去8-10个完整会计年度,ROE(净资产收益率,通俗理解就是"用股东的钱赚钱的效率")平均在12%以上,且没有哪一年低于8%——不是看一年成绩好不好,是看一份连续8-10年的成绩单,成绩单里不能有不及格。再剔除几个"体质特殊"的行业:房地产、建筑装饰这类和地产周期强绑定的行业;银行、非银金融,因为它们的高ROE是杠杆撬出来的,不是资产本身回报率高,不能用同一把尺子量;纺织服饰这类偏传统制造的行业也一并排除。 用这套标准,从全市场5535只A股里剔除ST和上市不满8年的次新股,剩下3119只作为研究范围,筛出242只ROE合格的公司,再排除掉特殊行业,最终剩下216只"好公司"——注意,这216只是站在2026年、看着这些公司过去10年的成绩单选出来的,这一点很关键,后面会用到。 选出候选池之后,配一套同样朴素的买卖规则:把一只股票现在的估值(PE,市盈率)放到它自己过去5年的历史里排位次。现在的估值比过去5年里80%的时间都便宜,就买入;比过去5年里80%的时间都贵,就卖出清仓;其余时候维持原状。可以理解成"历史打折区间买、历史高位卖",不预测未来,只看相对自己历史便宜不便宜。 光讲规则有点抽象,直接拿开头提到的贵州茅台举个例子——它也在这216只"好公司"名单里: 上半张图是收盘价,下半张图是同一时间的PE历史分位(也就是当天的估值在过去5年里处于什么位置)。可以看到这套规则在茅台身上一共只触发过3次信号:2018年9月估值跌到历史低位买入,2019年4月涨回高位卖出,2022年10月再次跌到低位买入(一直持有到现在)。整个过程不需要判断基本面好不好、行业景气不景气,纯粹是"便宜了就买、贵了就卖"这一条纪律,8年时间只交易了寥寥几次——这也是为什么下一节的216只股票平均下来只有1.8次交易。 三、开卷考试的分数:好看到让人心动 拿这216只股票,把上面的规则回测了一遍(覆盖每只股票平均7.6年的历史),结果是: PE Band策略年化收益中位数 4.75%,买入持有不动只有 3.40% 65.3%的股票,这套择时规则都跑赢了"买了就不动" 平均一只股票8年里只交易1.8次——不是频繁进出,是很克制的低频操作 如果只看到这里,结论会是:“一个简单到能写进Excel的规则,在这批好公司身上,稳定跑赢了买入持有。” 这正是开头说的那种回测——好看,而且好看得有道理,因为它是拿着2026年已经知道答案的216家公司,去测2016年以来的历史。这一步的分数,本质上是一次开卷考试,我知道答案,只是想先让你看看,开卷考试能考多高分。 四、换成闭卷考试:同一套方法,差多少 真正的问题是:如果回到历史上的每一个时间点,只用当时已经公开的信息去挑好公司、去做买卖决策,这套方法在"当时还不知道的未来"里到底管不管用? 做法是:把研究范围从216只扩大回全市场3119只(避免因为"今天已经不在池子里"而漏掉历史上曾经合格的股票),然后设定每年4月30日(差不多是法定年报披露截止日之后)为一个"重新评估时点"。在每个时点,只用当时已经公开的年报数据,重新跑一遍同样的筛选标准,选出的名单构成接下来一年的"当期可持有池"——有的股票会因为ROE走弱中途被剔除,也有新股票攒够年报记录后中途加入。 这个名单每年都在变,变化幅度不小: 2017年只有10只股票能通过筛选(因为要求8年以上完整年报,往前倒推到2009年前后就得上市,早期能同时满足的公司很少),到2020年之后才稳定在150只左右。这本身就是对开头那句话最直接的证明:“好公司"名单不是一份写死的清单,是一个随时间流动的集合,用今天的清单去测过去,测的其实是一份当时根本不存在的名单。 用这个动态池子重新跑一遍回测,闭卷考试的分数是这样的: 算上样本极小的2017-2019年:买入持有年化 -3.80%(亏钱),叠加PE Band择时能扭亏为盈到 +1.71%,但仍然跑输沪深300的 +3.09% 剔除掉样本量过小、不具代表性的头两年,只看2019年之后:买入持有转正到 +1.80%,但依然跑输指数;PE Band择时达到 +4.43%,这才反超了沪深300 两个口径都要摆出来,因为它们讲的是同一件事的两个侧面:“贵了就卖"这条择时纪律确实持续有效(两个口径下,择时都比不择时强),但**“选出的这批好公司整体能跑赢大盘"这个预期站不住**——光靠"ROE高且稳定"选股,样本外并不能跑赢沪深300。开卷考试考出4.75%的年化,闭卷考试即便是最乐观的口径也只有4.43%,而且这4.43%里大部分功劳要归给择时纪律,不是选股本身。开头说的话,到这里算是用数字兑现了。 五、进一步拆开:价值陷阱是怎么发生的 把每年"这次合格、下次被剔除"的股票单独拎出来看,能看到一个很扎心的规律:这些股票在被剔除之前那一年(也就是筛选标准还没反应过来的时候),平均收益是 -14.63%;而同一时期留下来的股票,平均收益是 +2.20%。这个规律在观察到的9个年份里全部成立,没有一次例外。 进一步看,60%的剔除都是因为"单年ROE骤然跌破8%“这条硬指标触发的。这说明一件事:基本面恶化和股价下跌几乎是同步发生的,不是股价先跌、基本面后出问题,也不是基本面先出问题、市场后知后觉。问题出在筛选方法本身有一个结构性的滞后——用财报数据做筛选,天然要等一整年的年报正式披露、确认之后,才能反应过来。这一年的滞后期,正是"价值陷阱"吃掉收益的地方:你看到的还是去年那份好看的成绩单,但公司这一年其实已经在走下坡路了,等下一份年报出来确认"确实不行了”,股价往往已经跌完了。 六、几条对未来做价值股投资的启示 “好公司"是入场券,不是免死金牌。 达标只说明这家公司"过去很好”,不代表"现在依然很好”。持仓之后要持续跟踪最新一期业绩相对这家公司自己历史水平的边际变化,而不是建仓时筛一次就躺平。 比"ROE是否还大于8%“更早的信号,是"ROE相对自己历史是不是已经明显往下走了”。 哪怕绝对值还没跌破警戒线,只要最新一年的ROE明显低于这家公司自己过去的平均水平,就值得提高警惕——这是能提前于硬性门槛察觉问题的信号,也正对应上一节讲的滞后问题:等硬指标触发时往往已经晚了。 别迷信"越便宜越要买”,纪律真正该花在"贵了敢卖"上。 把买入门槛收得更紧(等更低的价格才买),样本外收益反而是恶化的;真正有效的是卖出端的纪律,而不是死等最低点。 高ROE不等于高质量,要交叉核对杠杆和现金流。 部分高ROE公司是靠高负债撬出来的,也有部分公司账面利润好看但现金流很难覆盖。只看一个ROE指标不够,至少要看资产负债率/ROA排除杠杆驱动,看自由现金流和净利润的匹配程度排除"利润好看但不来钱"的公司。 七、几句诚实的话 这套方法没有考虑交易成本、印花税、滑点;没有做分红再投资调整,用的是价格收益而非全收益,对高股息价值股可能低估了真实回报;覆盖的历史大约9年,只经历了有限的几轮牛熊,结论对未来周期的外推能力有限;用沪深300做基准也不算完全公允,这批股票风格偏价值、低波动,换成中证红利这类风格更接近的指数做对照可能更合适。 但这些局限性都不改变这篇文章想说的那件事:任何"回头看"选出来的股票组合,拿去测试同一段历史,业绩必然被高估。不管是自己做选股回测,还是看别人晒出来的漂亮回测曲线,都值得先问一句——这个股票池,是用当时能看到的信息选出来的,还是用今天的信息选出来的? 数据来源:Tushare Pro。完整方法论与逐项数据见同目录下 研究报告.md、总结与投资启示.md。

August 5, 2026 · 1 min · Dan

板块「抱团」到什么程度,才算见顶信号?

前几天写完那篇关于八年前资金面周报的文章后,我一直惦记着一个更具体的问题:那些券商报告里"某板块成交额占比冲到近两年高位,往往是阶段性顶部"这类判断,到底能不能当真?这句话几乎是每一份行业轮动研报的标配句式,听得多了,我开始怀疑自己是不是从未真正验证过它,只是因为它符合直觉——“太挤的地方,早晚要出事”——就默认接受了。 于是我们拿天风证券当年一篇讨论TMT成交占比的报告作为起点,把这句定性判断翻译成了一套可以回测的规则,在2014到2026年的A股全部32个申万一级行业上认认真真跑了一遍。过程比我预想的要曲折,结论也比我预想的要朴素。 “抱团"是什么,其实没那么复杂 一个板块被"抱团”,说白了就是某一天全市场一共成交了多少钱,这个板块自己占了多大比例。比例越高,说明相对更多的钱这一天都挤在了同一个筐里。把这个比例每天记一遍、取5日均值抹平噪音,就得到一条可以长期跟踪的曲线。 但光看这个比例的绝对数字没什么意义——3%对光伏板块可能是冷清,对家电板块可能已经是历史级别的疯狂。真正有意义的问题是:这个比例放进过去一两年的所有交易日里排名,算不算数得着的高。这就像儿保科体检报告不会直接告诉你"188厘米算不算高",而是告诉你"在同龄人里排第90百分位"。我们对拥挤度做的是同一件事:把"排在过去两年最热的前10%“定义为一次高点信号,“排在最冷的后10%“定义为一次低点信号——研报里那句定性判断,就这样被翻译成了一条能验证的规则。 这句话,经得起回测吗? 光挑几个印象深的案例讲故事是不够的,那样太容易自己骗自己。我们把12年里全部32个板块触发过的高点信号和低点信号都找出来,一共1600多次,再从全部普通交易日里随机抽一批"什么都没发生"的日子做对照组——如果信号组的后续表现和随便挑的普通日子没有差别,这套规则就是自欺欺人。 先拿电力设备(新能源、锂电的主战场)2016到2022年这一段热热身,把价格和信号点画在一起: 上图橙点是高点信号,青点是低点信号,下方是拥挤度在近两年里的排名。2021年这一轮真正的历史大顶出现在11月,价格摸到过13800附近;拥挤度最后一次报警定格在12月16日,价格已经回落到13393——离顶点不算远,但这是顶部形成一个月之后的事后确认,不是提前预知。再看2018年年初:全年下跌的电力设备,年初收盘价恰好是全年最高,但当时拥挤度只排在后6%,指标完全没有被这个"假高点"骗到。两件事放在一起看,大概就是这套指标真实的样子:不算精准,但也不是瞎报警。 把全部1600多次信号和对照组放在一起算,我们想知道三件事,答案一个比一个反直觉。 抱团抱到最热之后,收益会明显变差吗?看不出来。信号组之后的平均收益确实都是负的,方向和研报说的一致,但摆出误差范围一比,这点差距完全被淹没——就像两个人身高差2厘米,但测量误差有正负30厘米,谁也说不清谁更高。 抱团抱到最热之后,会变得更颠簸吗?会,尤其是接下来2到4周。这是这次回测里最站得住脚的一条结论,换了好几种参数、好几个时间段重新测都没变过。 两组的点几乎贴在一起,这是"看不出来"的意思;但橙色的竖线在10天、20天窗口明显比灰色更长,波动被真实地放大了。 冷清到极值之后,会更抗跌吗?短期是的,但只撑得住一个月。 前三组(打星号的5/10/20天)青色柱子明显比灰色短,这个差异站得住脚;后两组几乎一样长——短期的抗跌优势,撑不到三个月以后。注意这只是说"没那么容易再跌”,不代表"接下来会涨”,这是两回事。 我们想让它更准,但一次次落空 拿到这三条结论后,我们不甘心——“波动会放大"固然有用,但更想知道的是能不能卡准一点,别老是马后炮。接下来几次尝试,说实话都没有达到目的,但过程本身比结论更值得记录。 我们先把"和过去两年比"换成"和自己最近三个月比”,指标对短期变化确实更敏感了、报警次数也变多了,但六个热门板块里五个板块"真正的历史顶点附近仍然没有信号"这个现象依然存在——换一种量尺,没有改变拥挤度的极值点和价格的极值点本来就不同步这个底层事实。我们又叠加了估值贵不贵、动量是不是涨过头两把尺子,要求同时报警才算数:高点这边,“一起报警"确实让波动放大的结论更清楚了;但低点这边出了一个没预料到的反面结果——本来单纯冷清之后短期还有点抗跌效果,一旦要求三重确认,这个优势不但没加强,反而消失了,后续表现还更差。我们怀疑这种叠加筛出来的可能不是"超跌待反弹"的票,而是"没人要、便宜也没人捡"的票,这只是个猜测,没有证据坐实,但足以提醒自己:不是确认条件越多越保险,得分开验证,不能想当然。 最亮眼的那条发现——“多指标一起报警后波动放大更明显”——我们又换了四个历史阶段分别重新测,结果只有2021到2023这一段特别显著,2014到2017几乎测不出来。更可能的解释是那几年市场本身格外剧烈,不是这套方法真的更准,只是赶上了一个特别配合的年份。我们把要求提到最高,拥挤度、估值、动量三个指标同时确认,12年里全市场一共只出现过13次,直接拿这13次报警当天的价格去查:往前后各放宽一个月看,只有1次真的是那个月里的最高价;放宽到前后三到六个月,一次都不是。三次尝试之后,我们承认了一件事——拥挤度这个维度,本身就做不到精确卡顶,换算法、叠指标、换时间段都没能改变这一点。 换一个更谦虚的问题 既然精确抓顶这条路走不通,我们把问题换了一个更谦虚的版本:不再问"这一天是不是最高点”,而是问"现在算不算处于近两年少见的高位区间”。这就像天气预报报暴雨预警,不会告诉你哪一分钟会下最大的雨,但会提醒你今天出门带把伞——容忍多报警几次没关系,但不希望真正的高位区间被漏掉。 换了目标之后,我们把四个指标摆在一起重新打分:拥挤度本身、拥挤度相对自己短期均线的偏离、估值分位(贵不贵)、以及RSI(一个常见的技术指标,衡量涨得是不是过猛)。 左图能看出估值分位数覆盖面最广——真正的高位区间里,69%的日子估值也同时排在近两年前10%,这符合直觉,炒上历史高位的板块,估值大概率也被顶到历史高位。RSI报警准不准最高,一旦超买,过半概率真是处于高位区间,但它比较高冷,只能抓到24%的高位区间。拥挤度和它的短期偏离单独看都只能算中等。右图是把要求逐步收紧的结果:越松抓得越全但越容易误报,越严可信度越高但漏掉的也越多。“至少两个指标同时满足"是一个比较均衡的点——能覆盖40.5%的高位区间交易日,报警时真的处于高位区间的概率过半,我们把这条当作目前最实用的预警规则。 光看统计数字还不够踏实,我们又挑了几个板块历史上真正的情绪大顶,和一个"技术性最高点”(价格确实是当年最高,但只是因为那年一路下跌、年初恰好垫底)做对比: 板块 · 年份 拥挤度分位 短期偏离分位 PE分位 RSI 电力设备 · 2020(真高点) 98.2 82.2 100.0 68.4 食品饮料 · 2021(真高点) 98.2 67.6 100.0 74.1 国防军工 · 2026(真高点) 100.0 96.6 100.0 91.2 电力设备 · 2018(技术性最高点) 6.0 16.6 5.8 53.5 前三行是真正的历史性大顶,四个指标几乎全部逼近或达到100,齐刷刷地"发烧";最后一行那个技术性最高点,四个读数全部偏低,没有一个指标被这个价格幌子骗到。这套组合规则不是见到新高就乱报警。 回到今天 这套框架现在每个交易日都在跑一遍全市场32个板块。就在写这篇文章的今天,2026年7月17日,有两个板块同时踩中了两个以上指标: ...

July 17, 2026 · 1 min · Dan

回看8年前的资金面周报,我们到底需要怎样的市场数据?

最近我翻出了几份2018年的券商策略研报——天风证券刘晨明团队的「一周资金面及市场情绪监控」系列。距今将近八年,A股经历了2018年的熊市、2019年的反弹、2020年的疫情冲击、2021年的结构牛,再到之后漫长的调整。拿着这些当年的"实时数据"回头看,我有一些与当初截然不同的感受。 专业系统的流动性监控框架 这套框架涵盖15个指标,覆盖资金需求、资金供给、货币价格三个维度,从IPO抽血到北上资金、从SHIBOR到产业资本增减持,每周更新,每个指标给出A到E的评级,最终加权得出"股市流动性综合评级"。 从2018年3月的C级,到2018年8月的B级,再到2019年2月的B级——每一次评级背后都有清晰的逻辑支撑。3月是因为货币偏紧、产业资本持续减持;8月是因为央行开始降准、北上资金逆势流入;2019年初则叠加了社融超预期放量的信号。 这套体系的完整性和自洽性,放在今天依然值得学习。 这些数据,当时真的帮到人了吗? 如果我们开着倒视镜回看当时的报告以及当时的市场,会发现。 2018年是A股当时调整的起点,2018年初市场延续2017年蓝筹行情冲高,在春节特朗普签署对华301调查备忘录,引起中美贸易战的恐慌,A股应声大跌。当时的流动性报告评价长期是C,而2018年8月,报告给出B级评级,当时北上资金持续流入,货币政策转松,各项指标改善明显。但上证指数从那时起继续跌了将近半年,一直跌到2019年1月才见底。如果你在8月看到B级评级就认为"流动性改善,可以加仓",那接下来几个月的体验并不会太好。 这不是在批评报告本身——报告从未声称自己是择时工具。但问题是,大多数读报告的人,心里期待的恰恰是某种择时信号。 这是报告的功能与读者期待之间的结构性错位。 资金面数据的本质:一面记录过去的镜子 回头想想,这件事其实并不奇怪。 成交量、换手率、融资买入额——这些数据记录的是市场参与者已经完成的行为。北上资金本周净流入多少亿,说明的是外资上周买了什么,而不是下周会买什么。基金发行量高,说明的是现在情绪乐观,而乐观情绪恰恰是在市场已经涨了一段时间之后才产生的。 换句话说,资金面数据天生是同步的,在很多情况下甚至是滞后的。用它来预判方向,是对它能力边界的误读。 那么,它在哪里真的有用? 经过这番翻看和反思,我认为资金面数据的价值主要体现在两个地方。 第一,判断当前所处的宏观流动性环境。 DR007、SHIBOR、国债收益率的水位,决定了整个市场的定价环境。资金便宜的时候,市场可以容忍更高的估值;资金昂贵的时候,高估值股票的压力会系统性增大。这不是择时,是理解市场背景的基础底层,需要长期跟踪,而不是单周数据的涨跌。 第二,识别情绪的极端状态。 这是我认为资金面数据最有价值的地方,但它指向的不是"方向预判",而是"风险感知"。 当融资余额占流通市值的比例跌破某个历史低位,当新基金发行几乎停滞,当成交量萎缩至冰点,当产业资本开始大规模净增持——这些信号叠加在一起,说明的不是"明天会涨",而是"市场已经把悲观情绪定价得相当充分了"。反过来,当爆款基金频出、融资盘快速攀升、大宗交易折价率消失——这不是涨势结束的精确时点,但它提示你应该开始认真审视自己的持仓风险。 极值是提醒你调整心态的信号,而不是给你确定性答案的信号。 我们真正需要的,可能比我们想象的少 八年前,一份合格的资金面研报需要追踪15个指标、每周更新数十张图表。今天,信息的获取成本更低了,数据的种类更多了,但投资者面对数据时的困惑,似乎并没有减少。 这让我觉得,问题可能不在于数据的数量,而在于我们与数据的关系。 我们总是希望数据能告诉我们该怎么做。但数据能做到的,其实只是帮助我们更清楚地看到当下的状态。把"看清状态"当成"预判未来",是投资者面对数据时最常见、也最昂贵的一种误解。 真正有用的资金面框架,大概只需要三件事:持续感知货币环境的松紧,定期观察情绪指标是否走向极端,以及在极端信号出现时,保持足够的耐心等待基本面或政策面的共鸣。 剩下的那些图表,不看也罢。 本文基于对天风证券刘晨明团队2018-2019年「一周资金面及市场情绪监控」系列报告的阅读与反思。

July 14, 2026 · 1 min · Dan