ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI如何重构RSI指标:从固定阈值到自适应学习的量化实践

AI如何重构RSI指标:从固定阈值到自适应学习的量化实践

先说我最近在量化社区里看到的一个现象:聊RSI的人变少了,但聊AI+RSI的人变多了。以前大家讨论的是“RSI参数用14还是9”“70和30的阈值是不是太机械”,现在讨论的是“能不能让模型自己决定什么时候看RSI、看多长周期的RSI、以及RSI到底该配合哪些信息一起用”。这个转变挺有意思的——RSI这个1980年代就流行的技术指标,正在被AI重新拆开、重新组装。

这篇综述就是我过去一段时间对“AI赋能RSI”方向的系统梳理。我会先把RSI的计算逻辑和传统用法讲透,再讲它到底有什么先天缺陷值得AI介入,接着按改造深度列出五种主流技术路线,然后落到数据、特征、模型、回测和部署这些工程细节。内容适合三类人看:写量化策略发现自己总在RSI信号上亏钱的交易员,想找AI落地场景的研究者,以及准备把AI模型接进实盘系统的工程师。我不会给“包赚”的结论,但会把可复现的路数讲清楚。

1. RSI技术的基本盘:公式、参数与三种标准用法

1.1 从涨跌均值出发:RSI的计算逻辑再走一遍

RSI全称是Relative Strength Index,中文一般叫相对强弱指数。它衡量的是在一段时间内,价格上涨力度相对下跌力度的强弱。标准计算分四步:

  1. 取周期N(最常用14)内的每日收盘涨跌幅;
  2. 把上涨日的涨幅单独平均,得到平均上涨幅度AG(Average Gain);
  3. 把下跌日的跌幅单独平均,得到平均下跌幅度AL(Average Loss);
  4. 算出RS = AG / AL,然后套进公式:

RSI = 100 - 100 / (1 + RS)

这里有个细节值得注意:第一个N周期之后,很多软件用的是Wilder平滑,也就是:

AG_now = (AG_prev × (N - 1) + 今日涨幅) / N
AL_now = (AL_prev × (N - 1) + 今日跌幅) / N

而不是简单地把过去N天重新平均一次。Wilder平滑的优点是让指标连续、圆滑,不会因为某个历史极值突然滑出窗口就剧烈跳变。这个“记忆性”在后续做特征工程时很重要,因为它本质上是给时间序列引了一层递归结构。

除了标准的RSI(14),实际策略里也经常用RSI(6)、RSI(2)甚至RSI(3)来做更灵敏的短线信号。周期越短,波动越剧烈,假信号也越多。RSI的取值范围被压缩在0到100之间,但真正有区分度的是40到70这一段——跌不到0,涨不到100,大部分时间都在中间区域震荡。

1.2 三种标准用法和它们背后的市场假设

传统RSI的用法基本逃不出三类:

超买超卖。RSI高于70视为超买,行情可能回调;低于30视为超卖,行情可能反弹。实际使用中,有人在RSI(2)上把阈值放到90/10,也有人把RSI(14)的阈值改成80/20,目的都是减少钝化期的假信号。

背离。价格创了新低,但RSI没有再创新低,叫底背离,空头力量在衰竭;反过来,价格创新高但RSI没跟上,叫顶背离。背离信号比单纯超买超卖要晚,但准确率通常更高。

趋势强度确认。RSI在50上方运行,说明多头占优,这时候结合均线或趋势指标做多;RSI跌破50再结合其他信号做空。这种用法把RSI从“拐点预测器”降级成了“状态确认器”。

这三种用法隐含了一个共同假设:价格存在均值回归或至少存在可识别的不均衡状态。超买超卖假设“涨太多会跌回来”,趋势强度假设“RSI高低能划分多空主导权”。如果市场进入强单边行情,或者波动结构发生剧烈变化,这些假设就会松动——这正是AI需要介入的第一个理由。

1.3 在用AI加工RSI之前,为什么建议先补这一课

我见过太多项目直接把RSI数值丢进神经网络,效果不理想就开始加层数、换模型。问题往往不在模型,而在对RSI本身的理解太浅。比如没有考虑Wilder平滑带来的递归性,直接拿原始RSI序列做特征;比如把RSI和价格放进同一个标准化流程,导致量纲被压成一个奇怪的分布。

