当前位置: 首页 > news >正文

当 Alpha 开始影响价格:SEER 如何用符号回归拆出非线性市场冲击

有一个问题,很多做回测的人平时不太愿意深想:

如果一个信号真的被拿去交易,它还只是一个“预测变量”吗?

在研究阶段,Alpha 看起来很干净。它读历史行情,输出信号,然后我们拿下一期收益去验证它。

但一旦进入执行层,信号就不再只是旁观者了。它会触发下单、成交、冲击价格,最后又反过来改变它原本要预测的收益。

这就是交易信号的反身性。

这篇文章里提到的 SEER(Self-Equation Extractor & Recognizer),重点不在 Alpha 挖掘,而在一个更底层的问题:

当信号本身开始影响价格时,我们能不能把这种反馈关系写成一条可解释的公式?

这个问题比“模型准不准”更靠近实盘。

因为策略规模、换手率、流动性、拥挤度一旦上来,信号和收益之间就不再是单向预测,而是一套反馈系统。你不能只问信号有没有预测力,还要问:这个信号被交易以后,会不会把自己要预测的东西改掉。

1. 为什么直接回归不靠谱

最直觉的做法是:

future_return = a * signal + error

看起来很简单,拿信号回归下一期收益,系数a就是反馈强度。

但这里有个硬伤。

信号本身是从市场状态里算出来的,比如价格、成交量、波动率、RSI、MACD、布林带位置等。下一期收益也受这些市场状态影响。

也就是说:

market_state -> signal market_state -> future_return signal -> future_return ?

我们真正想识别的是第三条箭头,但观测数据里前两条箭头混在一起。

所以直接回归,很容易把“共同市场状态”造成的相关性,误判成“信号自己的市场冲击”。

这就是原文说的因果识别难题。

传统 OLS、Lasso 还有另一个问题:它们偏线性。而真实交易反馈通常很难这么规整。

可能是平方项,可能是正弦结构,可能是两个信号的乘积项,也可能只在信号为正时才触发。

随机森林、深度学习能拟合一部分非线性,但会变成黑盒。策略研究里,黑盒分数不够用。你要做容量、冲击成本、风控、信号衰减,最好拿到的是一条能审查的公式。

这就是 SEER 选择符号回归的原因。

2. SEER 的核心思路:先造一个有答案的市场

SEER 没有直接在真实市场里硬找因果。

它先搭了一个可控实验:

真实 BTC 小时收益率 + 人为注入的反馈公式 = 带有已知非线性冲击的合成收益率

这样做有两个好处。

第一,市场噪声是真的。
第二,反馈公式是已知的。

也就是说,模型会在一个有“标准答案”的市场噪声环境里接受测试,而不是对着真实市场凭感觉讲故事。

为了防止事后调参,反馈公式的系数在拟合前用 SHA-256 哈希锁定。先把答案封起来,再让模型去找。

这个设计很朴素,但很关键。

量化研究真正麻烦的地方,是你很难确定自己解释的是规律还是噪声。SEER 先创造地面真值,再测试公式恢复能力,这一点比直接拿真实数据硬讲因果更稳。

3. SEER 管线:六步走

原文的技术路线可以压缩成下面这张结构图。

Binance 小时级行情 | v 滚动特征工程 RSI / MACD / 布林带位置 / 24h 实现波动率 / 成交量比率 | v MLP 信号发生器 两层隐藏层:64 -> 32 -> scalar signal | v 受控反馈注入 真实 BTC 小时收益 + f(signal) | v PySR 符号回归 + - * square cube sin cos exp | v 归因检查 + 信号衰减 消融 / 特征重要性 / 条件独立性

1)特征工程与输入准备

数据来自 Binance 小时级数据。

外生特征包括:

1. RSI

2. MACD

3. 布林带位置

4. 24 小时实现波动率

5. 成交量比率

所有特征都在滚动窗口上标准化,避免把未来信息泄漏进历史样本。

2)自身模型构建

用一个两层隐藏层的 MLP 生成标量信号:

features_t -> MLP(64, 32) -> signal_t

这里的关键是:MLP 在反馈注入前训练完成。

也就是说,信号只来自外生市场状态,不提前知道后面要注入的反馈公式。

3)受控反馈注入

把真实 BTC 小时对数收益作为噪声底座,再叠加人工设计的反馈项:

r_synthetic(t+1) = r_btc(t+1) + f(signal_t)

其中f(signal_t)可以是线性、二次、正弦、乘积或非对称结构。

4)PySR 符号回归

PySR 的任务是找公式,而不是只给一个预测分数。

候选算子包括:

+, -, *, square, cube, sin, cos, exp

训练时使用 70/30 时间序列切分,不随机打乱,最后选择测试集均方误差最小、复杂度可接受的表达式。

一个简化版伪代码大概是:

features = rolling_standardize(raw_features) signal = mlp.predict(features) r_synthetic = btc_hourly_return + injected_feedback(signal) equation = pysr( x=signal, y=r_synthetic, operators=["+", "-", "*", "square", "cube", "sin", "cos", "exp"], complexity_penalty=True, time_split=(0.7, 0.3) )

