为什么RPS回测年化38%,实盘三个月却亏18%?
Hello,
我是葱头,
一个写了26年代码的程序员。
现在在用缠论和RPS做主观交易。
今天我们来聊聊RPS选股信号里的数据陷阱与拥挤交易
小字注:因调研工具暂时不可用,基于真实经验撰写
2023年下半年,我花了整整两周把RPS选股策略跑通了回测。
那时候用的数据是某知名数据商的日线级别前复权,周期选250天,阈值设80,买入次日开盘价,止损设前一日最低价,止盈跟踪ATR两倍。
回测出来年化38%,最大回撤12%,夏普接近2.5。
那会儿我盯着回测报告,心里想着,这不就是印钞机吗?
好家伙,实盘跑了三个月,账户亏了18%。
---先说数据清洗这回事,这绝对是程序员最容易忽略、却最致命的坑。
回测时我用的前复权数据,看着K线漂亮、连续、没缺口。
可实盘里,股票分红送配、停牌复牌、临时停牌、退市整理期、ST摘帽、换股上市、甚至同一只票一天内换过两次代码,这些情况前复权数据里要么没体现,要么体现得不全。
最扎心的一次:某只票除权日前一天RPS还在85,除权日开盘价直接跳空缺口,前复权数据里那根K线看着涨了3%,实盘买在手里却是亏5%起步。
那几天我天天盯着数据清洗脚本改,加分红送配还原、加停牌标记剔除、加换代码映射表,改了三版,回测曲线愣是没变漂亮多少,那就是因为那些「脏数据」产生的假信号,在回测里早就被前复权平滑掉了。
---讲真,数据商卖给你的「干净数据」,大多是事后诸葛亮整理出来的。
实盘当下,你拿到的只有带噪声、带延迟、带缺口的原始Tick。
RPS这玩意儿本质是排序,极其敏感边界附近的微小价格变动。
一只票收盘价差两分钱,RPS可能就从79.8跳到80.2,信号直接翻篇。
回测里用收盘价算RPS,实盘收盘前十分钟价格还在跳,你要不要按当时价格下单?
要,万一收盘拉回去了,信号消失,你就白买了;不要,万一收盘确认了,你又错过开盘价买入的最佳位置。
这种「收盘确认vs实时下单」的时序博弈,回测里根本不存在,回测默认你神仙般拿到了收盘价还能穿越回开盘买入。
---再聊聊拥挤交易,这才是RPS高分股实盘表现不如回测的核心原因。
RPS80以上的票,本质上就是「过去一段时间涨得比全市场80%的股票都强」。
谁在买这些票?量化私募、北向资金、公募基金、甚至同行散户跟风盘。
大家用的筛选逻辑大同小异:高RPS、高换手、突破年线、量价配合……
当几百亿甚至上千亿资金用着相似的模型盯着同几十只票时,这票的流动性溢价早就被透支了。
---我有个很具体的感受:2024年春天那波AI板块行情,RPS90+的票一抓一大把。
按回测逻辑,买入次日开盘价,止损前一日最低,应该能吃到主升浪。
可实盘里,这些票开盘往往直接高开3%-5%,甚至一字板,根本买不到;勉强追进去的,盘中一旦回调2%,量化止损单子一砸,瞬间砸穿你的止损位,然后反手拉升,把散户全震仓出去。
我当时就纳闷:回测里明明止损设在前日最低,为什么实盘总被扫?
后来复盘才明白:回测用的「前日最低」是日线数据里的最低价,实盘里分时图最低价往往比日线最低价还要低个一两个点,那就是算法在毫秒级扫单、做流动性收割。
你的止损单挂在日线最低价,对算法来说就是送上门的流动性。
---这让我想起写代码时做压测的场景。
压测环境里,请求是均匀发送的,数据库连接池够用,锁竞争不激烈,QPS跑得飞起。
上生产环境,突发流量洪峰、慢查询堵连接池、主从延迟导致读脏数据、甚至机房光缆被挖断,压测跑出的性能指标全失效。
RPS回测就是那个「压测环境」,实盘才是「生产环境」。
你在回测里验证的是「理想条件下策略的理论上限」,在实盘里面对的是「非理想条件下策略的生存下限」。
这两者中间的鸿沟,不是加几个参数、调几个阈值能填平的。
---那么,是不是RPS就没法用了?
我也曾这么想过,甚至想扔掉RPS改做基本面选股。
但后来我想通了一件事:RPS从来不是「买入信号」,它只是「关注名单生成器」。
回测里把它当信号用,是因为回测没有「主观判断」这个变量,程序只能按规则死执行。
实盘里,RPS筛选出的20只票,我会逐一打开日线、周线、月线,结合缠论中枢、买卖点、量能结构、甚至财报预告、行业政策,手动剔除掉15只。
剩下的5只,才是我真正会下单的标的。
这5只里,有的RPS可能只有75,但缠论周线级别二买刚确认、量能温和放大、板块逻辑站得住脚,这才是我要的「确定性」。
---这里有个很关键的认知转变:从「信号触发即执行」变成「信号触发即观察」。
RPS高,只说明它「曾经强过大多数人」;缠论买点出现,才说明它「现在多头占优、结构向好」。
前者是历史统计,后者是当下结构。
把两者混为一谈,就是拿历史统计当结构确认,这在回测里叫「过拟合」,在实盘里叫「送钱」。
---再分享个细节,关于「换手率」这个RPS常用的辅助过滤条件。
很多教程说:RPS高+换手率适中(5%-15%)=主升浪确认。
我实盘统计过:RPS80+且换手率5%-15%的票,次周上涨概率确实有60%左右。
但有一类情况极其危险:RPS从60飙到85的过程中,换手率从3%飙到25%,然后回落到10%。
这种「换手率先行见顶、RPS滞后见顶」的票,往往是主力出货完成、散户接盘的典型特征。
回测里只看截面数据(当日RPS、当日换手率),完全看不出这个动态过程。
实盘里,我会把换手率序列拉出来看趋势:换手率在放大还是萎缩?峰值出现在RPS峰值前还是后?这个动态视角,回测框架很难建模,但人眼看分时、看日线换手柱状图,三秒钟就能判断。
---还有个程序员视角的细节:数据频度对RPS的影响。
日线级别RPS250,周线级别RPS50,月线级别RPS12,三个周期算出来的排名经常打架。
日线RPS85、周线RPS60、月线RPS40,这票到底算强不算强?
回测里你得选一个周期死磕,或者搞多周期投票机制,参数一多,过拟合风险指数级上升。
实盘里,我只看日线RPS做初筛(漏斗入口),周线级别缠论结构做确认(买点判断),月线级别趋势做背景板(大方向过滤)。
三个周期各司其职,不投票、不加权、不打分,全凭「当下结构」一张图说话。
这种「分工明确、不求全」的用法,反而比任何多因子模型都管用。
---说到这儿,我不得不承认:我现在的RPS用法,和两年前回测时的RPS用法,已经是两码事了。
回测时,RPS是「决策树的根节点」;现在,RPS只是「盘前刷票的快捷键」。
这中间的差距,不是数据更干净了、参数更优了、模型更复杂了填平的。
是因为我接受了一个事实:市场不是实验室,数据不是真理,信号不是指令。
所有的量化指标,包括RPS、缠论、MACD、布林带,本质上都是「降维后的投影」。
投影必然丢失信息,丢失的那些信息里,藏着实盘生死攸关的细节。
---前阵子有个读者问我:「葱头老师,你现在RPS参数设多少?周期多少?阈值多少?」
我愣了一下,回他:「日线250、阈值80,但这参数不重要,重要的是你看完RPS之后干什么。」
他追问:「那你看完之后干什么?」
我说:「打开缠论图,找中枢、找买点、看量能、查基本面、查停牌历史、查分红送配记录、查大股东减持公告……这才是正经事。」
他好像有点失望,大概期待我给个「黄金参数组合」。
但我只能告诉他:没有黄金参数,只有「把脏活累活干扎实」的执行力。
---写到这里,突然想起2021年那次踩坑。
当时某新能源龙头RPS连续三周95+,回测逻辑说「强势股持仓跟踪ATR止盈」,我就满仓拿住了。
结果公司发布业绩预告大幅下修,股价连跌五天,每天开盘即跌停,ATR止盈根本来不及触发,账户单周回撤12%。
那周末我把RPS回测代码删了重写,加了基本面过滤、财报预告过滤、大股东减持过滤……
改完回测年化从38%掉到28%,最大回撤从12%降到8%。
按学院派理论,策略性能变差了;但我睡得踏实多了。
因为我知道,实盘里那12%的回撤里,藏着多少个「数据很干净、参数很完美、却扛不住一条突发利空」的夜晚。
---所以,如果你也在用RPS选股,建议试着把视角转一下:
别问「RPS多少买入、多少卖出」,而要问「RPS筛出来的这票,当下结构支不支持做多?」
别信「回测年化多少」,而要问「这回测里藏了多少实盘会遇到的脏数据、拥挤止损、流动性陷阱?」
别找「最优参数」,而要建立「最小必要信息集」,那就是RPS初筛、缠论确认、基本面兜底、风控兜底,四层过滤,缺一不可。
---RPS只是个排序工具,把它当成「选股圣杯」的,大多还在回测里打转。
把它当成「漏斗入口」、配合结构确认、基本面兜底、风控收尾的人,才能在实盘里活下来。
这中间的认知跨度,不是看几篇文章、跑几遍回测就能跨过去的。
得自己在实盘里被扫几次止损、被套几次拥挤交易、被坑几次脏数据,疼得肉生疼了,才能真懂。
评论区见。
声明:本文不构成任何投资建议。市场有风险,交易需谨慎。
感谢你读到最后,记得帮我点个"赞"+"推荐",并"分享"给更多人吧!
@copyright by linjc
一个20+年的“懒人程序员”,学习缠论10多年,把复杂的交易逻辑自动化,看盘复盘省心又高效。
武夷山自有茶厂,需要高性价比的优质岩茶,欢迎联系我。