所以我不建议跳过基础部分直接上AI。你要先能解释清楚:RSI在你的策略语境里到底是均值回归信号,还是趋势状态变量?这个定位决定了后续的特征设计和标签设计。同一个RSI数值,在震荡市和单边市里的含义完全不同,如果模型没有足够的信息去区分市场状态,它就只能在统计上“平均化”处理,最终得到一个什么都想要、什么都做不好的策略。

2. 为什么需要AI改造RSI:五个绕不开的局限

2.1 固定周期无法适配多变的市场状态

RSI(14)意味着它天生假设过去14天的涨跌模式能代表当前状态。但市场的波动特征会变:低波动环境里,14天可能覆盖一段漫长横盘;高波动环境里,14天可能只覆盖了一个急跌急涨的短周期。同样的RSI值在后一种情况下根本没有参考价值。

你当然可以手工调周期,但手工调参的本质是对市场状态做主观分段,本身就容易滞后。AI在这里的第一个切入点是让周期或权重随波动率、成交量、市场微观结构自动变化。

2.2 阈值和规则的机械性

70和30不是数学推导出来的,是经验值。经验值的麻烦在于它隐含了“全市场、全时段都适用”的假设。实际上,不同品种的RSI分布差异很大:有的品种长期在60到80之间运行,跌到60就已经算超卖;有的品种常态在30到50之间。同一个70/30规则,在一个品种上是过滤器,在另一个品种上是噪声发生器。

AI可以做的是把“阈值”变成一个可学习的边界函数,让RSI的每个取值在不同市场环境下都被重新打分,而不是一刀切。

2.3 信号滞后:RSI本质上是历史数据的映射

RSI完全由历史价格计算而来,天然滞后。它描述的是“过去N天买卖力量对比”,而不是“未来N天会发生什么”。超买之后可以继续超买,超卖之后可以继续超卖,尤其在强趋势行情里,RSI钝化是常态。传统解决方法是加背离或者等RSI突破趋势线,但本质上还是在用历史结构推断未来,滞后性没有消除。

AI的介入思路不是说“让指标变快”,而是把RSI和其他前瞻性信息(订单流、波动率结构、文本情绪)放在一起学习,让模型尽可能从更多信息中压缩出对未来的预测增量。

2.4 信息维度单一

这是RSI最受诟病的一点:它只用价格,不看成交量、不看资金流向、不看市场情绪。价格本身是多方博弈的结果,但博弈过程、持仓变化、交易热度都体现在其他维度里。一个只有价格维度计算出来的RSI,相当于只看考试分数不看学生平时作业和出勤率。

AI改造RSI的一个重要方向就是多模态融合:把RSI从价格指标扩展为“价格+成交+资金+情绪”的综合状态特征。这一步之后,RSI的含义事实上已经变了——它不再是那个孤立的技术指标,而是整个特征体系的一部分。

2.5 钝化与摩擦:信号到收益之间还隔着成本

RSI信号就算方向判断正确,从信号到实际盈亏之间还有执行成本。频繁出现的超买超卖信号,如果不加过滤,会在震荡市里反复打脸。传统做法是提高阈值、增加确认条件,但这又会丢失真正的拐点。AI在这里的价值不是简单提高准确率,而是在预测目标中直接嵌入交易成本和收益风险比,让模型自己学会“不值得交易的时候别交易”。

3. AI改造RSI的具体技术路线:按侵入程度从浅到深

3.1 浅层改造:把RSI当成机器学习的输入特征

这是门槛最低、也最容易做错的路线。做法很简单:把RSI值、RSI变化量、RSI分位数、RSI与其移动均线的偏离度等构造为特征,交给XGBoost、LightGBM或随机森林,去预测未来方向或收益率。

这里有个实用的构造技巧:不要只用RSI原始值,要构造它的“情境化”特征。比如RSI在近250天内的历史分位数,比RSI原始值更能体现当前相对位置;RSI的一阶差分比RSI水平值更能反映短期动量;RSI和价格指数、ATR的比值,可以消除部分波动率变化带来的影响。

这种路线的优点是迭代快、可解释性强、容易嵌入现有策略。缺点是它对RSI本身没有做任何结构性改进,模型能挖出多少信息完全取决于特征工程的质量。如果样本内外表现差异巨大,先怀疑特征构造,再怀疑模型。

3.2 中层改造:自适应周期与市场状态识别

