关于 regimen
Regimen 分析交易策略的权益曲线,评估其表现是否能与运气区分,并判断优势在哪些市场条件下成立。它面向交易者和 Agent,强调统计证据不足时明确给出保留结论。
主要功能
- 01计算 PSR、DSR 和最短记录长度
- 02使用自助法置信区间评估显著性
- 03按市场状态归因并进行置换检验
- 04通过零均值和模拟策略进行自检
- 05比较策略曲线与来源公布的数据
适用场景
- 01检验短期策略表现是否有统计依据
- 02识别策略优势对应的市场条件
- 03评估多次调参带来的选择偏差
- 04检查市场数据来源与曲线指标差异
MCP 相关
MCP 服务提供策略评估、市场状态映射、自检和因子描述工具,并公开方法、证据等级资源及审查提示词。MCP 客户端可通过 Streamable HTTP 连接;对内联数据源无需认证。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://regimen-nu.vercel.app/mcpclaude mcp add --transport http rayyer220-regimen https://regimen-nu.vercel.app/mcp{"mcpServers":{"rayyer220-regimen":{"type":"http","url":"https://regimen-nu.vercel.app/mcp"}}}在 Cursor 中打开{"servers":{"rayyer220-regimen":{"type":"http","url":"https://regimen-nu.vercel.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"rayyer220-regimen":{"type":"http","url":"https://regimen-nu.vercel.app/mcp"}}}{"mcpServers":{"rayyer220-regimen":{"serverUrl":"https://regimen-nu.vercel.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
4此工具无需参数。
详细介绍
Regimen
夏普比率是一个估计值。Regimen 会告诉你它是否属实。
Regimen 根据交易策略的权益曲线回答两个汇总绩效数字无法回答的问题:测得的优势能否与运气区分开来,以及它在哪些市场条件下确实成立?
它既面向 Agent,也面向用户。所有功能都可通过 REST API 和 MCP 使用;它最常给出的答案是:证据太少,无法支持当前结论。这就是产品本身,并非故障模式。
- 在线 API — https://regimen-nu.vercel.app
- MCP 端点 —
https://regimen-nu.vercel.app/mcp(修订版2026-07-28) - OpenAPI — https://regimen-nu.vercel.app/api/v1/openapi.json
- MCP Registry — 已发布,名称为
io.github.RaYYeR220/regimen(条目) - 自行验证 —
verification/README.md· 声明清单 —CLAIMS.md· 真实与模拟 —MOCKS.md· 评分卡 —EVAL.md
问题所在
某策略公布了六周内 2.4 的夏普比率,以及 40 笔交易中 58% 的胜率。这两个数字都是真的,但都不是证据。
根据短期、偏态、厚尾样本计算出的夏普比率,其误差范围足以吞没这一结论。40 笔交易无法区分 58% 的优势和抛硬币。而当一个策略经过 20 次重新调参后,最好的配置看起来表现出色,原因和 20 个随机的人中最高的那个人个子高是一样的。
这不是冷门的统计学异议——这是资金因回测而损失的最常见原因。解决这一问题的数学方法自 2012 年以来就已存在,却几乎从未得到应用,因为它不只是用均值除以标准差那么简单。
以下是在线服务针对一条年化夏普比率为 3.72的曲线给出的真实输出:
verdict weak
confidence 92.3% that the true Sharpe exceeds 0
95% interval [-0.033, +0.462] zero is still inside
track record 60 periods; 78 needed for significance at 95%
仪表板只会显示 3.72,然后就此打住。
功能
1. 显著性。 概率夏普比率(Probabilistic Sharpe Ratio)——根据样本长度、偏度和峰度,计算真实夏普比率超过基准的概率。最短记录长度(Minimum Track Record Length)——要做出这一结论,至少需要多少个周期。去膨胀夏普比率(Deflated Sharpe Ratio)——对比率进行修正,以纳入此前尝试过的配置数量。保留序列相关性的平稳自助法置信区间。
2. 市场状态归因。 每个周期的收益都会与该 UTC 日期有效的市场状况关联起来,包括波动率、资金费率、未平仓量、持仓情况、市场情绪和趋势状态;数据按当时可获得的信息读取,因此分组中的任何内容都不会是事后才知道的。每个因子都带有置换检验:将各分组间观察到的绩效离散程度,与随机重排市场状态标签后产生的离散程度进行比较,因为把收益序列切成八组,总能保证找到一个看起来不错的子集。没有这个 p 值,市场状态图就是一台数据挖掘机器。
3. 自我攻击。 每项分析都可以针对答案预先已知的对照组运行:策略自身去除均值后的收益(真实夏普比率恰好为零,因此正确的引擎应将其评为接近 50%),以及一个按长度和波动率匹配的无优势策略模拟群体,这样便可将真实结果作为百分位数与纯粹的运气进行比较。结果会被公布,包括对照组测试失败时。
4. 差异检查。 当数据源公布了自己的数字时,Regimen 会根据权益曲线重新计算并报告差异。大多数差异都可以用计算惯例不同来解释,但引用仪表板数据的用户有权知道底层曲线给出的结果是否不同。
无需凭据即可试用
curl -s https://regimen-nu.vercel.app/api/v1/evaluate \
-H 'content-type: application/json' \
-d '{
"selector": {
"source": "inline",
"trackRecord": {
"label": "demo",
"equity": [
{"t": "2026-06-01", "equity": 10000}, {"t": "2026-06-02", "equity": 10180},
{"t": "2026-06-03", "equity": 10090}, {"t": "2026-06-04", "equity": 10310},
{"t": "2026-06-05", "equity": 10240}, {"t": "2026-06-06", "equity": 10450}
]
}
}
}'
这条曲线故意设置得过短,Regimen 会明确指出这一点,而不是给出一个数字。
verification/README.md 提供了一个完整长度的示例,可生成分级结论,还包含健康状态和部署证明检查。
两种接入方式,一个引擎
REST
| 方法 | 路径 | 回答的问题 |
|---|---|---|
POST | /api/v1/evaluate | 这份业绩记录能否与运气区分开? |
POST | /api/v1/regime-map | 优势集中在哪些市场状况下? |
POST | /api/v1/self-attack | 我为什么应该相信这个结论? |
GET | /api/v1/status | 上游可达性、缓存占用情况、演示密钥可用性。 |
GET | /api/v1/openapi.json | 机器可读的契约。 |
GET | /api/health | 存活状态和确切的构建提交。 |
每个响应都是 { data, meta } 或 { error, meta },其中 meta 包含请求 ID、构建提交,以及为该请求提供服务的凭据模式。错误包含稳定的机器可读 code、retryable 标志,以及一条可供 Agent 采取行动的 remedy,而非一段供人阅读的堆栈跟踪。
MCP
通过 Streamable HTTP 将任意 MCP 客户端连接到 https://regimen-nu.vercel.app/mcp。使用 inline 数据源无需身份验证。对于通过文件配置的客户端:
{ "mcpServers": { "regimen": { "url": "https://regimen-nu.vercel.app/mcp" } } }
如需交互式检查:运行 npx @modelcontextprotocol/inspector,并将其指向相同的 URL。
工具 — regimen_evaluate_track_record、regimen_regime_map、regimen_self_attack、regimen_describe_factors。每个工具都声明了一个 outputSchema,并返回经过验证的 structuredContent;每个工具都标注了 readOnlyHint,因为这里不会写入数据、交易或签名;每个工具都提供 detail 开关,让 Agent 可以只请求结论及其理由,而非所有分桶数据。
资源 — regimen://methodology(完整的统计方法)、regimen://evidence-tiers(精确的评级阈值),以及模板 regimen://factor/{key},其 key 参数支持 completion/complete。
提示词 — validate_strategy,按正确顺序进行完整审查,并附有不要从年化 Sharpe 开始的指示。
架构
REST /api/v1/* MCP /mcp
│ │
└────────────┬───────────┘
│
engine/ significance · regime · self-attack
│
stats/ PSR · DSR · MinTRL · bootstrap ·
conditional attribution · Wilson
│
sources/ ── adapter interface ──┐
│ │
olaxbt-nexus inline
(18 tools, point-in-time) (bring your own curve)
引擎基于领域模型编写——业绩记录和市场状态序列——绝不依赖供应商的响应格式。数据源是一个轻量适配器,负责生成这两类数据。因此,同一套分析既适用于 OlaXBT Nexus 策略,也适用于从电子表格粘贴的曲线;添加一个交易场所只需新增适配器,无需重写代码。
OlaXBT Nexus 是实时数据源。 适配器会读取策略的权益曲线、交易记录和已发布指标,并读取每个日期对应的八个市场状况因子,同时提供明确的 as_of,从而确保市场状态归因不受前视偏差影响。限流和缓存由客户端负责,而不是放在各个调用处:Builder 层级的密钥每分钟允许 80 次请求,而市场状态映射需要数百次时点读取,因此调用会通过令牌桶进行限速,并缓存每一项日期在过去且不可变的读取结果。
测试
pnpm test # the full suite
pnpm typecheck # strict, with noUncheckedIndexedAccess
pnpm eval # the graded evaluation; writes EVAL.md
统计核心包含 370 项测试。PSR、MinTRL、Deflated Sharpe Ratio、偏度、峰度、Wilson 区间和回撤的已知答案测试用例均独立于此实现生成,并在注释中附有计算过程。一项使用 20 个随机种子的负控制测试证实,零均值序列有 20 次中的 2 次达到 95% 置信度,即名义显著性水平;与之匹配的正均值序列则有 20 次中的 20 次达到该水平。
评估结果
EVAL.md 是一项预先注册的分级评估:包含 82 种具有已知真实结果的合成策略,按误报率、检验效能、对退化输入的正确拒绝、校准度和市场状态检测能力进行评分。在引擎首次接受评估之前,测试套件及其目标就已固定。
目前有六项目标中的三项未达标,而且这些失败都如实公布,没有通过调整来掩盖。 值得了解这些结果,因为它们如实揭示了此方法的局限:
- 误报率 5.6%(2/36),目标 ≤5%。 两次失败都由同一种机制导致:在短窗口内,收益分布呈负偏态,但崩盘部分尚未出现。非正态性修正取决于样本三阶和四阶矩,而在 40–60 个观测值时,这些矩几乎不包含有用信息——因此,修正原本要捕捉的模式(“卖出波动率,但还没爆雷”)恰好成了它会误判的情况。现在,只要样本过短,导致这些矩没有实际意义,引擎就会在自己的推理中明确指出这一点。请注意,2/36 也处于标称 5% 的蒙特卡洛噪声范围内;真正的发现是其背后的机制,而不是超出目标的幅度。
- 克制率 66.7%(10/15),目标 ≥90%。 有五种情况中,一个真实但无法证实的优势被判定为已证实,因为运气让观测到的 Sharpe 远高于真实值。引擎在这五种情况下的判断方向都正确,但给出的置信度仍超过了样本量所能支持的程度。
- 市场状态检测率 25%(1/4),p ≤ 0.05,目标 ≥75%。 评估在这里发现了一个真实的设计缺陷:置换检验最初使用的是最高与最低 Sharpe 之间的差值,只能观察两个分桶,而且会随分桶数量增加而膨胀。对于植入的效应,它完全无法区分信号与零假设——植入的差值为 0.493,而零假设对照组为 0.491。此检验已改为按观测值加权的桶间方差;植入案例的 p 值因此从 0.022/0.073/0.092/0.229 变为 0.010/0.054/0.069/0.275,而未植入效应的对照组仍无明显信号(0.18–0.91)。这是实质性的改进,但仍未达到目标,因此该目标仍判定为未达成。
市场状态误报为 0/4,退化输入拒绝率为 8/8。
MCP 一致性
npx @modelcontextprotocol/conformance@alpha server --url <url>
在本地构建版本上:36 项检查通过,23 项失败。 通过的项目包括:协议协商、ping、tools/list、resources/list、prompts/list 和 DNS 重绑定防护。所有失败项都是涉及测试套件自身参考服务夹具的场景——命名测试工具、采样、日志记录、图像和音频内容、资源订阅;Regimen 均未实现这些功能。此处直接列出原始数量,而不将结果概括为通过,因为隐藏分母的一致性声明毫无价值。
请注意,DNS 重绑定场景按其自身说明的设定,对任何非 localhost URL 都会报告失败,因此只有在本地构建版本上运行时才有参考意义。
在本地运行
pnpm install
pnpm dev # http://localhost:3000
内联源码无需凭据。若要分析 OlaXBT Nexus 策略,请在每次请求的 x-nexus-key 标头中提供密钥,或在环境中设置密钥。
| 变量 | 必需 | 作用 |
|---|---|---|
NEXUS_DEMO_KEY | 否 | 在调用方未提供密钥时使用的 OlaXBT Nexus API 密钥,让审查者无需账户即可试用由 Nexus 提供支持的端点。使用该密钥时,响应会报告 meta.mode: "demo"。 |
REVIEW_COMMIT | 否 | 覆盖 /api/health 报告的提交版本。仅在支持 Git 感知的构建环境之外进行自托管时需要设置;否则会使用平台的构建元数据,以确保报告的提交版本准确无误。 |
密钥按请求读取,绝不持久化,也绝不记录日志。必须识别密钥时——例如用于速率限制和缓存分区——只会使用不可逆的指纹。
诚实说明局限
- 每次请求中,Regimen 最多读取 45 个日期。 每个日期需要进行五次时点读取,上游每分钟允许 80 次。过去的日期不会变化,且会被缓存,因此重复调用可以扩大覆盖范围;单次请求则不行。
- 上游的时点数据覆盖范围不会延伸到当前时间。 最近日期的状况可能无法获取,这些时段会报告为未匹配,而不会补填数据。
- 只有在提供试验 Sharpe 比率时,才会显示 Deflated Sharpe Ratio。 Regimen 无法知道你尝试过多少种配置,也不会猜测——它会说明未计算该比率及其原因。
- 三分位区间边界取决于样本。 使用常见量表的因子会预先固定边界;其余因子会按自身观测范围划分为三分位,并逐个因子说明采用的划分方式。
- 当权益数据点的间隔不均匀时,年化数据只是近似值。 Regimen 会根据间隔的中位数推断周期,标记不规则情况,并根据每周期数据而非年化数据进行评级。
- 评估基于建模,而非实时数据。 它通过已知真实情况的合成策略衡量引擎表现,并不能证明任何事物具有盈利能力。
不在范围内
Regimen 不会交易、持有资金、托管密钥或签署任何内容。它不会检查智能合约、评估钱包或交易、检测诈骗,也不会进行任何形式的安全、审计或合规分析。它只会读取业绩记录,并报告证据所支持的结论。
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。