5)归因与混杂因子筛选

这一部分很重要。

很多模型的问题在于太容易找到“看似有用”的关系。高相关特征一多,模型很容易把“影子变量”当成因果。

SEER 用了三道防线:

1.消融测试:把信号打乱,看拟合优度下降多少。

2.特征重要性:看恢复公式到底依赖哪些变量。

3.条件独立性筛查:对高相关混杂变量做偏相关检验,防止伪归因。

6)自适应信号衰减

如果估计出的反馈项过强,算法会自动缩小信号:

if abs(feedback(signal)) > threshold: signal = signal * shrink_ratio

这一步的含义很实在:

如果信号强到开始明显冲击市场,就不要继续无脑放大。
有些 Alpha 本来存在,但规模一上来,就会被自己的交易行为吃掉。

4. 六个场景:它到底能不能找回公式

作者用 2022-2024 年历史数据,大约 17500 个小时样本,设计了六组实验,并和 OLS、Lasso、随机森林做对比。

这里建议按“设定 / 结果 / 启发”来看。

场景 1:线性反馈与负控制

设定:
信号和收益之间是简单线性关系。

结果:
SEER 成功恢复线性公式,相对误差约 0.13%,测试集表现约 0.998。

更关键的是负控制:不注入任何人工反馈,直接在真实 BTC 数据上跑 SEER,估计系数处于噪声水平。

启发:
这说明它不是在真实噪声里随便编公式。一个方法如果在负控制里也能挖出漂亮结果,反而要警惕。

场景 2:二次非线性反馈

设定:
信号平方项影响价格:

feedback = a * signal²

结果:
OLS 和 Lasso 测试集表现为负,甚至不如均值模型。随机森林可以拟合到 0.871,但不给解析式。SEER 恢复出二次结构,相对误差约 0.97%,测试集表现约 0.983。

启发:
对称的二次冲击会天然绕开线性模型。这个场景说明,识别市场反馈时,非线性建模是基本要求。

场景 3:周期性正弦反馈

设定:
反馈呈正弦波结构:

feedback = a * sin(signal)

结果:
OLS 和 Lasso 表现只有 0.012 和 0.011。SEER 在浮点误差范围内恢复正弦公式,测试集表现约 0.9998。

启发:
如果反馈本身是周期或波动结构,线性回归几乎没有解释力。符号回归的优势是能直接恢复函数形态。

场景 4:隐式乘积交互

设定:
两个信号的乘积项影响收益:

feedback = a * signal_1 * signal_2

结果:
OLS 表现约 0.007。SEER 恢复乘积关系,相对误差约 0.25%,测试集表现约 0.990。

启发:
这类结构很像真实策略里的 regime 条件:单独看一个因子不明显,但和另一个状态变量叠加后才有效。

场景 5:非对称反馈

设定:
只有信号大于零时产生影响,小于零时不产生反馈,类似 ReLU:

feedback = a * max(signal, 0)

结果:
SEER 恢复单侧结构,相对误差约 1.72%,测试集表现约 0.971。OLS 和 Lasso 只有约 0.04。

启发:
实盘冲击经常是非对称的。买入冲击、卖出冲击、流动性约束、做空限制,很多时候不是镜像关系。

场景 6:混杂因子处理

设定:
加入一个与真实信号高度相关、但本身不直接改变价格的干扰变量。

结果:
SEER 通过偏相关条件独立性检验,判断该变量在给定真实信号后与收益独立,没有把它误判为真正原因。

启发:
这比单纯提高拟合分数更重要。策略研究里真正危险的情况,是模型看起来能工作,但理由是错的。

5. 实验结果图

原文有一张汇总图,用来展示各场景下不同模型的测试集表现。

各模型在六类反馈场景下的测试集表现

这张图可以直接看出两个差异:

1. 线性模型在非线性反馈面前会快速失效。

2. 随机森林虽然能拟合部分场景,但缺少可审查的显式公式。

这也是 SEER 的定位:它不只是追求测试集分数,而是追求公式级恢复。

6. 信噪比探测边界:这部分最接近实盘

如果只看前面的六个场景,很容易觉得 SEER 很强。

但真实市场里更常见的情况是:反馈结构未必复杂,反馈强度却太弱。

弱到被市场噪声盖住。

作者固定小时级收益波动率,用 0.003 代表真实市场波动,然后逐步降低反馈强度,测试 SEER 的探测边界。

不同信噪比下的公式恢复能力

结果很现实。

在可探测边界附近,系数相对误差仍能维持在约 0.30%。但当反馈继续减弱,测试集表现会迅速掉到 0.03 以下,误差明显扩大。

这说明 SEER 不是魔法。

它能恢复足够强的非线性反馈,但当冲击信号低于市场噪声底线时,它也只能承认看不见。

这点反而让我更相信这个框架。

很多模型真正危险的地方,是不知道自己什么时候该闭嘴。

