我如何用 OMC Ralph 搜索 Alpha:以 IBS 均值回归为例
我用 Claude Code 的 oh-my-claudecode(OMC) 插件跑了几轮量化研究。我的目标是让 Ralph 持续提出假设、写策略、跑回测,然后把每一次成功或失败留下来。最后选出的跨资产 IBS 候选,在覆盖 2016–2024 年的 2,264 个交易日里,扣费后年化收益为 12.51%,验证期为 8.86%。IBS 是已有的指标,这次研究要发现的是:它搬到新的 ETF 组合之后,什么样的入场、离场和仓位规则还能通过事先设定的检验? OMC Ralph 技能文档 我怎样给 Ralph 设任务 我先把资产范围、训练与验证切分、交易成本、比较基线和通过门槛写进研究简报。策略只提交目标仓位,统一由同一个引擎计算收益和成本。下面是根据第五轮简报整理的启动指令: /oh-my-claudecode:ralph 按 ROUND5_BRIEF.md 研究跨资产日线均值回归。 每个想法先写假设,只用 TRAIN 选参数,再实现一个策略文件。 每个文件跑一次 python -m lab.check,记录成绩与失败项。 最多 20 个策略文件。按事先写好的规则选择候选,汇报所有结果。 若没有候选通过,写明没有改善。独立留出评估由我执行。 Ralph 每轮先在 results/ideas.md 写下为什么可能有优势,再实现返回目标权重的 weights(data, ...)。python -m lab.selftest 检查工具链,python -m lab.check strategies/<idea>.py 才对策略评分。评分器把训练和验证的指标、参数、通过状态以及策略文件的哈希写到 results/checks.jsonl。它会看扣费后 Sharpe、相对等敞口买入持有的超额收益、剔除最佳十天后的结果,以及改动参数后表现是否还能过线。 可以把整个循环压成一行: 研究简报 → 记录假设 → 训练期选参数 → 实现仓位函数 → 固定规则评分 → 记录通过或失败 与 IBS 有关的研究轮次 轮次 核心想法 结果与下一步 1 · 开放搜索 试波动率择时、月末效应和 ETF 动量轮动。 30 个文件,0 个通过。后半轮的标的和参数受验证期结果影响,后来固定了资产池,并规定每个想法只正式评分一次。 3 · 改进日线 IBS 在固定 12 只美股 ETF 上测试入场阈值和离场逻辑。 20 个文件,16 个通过。选中 IBS < 0.12、最多持仓 7 日的版本。验证 Sharpe 从 0.91 升至 1.02,年化净收益从 9.18% 降至 8.66%。 4 · 改测分钟线 用 SPY 分钟线测试早盘均值回归、跳空回补和尾盘策略。 11 个文件,0 个通过。训练期最高 Sharpe 为 0.71。 5 · 跨资产迁移 在 16 只 ETF 上测试收紧 IBS 阈值、换离场规则和按波动率配仓。 10 个文件,5 个通过。按训练期 Sharpe 选中 IBS < 0.08、最多持仓 5 日、逆波动率配仓的版本。 从失败记录到 IBS 候选 IBS 衡量什么 IBS(Internal Bar Strength)=(收盘价 − 最低价)÷(最高价 − 最低价)。如果当天最低 100、最高 110、收盘 100.7,IBS 就是 0.07,收盘落在当天区间底部的 7% 处。这个位置只描述当天的价格区间,前一日收盘价没有参与计算。遇到最高价等于最低价的日线,代码把 IBS 记为缺失,当天不触发新的入场。这个指标在股票 ETF 上已有研究。 Pagonidis,《The IBS Effect》 ...