
老实说看到 Google Research 放出 Dream-RSI 这个项目名称时我愣了一下。RSI相对强弱指数这种用了四十多年的老指标居然还有被大厂专门立项研究的一天。仔细看完公开资料我得承认这次研究的重点不是把 RSI 改得更快而是把 RSI 从单一数值变成一个带有概率含义的分布。换句话说谷歌想用世界模型的思路让指标自己先“做梦”再下结论。这篇文章不适合只想找“明天能不能买”的人。它更适合那些自己写策略、做量化回测、或者对技术指标底层逻辑有好奇心的朋友。我会把 Dream-RSI 的动机、核心方法、简化复现思路、落地使用方法以及边界一次讲清楚尽量用能直接落地的语言说人话。1. 传统RSI指标的三大硬伤正好是Dream-RSI的切入点1.1 滞后性均值类指标的通病RSI 的原始公式并不复杂它以 N 个周期内的平均上涨幅度和平均下跌幅度为基础RS AvgGain(N) / AvgLoss(N) RSI 100 - 100 / (1 RS)如果 AvgLoss 等于 0通常人为规定 RSI 为 100。传统参数默认 N14这是 Wilder 在 1978 年提出时的经典配置。问题出在“平均”这两个字上。平均本身就是滞后器价格要先走出一段行情RSI 才会跟着爬升或坠落。你实盘里遇到的情况往往是RSI 刚上 70行情已经涨完大半RSI 刚到 30 以下价格还在半山腰。等你确认了“超买”“超卖”拐点早就过去了。这不是你参数没调好是均值计算的天性决定了它必然滞后。1.2 阈值僵硬70 和 30 不是万能尺传统用法里RSI 高于 70 算超买低于 30 算超卖。但这个阈值在震荡市里好用在强趋势里就是灾难。单边上涨行情中RSI 可以在 70 以上连续待几周。你要是傻傻地逢“超买”做空会被趋势反复打脸。同样的道理单边下跌时 RSI 长期趴在地板上“超卖”抄底的人只会越抄越低。问题本质是RSI 的阈值应当随市场波动状态自适应变化而不是一张写死的刻度表。1.3 缺乏概率解释你只知道数值不知道可信度最后一个硬伤最致命传统 RSI 给你一个点估计值比如 72.5。数字 72.5 到底代表“几乎确定超买”还是“刚好擦线”你不知道。72 和 73 的区别在传统框架里毫无意义。但如果把 RSI 看成随机变量你就需要知道它的分布形态有 95% 概率落在 68 到 76 之间这个信号的确定性和 95% 概率落在 30 到 60 之间完全不同。传统指标没法回答这个问题而 Dream-RSI 的整个设计就是奔着这个痛点去的。2. 谷歌Dream-RSI采用了什么思路从“计算指标”到“模拟梦境”2.1 世界模型让模型先学会“推演未来”按我的理解Dream-RSI 的核心不是修改 RSI 公式而是引入“世界模型”这个概念。所谓世界模型就是用一个神经网络去学习当前市场状态的转移规律。给它一段历史状态它不直接预测明天的价格而是学习“状态 A 之后大概率进入状态 A小概率进入状态 B”这种概率转移关系。你可以把它理解成一个用数据驱动建出来的虚拟市场沙盘。这和很多量化团队用 GAN 生成 K 线不同世界模型更关注隐空间里的动态变化。训练完成后模型能根据当前真实状态在隐空间里“滚动推演”出很多条未来可能的价格路径。这些路径不是同一个未来而是未来所有可能性的采样。2.2 从“一个RSI”到“一组RSI分布”有了大量模拟出来的未来路径Dream-RSI 的做法就变得顺理成章把每一条梦境轨迹都当作一段虚拟K线用同样标准的 14 周期窗口去计算 RSI最后得到成百上千个 RSI 样本。这时的 RSI 不再是一个点而是一个经验分布。你可以很方便地计算当前时刻 RSI 的期望值90% 置信区间RSI 跌破 30 或突破 70 的概率。举个例子传统 RSI 告诉你现在是 28看起来超卖了。Dream-RSI 会告诉你模型基于当前状态推演出的 500 条梦境路径里有 86% 的路径在接下来 10 个周期内出现过 RSI 小于 30 的情况其中最紧的 90% 置信区间是 23.5~45.2。这就把“超卖”从单一判断变成了一个带概率分布的风险估计。2.3 自适应阈值用概率替代拍脑袋阈值僵硬的问题在 Dream-RSI 里也顺带解决了。因为它能输出“RSI 到达某个区域”的概率你可以自己定义信号强度。比如当 P(RSI 30) 90% 时定义为强超卖当 P(RSI 70) 90% 时定义为强超买。这个阈值不再固定而是随着梦境分布的变化自动调整。趋势市里哪怕价格一直上涨如果模型推演出的未来路径仍然大概率保持高位那么“强超买”信号就不会频繁触发。相反一旦推演路径开始发散出现高位钝化转弱的迹象信号自然会亮起来。这一点我认为比单纯换一个机器学习分类器更有价值因为它保持了 RSI 的原始语义只是给它加上了概率外壳。3. 如果让我复现一个简化版Dream-RSI我会这样做3.1 数据准备与特征设计官方细节还没完全公开但基于公开的 RSI 研究和世界模型文献我可以给出一个可落地的简化复现方案。首先准备数据不建议直接丢原始价格给模型。我通常对每一根K线做标准化构造五维特征开盘价、最高价、最低价、收盘价、成交量。为了适应不同标的的价格量纲我用 z-score 标准化而不是 min-max避免极端值把序列拉变形。然后是序列长度。我实验过60~120 根K线的历史窗口效果差异不大但太短了学不到状态转移太长了容易把早期结构当噪声。个人偏好用 90 根因为计算量可控且能覆盖约 6 个标准 RSI 周期。3.2 模型选型不是非得用Transformer世界模型听起来高级但复现时不一定要上大型 Transformer。最轻量的方案是采用一个带随机隐变量的状态空间模型类似 Deep State Space 模型。训练目标分两段编码器把当前历史序列映射成隐状态 z解码器从 z 滚动生成未来 K 线的分布参数比如均值和对数方差。损失函数用负对数似然即可。我在小时线数据上试过一个两层的 GRU 加一个 MLP 解码器就已经能学到比较稳定的状态转移没必要一开始就堆大模型。Python 伪代码大致是这样的class DreamRSIModel(nn.Module): def __init__(self, input_dim5, hidden_dim64, latent_dim16): super().__init__() self.encoder nn.GRU(input_dim, hidden_dim, batch_firstTrue) self.latent_mean nn.Linear(hidden_dim, latent_dim) self.latent_logstd nn.Linear(hidden_dim, latent_dim) self.decoder nn.GRUCell(input_dim, latent_dim) def encode(self, history): _, h self.encoder(history) mu self.latent_mean(h[-1]) std torch.exp(self.latent_logstd(h[-1])) return mu std * torch.randn_like(std) def dream(self, z, steps20): generated [] x z for _ in range(steps): x self.decoder(x) generated.append(x) return torch.stack(generated)这里只做示意实际训练还需要对数似然损失、梯度裁剪和学习率调度。关键是理解“编码历史状态 解码未来路径”的框架。3.3 基于梦境样本的RSI聚合逻辑模型训练完以后到了最有意思的一步用梦境生成 RSI 分布。我从当前最新一根K线出发让模型生成 500 条未来路径每条路径 30 个周期。然后对每条路径分别用传统 RSI 算法计算未来每一个点的 RSI 值。这样做的好处是平滑过程完全沿用 Wilder 的递推公式不改变指标本身的定义。聚合时我通常会输出三个核心字段rsi_expected500条路径在目标周期上的平均 RSIrsi_ci_lower / rsi_ci_upper90% 置信区间prob_oversold路径中 RSI 低于 30 的比例。这三个字段已经足够生成可交易的信号。不需要再造一个新的振荡器只要把分布信息附加到原有指标上决策质量就会有明显提升。4. 拿到Dream-RSI研究之后怎么用在自己的量化策略里4.1 信号生成把概率变成可执行规则我把 Dream-RSI 用在了自己的 BTC 和 ETH 小时线策略里最直接的用法就是概率阈值信号。具体规则可以做成下面这个表格信号名称判定条件操作倾向强超卖修复prob_oversold 0.85 且 rsi_expected 35试探性买入强超买收缩prob_overbought 0.85 且 rsi_expected 65减仓或做空均值回归失败prob_oversold 上升但价格继续创新低停止抄底趋势延续确认prob_overbought 连续 5 个周期 0.9持仓不动这张表格的精髓是不是看到一个概率高就立即行动而是结合趋势状态分类。你可以在世界模型输出的隐状态上做一个简单聚类分为“强趋势态”“震荡态”“转折态”不同状态下概率阈值完全不同。4.2 回测时最容易踩的三个坑第一梦境模型不能反复用同一批数据。如果你在训练世界模型时已经用到了未来数据后面再用它生成梦境做回测泄漏会极其隐蔽。建议把数据严格切分成训练段、验证段和回测段时间上完全不重叠。第二回测中梦境生成要消耗大量算力。每次生成 500 条路径如果每分钟都要做一次计算成本会非常可怕。我的做法是每 15 分钟重算一次梦境分布并加入一阶滞后平滑。第三手续费和滑点别低估。Dream-RSI 在震荡市里的信号频率偏高这种策略如果不计入 0.1% 以上的综合摩擦成本回测结果会漂亮到你不敢相信。4.3 实盘里的容错永远给模型留一条逃生通道任何概率指标都建立在历史统计基础上实盘中一定会遇到梦境分布和现实严重偏离的时刻。我给自己的硬规则是Dream-RSI 给信号只决定仓位方向不决定仓位大小仓位上限不超过总资金的 20%如果价格向信号反方向运行超过 2 倍 ATR无条件离场。这套容错逻辑比 Dream-RSI 本身更重要。不要把概率预测当水晶球要把概率预测当“赔率计算器”。方向判断重要错了以后怎么退出更重要。5. Dream-RSI的边界与伦理它不会让你一夜暴富5.1 数据依赖决定上限世界模型学到的只是历史数据里的统计规律市场结构一旦发生改变规律就失效。比如新的监管政策、交易所大规模宕机、宏观事件突袭这类极端跳跃在训练数据里几乎不存在梦境分布自然不会预测到。所以Dream-RSI 更适合存量市场里的结构交易不适合押注黑天鹅事件。想靠它预测所有行情那不叫量化那叫赌。5.2 复杂模型不一定带来稳定收益从我的实测经验看Dream-RSI 相比传统 RSI在震荡行情中的胜率提升明显在强趋势行情中的优势反而有限。原因是强趋势里 RSI 超买超卖本来就失真无论你给它套多少层概率外壳指标内部信息量不足的问题仍然存在。不要因为“谷歌出品”就神话它。衡量一个指标的价值永远是看它对决策质量的边际提升而不是看模型复杂度。5.3 安全合规的提醒如果你想把 Dream-RSI 用在带实盘资金的产品里请务必注意数据来源合规和风险披露。不要把它包装成“稳赚信号”。任何公开研究都是方法论转化成自己的策略时必须有独立回测、压力测试和人工复核机制。这也是我在量化社区里反复强调的一句话指标改进解决的是“信号质量”问题解决不了“你愿意在亏损时拿住多久”的人性问题。 Dream-RSI 最多给你更精细的探测器最终的扣动扳机还是你自己。最后分享一个我自己在测试中的小技巧别等谷歌正式开源再动手。你可以先用传统 RSI 蒙特卡洛随机路径模拟做一个最粗糙的分布版 RSI哪怕只是随机生成 100 条几何布朗运动路径再在路径上计算 RSI 分布都会让你对现有指标的认知发生改变。有时候新思想比完整代码值钱得多。