这一层开始动RSI的参数了。常见做法是先用隐马尔可夫模型(HMM)或聚类算法把市场切成几个状态,比如低波动震荡、高波动单边、危机模式,然后在不同状态下使用不同的RSI周期和阈值。

我自己的实践里,比较稳的方案是先计算滚动波动率、滚动成交量和趋势强度,作为聚类特征,把市场分为三个簇。每个簇内单独做RSI周期搜索,把“簇标签+最优周期”拼成一个复合特征,再交给下游分类器。这种方案比单用固定RSI(14)在样本外有一定提升,但提升幅度取决于状态划分的稳定性——如果状态标签频繁跳变,策略反而会因为换挡频繁而付出额外交易成本。

3.3 深度改造:用监督学习直接预测未来收益

这是目前论文和开源项目里最主流的路线,把RSI从“决策指标”变成“预测任务的输入”。典型结构是:

  • 输入:一段历史窗口内的OHLCV + RSI + 若干衍生特征;
  • 标签:未来h个周期的收益方向、收益率或风险调整收益;
  • 模型:LSTM、GRU、Transformer或它们与CNN的混合结构;
  • 输出:预测值,再转化为交易头寸。

这条路线要特别注意三点。第一,RSI只是众多输入之一,不要指望它单独扛起预测能力,真正有效的往往是RSI与成交量、波动率特征的交互项;第二,REINFORCE式的端到端训练很容易过拟合,不如先用一个强分类器做基线;第三,预测目标不要用“涨跌方向”这种二分类标签,更建议用“剔除交易成本后的风险调整收益”,否则模型会学会在高波动区域频繁预测反转,实际扣掉滑点根本不赚钱。

3.4 系统性改造:强化学习与多目标优化

强化学习路线把RSI完全放进交易环境里。智能体的状态包含RSI、持仓、账户权益、市场波动信息,动作是加仓、减仓、持有,奖励是扣除成本后的收益或夏普比率。RSI在这里不再单独给出买卖信号,而是和所有状态一起被价值网络或策略网络使用。

这个方向听起来高级,实际落地最困难。问题有三个:奖励信号稀疏(单笔交易周期长)、环境不平稳(市场结构在变,环境本身不是固定概率分布)、评估困难(同一条策略在相似市场里有巨大方差)。我的建议是,不要一上来就跑端到端强化学习,而是先用规则策略生成初始数据,用离线强化学习做策略提升,这样至少能保证训练过程不会因为随机探索而崩坏。

3.5 外延改造:多模态融合与Agent化

这是这两年才冒出来的方向。RSI不再单独存在,而是和其他模态数据一起进入模型——价格图像(K线图)、新闻情绪向量、资金流数据、甚至是宏观事件的文本嵌入。RSI作为其中一个特征通道,与这些模态做交叉注意力或特征拼接。

同时,“AI Agent”也开始出现在交易系统里。Agent负责拆解任务:先判断当前市场状态,再决定是否参考RSI信号,然后调取模型预测结果分配仓位,最后执行订单并检查异常。RSI在这个架构里不是被替代,而是被“调度”和“上下文化”了。这个方向工程复杂度高,但逻辑最接近真实交易员的工作方式——不是死盯一个指标,而是综合所有信息后做判断。

4. 实验设计中的关键决策:标签、特征与数据切分

4.1 标签设计:预测目标决定了模型的性格

标签设计是AI+RSI项目里最容易出问题的一步。你是不是直接用了“未来涨还是跌”作为二分类标签?如果是,大概率会训练出一个倾向预测“涨幅不大”的保守模型,因为它无法区分“小涨”和“大涨”。

我更推荐三种标签:

  • 未来h期收益率的连续值(回归任务);
  • 排序标签:未来收益在样本池中的横截面分位(learning-to-rank思路);
  • 剔除成本后的风险调整收益,比如未来h期的收益减去固定交易成本和波动惩罚。

第三种在我的实验里最贴合实盘,因为它让模型在训练阶段就知道“没有空间的波动不值得参与”。注意时间窗h不要拍脑袋定,要结合品种的持仓周期去设。日内策略可以取30分钟或60分钟,波段策略取5到20日。

4.2 特征工程:RSI特征组与其他特征组的配合

RSI特征组可以围绕四个维度展开:

  • 水平:当前RSI值、RSI(6)、RSI(14)、RSI(28);
  • 变化:RSI的一阶差分、加速度;
  • 分布:RSI在250日窗口内的百分位排名、过去N日RSI最大值和最小值的距离;
  • 交互:RSI与价格动量、成交量、波动率、持仓量的比值或差。