7. 这套东西能拿来做什么

不要把 SEER 理解成一个可以直接接到实盘里的自动调仓器。

真实市场没有预先封存的反馈公式,也没有干净的地面真值。候选算子空间也不可能覆盖所有真实市场结构。

它更适合做研究审查。

1)策略容量和市场冲击仿真

在真实噪声背景下,注入不同形态和强度的反馈,观察信号什么时候开始自我污染。

2)黑盒模型白盒化

如果一个黑盒模型说“这里有非线性关系”,SEER 可以进一步追问:这条关系能不能写成公式?公式看起来像不像一个合理的交易机制?

3)信号衰减机制

当反馈强度超过阈值时,自动缩小信号,避免 Alpha 被自己的交易行为吃掉。

这点对高换手、高拥挤、容量敏感的策略尤其重要。

很多策略有 Alpha,但规模一上来,交易行为就开始反噬信号。

8. 最后

SEER 这篇文章最有价值的地方,并不在于用了 MLP 或 PySR。

而是它把“交易信号反过来影响价格”这个很难直接测的问题,拆成了一个可验证实验:

生成信号 -> 注入已知反馈 -> 符号回归恢复公式 -> 消融与条件独立性检查归因 -> 测试信噪比边界

这套流程给量化研究一个很重要的提醒:

漂亮回测不难。
黑盒拟合也不难。
难的是你能不能解释清楚,信号进入市场以后,会不会改变自己要预测的东西。

如果能解释,就可以讨论容量、冲击、衰减和风控。
如果解释不了,最好别急着把它放大。

复现代码和更完整的实验细节,我会放在析境科技AI量化平台。

SeekGain 析境科技是国内首个个人AI量化平台,也是连接量化研究者、AI 开发者和投资实践者的高端社群。我们聚焦机器学习在量化投资中的前沿应用,持续分享论文复现、模型代码、核心 Alpha 因子、策略研究框架和 AI 量化工具链。

核心价值:

1. 顶级圈层:连接头部机构从业者、知名私募创始人、机构量化负责人、基金经理、券商金工分析师、GitHub 高星项目作者及前沿研究者。

2. 每日高价值内容:持续更新前沿论文、研报复现、模型代码、核心 Alpha 因子和可落地的量化研究案例。

3. AI量化工具链:围绕因子挖掘、策略复现、回测验证和量化 Agent,帮助个人研究者把想法更快落到可验证的策略研究里。

加入 SeekGain 析境科技,和真正做研究的人一起,把 AI 量化从概念推进到可复现、可验证、可迭代。

http://www.jsqmd.com/news/1092534/

相关文章:

  • PyTorch 实战联邦学习FedAvg:从零构建到隐私保护模型聚合
  • 如何高效管理演示时间:智能PPT计时器的完整指南
  • Git 快速上手指南:半小时掌握日常开发必备命令
  • RSA非对称加密在登录模块的实战应用:从原理到前后端完整实现
  • H3C IPv6实战:从手工配置到无状态自动获取
  • 如何在Windows上为所有游戏添加Steam控制器全局支持?GlosSI完整指南
  • Caffeine是否为分布式缓存
  • nlohmann/json:现代C++ JSON处理的终极完整指南
  • 如何下载Java 26 的下载入口:
  • LitCAD:C开发的免费开源二维CAD软件完整入门指南
  • 破解Unity手游黑盒:Il2CppDumper如何让IL2CPP逆向分析不再神秘
  • WorkshopDL:终极Steam创意工坊下载器 - 轻松获取海量游戏模组
  • 番茄小说下载器:三步完成小说永久保存的终极解决方案
  • 掌握Unity游戏逆向分析:5个实战技巧解密Il2Cpp二进制解析
  • 孪生网络(Siamese Network):从“对比”到“识别”的核心引擎
  • Hermes Edu Skills 从 170 到 188:一次中文教育 Agent Skill Pack 的工程化升级
  • 终极指南:在macOS上轻松制作Windows启动盘的5个简单步骤
  • 3个场景解锁VR视频:无需专业设备也能享受沉浸式体验
  • 从代码到图表:5分钟掌握Mermaid图表生成神器,让技术文档告别单调
  • 建立自我信任,形成正向反馈循环的庖丁解牛
  • Windows 7环境下使用IDA与C32Asm静态破解Android APK实战指南
  • Agent Ops 时代的评估驱动优化
  • Triton 编译器适配记,自定义算子在 AMD 架构上的运行
  • CentOS8环境下Zabbix 6.0 LTS部署与生产级配置实战
  • NifSkope终极指南:免费开源的游戏文件编辑器完全解析
  • 3分钟掌握Windows窗口置顶技巧:AlwaysOnTop让你的多任务处理效率翻倍
  • 2026年Java开发破局:一个大二学生的思考
  • vibe coding使用记录
  • 芯片制程微缩,ESD 风险剧增:纳米工艺 ESD 防护策略
  • 自己做一个小程序商城可行吗?免代码搭建、费用和上线流程