指标产品化:catalog、参数说明与 DSL 最小化

很多量化平台做“指标库”时,容易陷入一个误区:
只要指标够多、公式够全,就算完事。

但在团队交付场景里,指标库的真正价值不在“数量”,而在“产品化程度”:

  • 能不能被非作者正确使用?
  • 参数有没有中文说明与默认值?
  • 不同策略之间能不能复用同一个指标定义?
  • 策略 DSL 会不会越用越臃肿、难维护、难复现?

结论先行:EasyQuant 把指标当作产品资产来治理:用 catalog 管理指标与参数,用最小化 DSL 保证可维护与可复现,并把“解释与排障”能力嵌入到指标层。


一、指标产品化要解决的三件事

1)可理解:参数不是“period=14”这么简单

参数如果没有中文说明,团队会出现两类问题:

  • 新人不会用,只能抄模板
  • 老人也会用错:同名参数在不同指标里含义不一致

指标产品化的最低要求:

  • 指标中文名 + 一句话解释
  • 每个参数的中文说明 + 合理默认值 + 取值范围/校验

2)可复用:指标要成为“一等公民”

如果每个策略都在 DSL 里重复定义一遍 MA/RSI/BOLL,最终你会得到:

  • 重复与漂移:同名指标参数不一致
  • 难以治理:无法统一升级或修复指标实现
  • 难以复现:策略导出后无法确认指标实现版本

因此指标应被 catalog 化:可引用、可复用、可版本化(至少实现应可追踪)。

3)可维护:DSL 必须“最小化”

很多系统的 DSL 会出现“冗余膨胀”:

  • 策略 JSON 里带着大量未引用的指标定义
  • 参数重复出现在多个地方(既写常量又写 ref)
  • 导出/导入后体积越来越大,最终难以阅读与排障

EasyQuant 的方向是:DSL 只保留被引用、且对运行有影响的最小集合


二、catalog:把指标从“代码列表”变成“产品菜单”

从产品视角,一个好用的指标 catalog 至少包含:

  • 指标标识(key):稳定、可引用
  • 指标中文名(nameZh)与说明(descZh)
  • 参数列表:每个参数的中文名、含义、默认值、范围、单位
  • 输出:返回什么(线、带、上下轨、信号值)
  • 典型用法:适用场景与常见组合(可选)

用户在 UI 上应该能够“选指标 → 看懂参数 → 一键生成策略片段”,而不是去翻文档或问作者。


三、参数治理:默认值是一种“团队共识”

默认值不是随便填的,它会直接影响策略行为与团队讨论口径:

  • RSI 14 vs 30:信号频率完全不同
  • BOLL 20/2 vs 50/2:波动判断尺度不同
  • MA 5/10/20:趋势定义不同

平台应该鼓励“默认值可用,但可被显式记录与对比”。
这会与 provenance(见 04)形成闭环:
讨论策略时,先对齐参数与默认值口径。


四、DSL 最小化:为什么它能提升可解释与可复现?

当 DSL 过大、过冗余时:

  • 用户看不懂:不知道哪段才是生效的
  • 系统难诊断:错误上下文不清晰
  • 复现困难:导出后很难核对“运行时用的到底是哪部分”

最小化 DSL 的产品收益是:

  • 策略更像“可读的配置”,而不是堆砌的 JSON
  • 运行快照(provenance)更干净,差异对比更清晰
  • 诊断错误更聚焦(ENGINE_ERROR/参数校验/引用缺失等)

一句话:越少的噪声,越强的治理能力。


五、指标层如何支撑“为什么没信号/没下单”?

把指标产品化后,可解释性会更容易落地:

  • 参数校验错误可以直接归类为 ENGINE_ERROR,并提示“哪个参数不合法”
  • 指标 lookback 不足可以归类为 NO_BARS(或数据不足),提示需要更长窗口
  • 指标输出异常(NaN/Infinity)可以归类为数据质量问题

这些都能让 03 的 Blocking Reasons 体系更准确、更可操作。


六、一个验收:让非作者也能正确配置并跑通

你可以用一个很实用的验收方法判断指标产品化是否到位:

  1. 让一个非策略作者的人,在 UI 里从 catalog 新建一个策略(MA 或 BOLL)
  2. 只依赖中文说明与默认值完成配置
  3. 跑一次回测,并能解释:参数如何影响信号频率、为什么会/不会触发

如果这条验收能稳定通过,说明你的指标库从“技术资产”升级为“产品资产”。


结语:指标越多不等于越强,能被正确使用才是价值

团队交付的关键是:降低误用与沟通成本,让策略配置成为可协作、可复现、可诊断的资产。
catalog、中文参数说明、DSL 最小化,就是把指标库从“代码集合”变成“产品能力”的三件套。

下一篇(09)我们进入执行链路:paper 执行为什么要做风控预检、通道抽象与账本更新,并且拒绝也要可解释。