交互特征往往比RSI本身更重要。举例来说,RSI(14)小于30且同时满足“成交量放大到过去20日均量的1.5倍”和“波动率处于近60日低位”,这个组合在统计上比单纯低RSI值有更高的反弹概率。这些交互不是模型自动发现的,而是先靠经验构造出来喂给模型的。

4.3 数据切分:从源头杜绝未来函数

时间序列预测最怕未来的信息泄漏进训练数据。传统K折交叉验证在时间序列上是危险的——训练集和验证集如果混在不同的时间段,相当于让模型看到了“未来样本分布”,测试分数会被严重高估。

正确的做法是Walk-Forward切分:

  1. 按时间顺序把数据切成连续段;
  2. 用前一段训练,中间一段做模型选择,最后一段做样本外测试;
  3. 每过一段时间滚动一次窗口,而不是固定一个训练集。

在特征工程层面也有两种隐蔽的未来函数要防:一是z-score归一化用了全局均值和标准差,应该只用训练窗口内的统计量;二是标签生成时不小心用了未来K线数据,比如用当日收盘价触发信号、次日开盘价成交,看起来没错,但如果你在特征生成时引用了次日数据,就泄漏了。

4.4 评估指标:不要只盯准确率

分类准确率在交易场景里几乎没有任何意义,因为市场方向本身不平衡,且正确方向的幅度差异巨大。我更建议看这些指标:

  • IC(信息系数):预测值与未来收益的Spearman相关系数,稳定高于0.03才有实用价值;
  • 分层回测:把预测值分成5组或10组,看多空组合的单调性;
  • 扣费后的夏普比率和最大回撤;
  • 不同市场状态下的分组表现:单边上涨、单边下跌、震荡市分别单独评估。

一个预测准确率58%但IC只有0.01的模型,和准确率52%但IC稳定在0.05的模型,在实际交易中后者的价值远高于前者。

5. 模型对照与实测结果:同一条数据下的基线比较

5.1 先跑规则基线:没有比较就没有伤害

任何AI模型都应该先和传统规则型RSI策略做对照。规则基线的定义很简单:固定RSI(14),采用70/30阈值和背离过滤,叠加一个简单的移动止损。我跑下来的经验是,AI模型如果连这种基线都打不过,问题大概率不是模型不够好,而是数据或特征有问题。

把规则基线结果写进实验记录里非常有用。它能帮你判断收益到底来自模型结构,还是来自特征里新增的波动率、成交量信息。

5.2 主流模型对比:XGBoost、LSTM与Transformer

我在同一份沪深300指数增强类数据上做过一轮比较,特征相同、标签相同、时间段相同,结果的大致规律如下:

模型输入类型验证IC样本外年化最大回撤训练时长
规则型RSI(14)单一指标0.0124.2%18%0
XGBoost + RSI特征组表格特征0.0379.8%12%5分钟
LSTM + RSI特征组序列特征0.0328.3%14%40分钟
Transformer + 多模态特征序列+文本0.04111.6%11%2小时

这说明三件事:一是只加AI不大幅提升效果,提升更多来自特征维度扩展;二是在中小体量数据上,树模型往往就够用,深度模型的增量有限;三是模型越复杂,对特征工程的要求越高,如果你给Transformer喂的还是那几个简单特征,效果会被XGBoost反超。

5.3 集成与Stacking的边际收益

把不同模型的结果做集成,通常能获得1-2个百分点的稳定性提升。常见做法是把XGBoost的概率输出、LSTM的预测值、规则RSI信号强度一起喂给一个逻辑回归,让元模型学一个加权组合。

但要注意,集成不能掩盖特征工程和标签设计的根本问题。如果每个子模型都在同一个错误方向上过拟合,集成只是平均了错误。我会在集成之前先确认各个子模型的预测相关性,相关系数低于0.7的集成才有价值。

5.4 一份实验记录模板

每次实验至少记录:数据集、时间段、特征清单、标签定义、模型超参数、验证IC、样本外年化、最大回撤、扣费前后收益差异、交易次数。没有这些信息,你根本不知道一次“策略变好了”是因为模型升级还是因为运气。

6. 回测、部署与监控:从论文到实盘的最后一公里

6.1 回测细节:手续费、滑点、成交假设

很多AI+RSI项目在论文里展示漂亮的净值曲线,实盘一跑就变样。罪魁祸首是回测假设过于理想。我给所有回测定的硬规则:

  • 交易成本双边至少万分之三;
  • 滑点按1-2个tick设置,并在敏感度分析里测试5个tick的极端情况;
  • 信号在收盘后计算,下一个交易日的开盘价成交,不允许用当日收盘价在同一根K线上成交;
  • 涨跌停、停牌、低流动性时段直接跳过,不参与回测。

这一套规则执行下来,原本看似稳健的年化20%策略往往掉到10%以下。能在这样严苛假设下还赚钱的模型,才值得继续测试。

6.2 Walk-Forward滚动回测优于一次性回测

固定训练集和测试集的回测结果参考价值有限,因为市场结构在变,模型的有效期也在变。更好的方式是滚动回测:每30个交易日重新训练一次模型,用最近20个交易日做验证,逐步向前滚动。这样得到的样本外收益曲线,才更接近实盘。

我在跑这种滚动测试时发现,一个模型的IC会随时间明显波动。有的时间段IC在0.06以上,有的时间段只有0.01甚至负值。如果负值阶段恰好与高波动期重合,说明模型在这个市场状态下是失效的,需要引入状态开关来保护。

6.3 部署架构:从研究到生产的路径

AI+RSI策略的部署架构,一般不会太重。分成三层就够了:

  • 数据层:定时脚本从行情接口拉取日线或分钟线,存入数据库,同时计算RSI特征表;
  • 模型层:训练脚本按计划重训练,将模型序列化后放到模型仓库,推理服务读取模型实时生成预测;
  • 交易层:根据预测和风控规则生成目标仓位,通过交易接口下单,同时记录订单、成交和持仓。

如果使用Agent架构,可以在交易层加一个“调度模块”来串管线:判断市场状态是否适合交易、决定是否调用RSI过滤逻辑、把模型预测结果转成仓位建议。这里的关键是Agent不能随便改变下单逻辑,它只能决定“要不要启用某套策略”,最终的风险检查还是交给独立的规则引擎。

6.4 监控与重训练:模型漂移是必然的

市场结构在变,模型必然漂移。我建议至少监控三类指标:特征分布(RSI均值、波动率、成交量均值是否偏离训练期)、预测分布(模型给出的预测值是否越来越极端或越来越平坦)、业绩指标(滚动IC、回撤、交易次数)。任何一个指标超过阈值,都应该触发重训练或停止交易。

重训练频率不用太高。过度频繁的重训练会把噪声当成信号学进去,导致策略变得更加不稳定。我的经验是:低频策略(日线级别)每两周到一个月重训练一次,中高频策略(分钟级别)每天或每周做增量更新。重训练之后要保留上一版模型,做一段时间的A/B对比,不要直接切换。

7. 我总结的七条AI+RSI实操经验

第一,规则RSI不是要被“消灭”的,而是要被“结构化”的。先把传统信号的结果记录下来,再慢慢叠加AI改造,否则你连自己到底改进了什么都说不清。

第二,特征工程通常比模型重要。同一组RSI数据,构造了上下文特征之后,喂给朴素逻辑回归的效果就能超过直接喂给复杂Transformer的效果。

第三,不要在二分类“涨跌”上死磕。改成连续收益预测、排序任务或者考虑成本的定制目标,模型的实用价值会高很多。

第四,样本外测试必须跨越多轮牛熊。只测一个上涨波段,AI模型几乎必然过拟合。至少要覆盖震荡、单边、危机式下跌三种区间。

第五,交易成本是不可省略的过滤器。扣完成本之后还能存活,模型才进入候选名单。

第六,模型越复杂,越要警惕解释性丧失。如果你完全说不清模型为什么在某个时间段持续亏损,这本身就是风险信号。

第七,AI+RSI的意义不在于“替代人工看指标”,而在于把“什么时候看什么指标、看完之后怎么决策”这个隐式的经验,变成显式的、可回测的、可迭代的系统工程。

我个人在这些项目里体会最深的一点,是耐心。RSI本身是一个很“简单”的指标,把它和AI结合的过程,最难的从来不是跑通某个模型,而是愿意花大量时间做数据清洗、特征构造和严谨回测。这些脏活累活,决定了模型在实盘里到底是提款机还是绞肉机。如果你正打算做类似的方向,先从一份严格的可复现实验记录开始,不要急着看净值曲线。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进