关于 cheetah-strategy
cheetah-strategy 是 Senpi 的自动化交易策略技能,面向使用多项交易信号筛选入场并通过规则管理退出的操作者。它结合社交交易者共识、价格与成交量信号、评分杠杆和 DSL 风险机制;会发出交易信号,用户对话会话仅限只读。
主要功能
- 01综合多项信号评分筛选交易机会
- 02按评分设定杠杆并受资产上限约束
- 03通过 DSL 阶梯管理退出与止损
- 04设置持仓去重、冷却和风险门槛
- 05提供交易者数据池与持仓解析告警
适用场景
- 01依据交易者共识和市场动量筛选入场信号
- 02按分数配置杠杆并限制资产风险
- 03使用 DSL 管理止盈、止损和持仓时限
- 04查看交易状态而不从对话会话执行交易操作
MCP 相关
README 提及 senpi_runtime_helpers 提供进程内 MCP;策略生产器通过 SenpiClient.push_signal() 发送信号。交易操作工具保留给生产器和 DSL 引擎,对话会话为只读。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ senpi-ai/ senpi-skills --skill cheetah-strategy安装后在 Claude Code 中输入/cheetah-strategy确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdruntime.yamlconfig/cheetah-config.jsonreferences/skill-attribution.mdscripts/cheetah_config.pycheetah-producer.py详细介绍
🐆 CHEETAH v7.2.0 — 多信号共振狙击手
SM 提交。优质交易者提交。价格确认。成交量提交。一切同时发生。Cheetah 一击出击。运行时 DSL 逐步收紧,以锁定胜局。
v7.2.0(2026-06-01)— DSL 出场机制全面调整:禁用时间止损,让盈利仓位继续奔跑
入场表现不错。出场才是瓶颈。 对实盘钱包按评分进行的 100 笔交易分析显示,胜率随评分稳步提升 — 评分 10 为 40.0%,评分 11 为 41.7%(n=84),评分 12 为 50.0%,评分 13 为 55.6% — 证实了准确性筛选有效。但每个评分区间的平均 ROE 都为负 (−1.90% / −0.35% / −0.20% / −0.12%)。
| 评分 | 交易数 | 胜率 | 平均 ROE |
|---|---|---|---|
| 10 | 5 | 40.0% | −1.90% |
| 11 | 84 | 41.7% | −0.35% |
| 12 | 2 | 50.0% | −0.20% |
| 13 | 9 | 55.6% | −0.12% |
诊断:“千刀万剐”。 紧密的 Phase 2 锁定机制,加上 60m/90m 时间止损, 从机制上让仓位不可能持有到大幅盈利 — Cheetah 承受了 −15% 止损 / −5% 震荡的全部冲击,却被迫放弃每个 +15% / +30% 的强势仓位。两笔真正带来收益的 HYPE 多头仓位 (+13.9%、+8.9%),之所以能获利,只是因为触发了12h 硬超时 — 不是追踪止损,也不是 60m dead_weight_cut。被迫持仓时,仓位确实录得了收益。
修复方案(与实盘部署一致):
weak_peak_cut→ 禁用(原为 90m @ 3.0 — 过早砍掉尚待启动的盈利仓位)dead_weight_cut→ 禁用(原为 60m — 在趋势加速前强制离场)hard_timeout→ 保留(12h 故障保护 — 唯一抓住盈利仓位的止损)- Phase 2 阶梯已于 2026-05-21 扩大为“让盈利仓位继续奔跑”形态(T0 +10% / 锁定 0 → +100% / 锁定 85)
这些调整共同移除了玻璃天花板,让强劲趋势仓位得以延续。评分、MIN_SCORE、杠杆等级、保证金、冷却时间或风险门控均无变化 — 仅调整出场机制。这是一项假设测试;再经过约 50 笔交易后重新评估。
v7.1.1(2026-05-11)— 持仓解析器修复(补丁)
对 v7.1.0 的实盘验证发现,尽管放宽后的筛选器返回了完整的 25 名交易者名单,positions_map 仍然为空。根本原因是 leaderboard_get_trader_positions 实际返回
{ "data": { "positions": { "trader_id": ..., "rank": ..., "positions": [...] } } }
— 每位交易者的持仓数组比架构指南所述多嵌套了一层。v7.0/v7.1 解析器查看 data.positions 并预期它是列表,结果拿到的是字典,触发 if not isinstance(positions, list): continue,因此静默跳过了所有交易者。
v7.1.1 解析器可处理以下两种结构:
- 直接为列表(与架构指南一致)
- 嵌套字典
{trader_id, rank, positions: [...]}(实际生产响应)
此外,新增 POSITIONS_SHAPE_WARN 日志行,用于提示未来的架构变更。
评分组件、MIN_SCORE、杠杆等级、保证金、冷却时间或 DSL 均无变化。策略思路相同。现在,当每种资产存在重叠持仓时,+3 QUALITY_TRADER 加分终于可以生效。
v7.1.0(2026-05-11)— 扩大质量交易员筛选范围(补丁)
迁移后对实盘钱包进行诊断时发现,quality-cache.json 始终为空(positions_map = {})。根本原因:在当前平台机制下,discovery_get_top_traders(time_frame=WEEKLY, consistency=[ELITE,RELIABLE], open_position_filter=True, limit=8) 返回了 零位交易员。没有质量交易员池,+3 的 QUALITY_TRADER 评分奖励就永远不会触发;候选项的分数最高只能达到 8(没有这项奖励时,需要 4 项次级信号全部一致才能达到 MIN_SCORE=10 的下限),而这 4 项全部一致的情况只会出现在强趋势行情中。
筛选条件变更(已在实盘验证):
time_frame: WEEKLY → MONTHLY— 扩大历史范围,让更多交易员累积 ELITE/RELIABLE 标签consistency: [ELITE, RELIABLE] → [ELITE, RELIABLE, STREAKY]— 适度放宽较低端的筛选条件limit: 8 → 25— 扩大池规模,发现更多跨资产重合情况- 移除
open_position_filter— 按交易员调用leaderboard_get_trader_positions获取持仓时,空持仓数组已会隐式筛掉空仓交易员
评分组件、权重、MIN_SCORE、杠杆档位、保证金、冷却时间和 DSL 均未变更。 策略思路不变,仅扩大输入范围。
遥测:只要交易员池规模过小(< QT_POOL_SIZE / 2)或最终 positions_map 为空,生产器现在都会输出一行 QT_POOL_WARN 日志。今后出现回归时,只需一次 grep 即可发现,无需事后考古排查。
v6.0 策略思路(沿用 v5.x)
除非所有主要信号同时一致,否则拒绝交易:
| 组件 | 信号 | 分值 |
|---|---|---|
| SM 共识 | pct_of_top_traders ≥ 10%,traders ≥ 25 | +4(硬性门槛) |
| 速度 | 15m contrib ≥ 1.0 或 1h contrib ≥ 3.0 | +2(硬性门槛) |
| 加速 | 15m > 1h > 0(SM 持续增强) | +2 |
| 双周期价格 | 4h 变动 ≥ 2%,且 1h 同方向 | +2 |
| 成交量 | 当前成交量 ≥ 6h 均值的 2 倍 | +1 |
| 质量交易员 | ≥ 1 位 ELITE/RELIABLE 交易员持有同方向仓位 | +3 |
| 排名攀升 | 最近 2 次扫描中排名上升 ≥ 5 位,且位列前 15 | +1 |
最高分:15。v6.0 分数下限:10。 标的范围为 SM 排行榜前 100 名(leaderboard_get_markets),每次生产器运行时刷新。XYZ 永久禁用。
按分数调整杠杆:
| 分数 | 杠杆 |
|---|---|
| 10 | 3x |
| 11 | 5x |
| 12-13 | 7x |
| 14-15 | 8x |
通过 strategy_get_asset_trading_limits 将杠杆限制在各资产的 Hyperliquid 最大值以内(保留 v5.1.1 的杠杆安全修复)。
v6.0 架构变更
v1 扫描器 → v2 生产器
- v5.x:
cheetah-scanner.py评估信号,直接调用create_position,并维护 Python 侧的冷却时间、计数器和挂单保护 - v6.0:
cheetah-producer.py通过SenpiClient.push_signal()(直接 HTTP POST)发出信号。运行时 LLM 门控(decision_mode: llm)仅透传。风险门控在runtime.yaml中声明式配置。
MIN_SCORE 从 11 调至 10
v5.2 将 MIN_SCORE 从 10 收紧至 11。结果:连续 8 天零交易。收紧前(v5.0/v5.1,MIN_SCORE 为 10)共交易 11 次,净收益 +$182,胜率超过 60%。v6.0 恢复交易流。
EXIT 也使用 FEE_OPTIMIZED_LIMIT
v5.x 使用 MARKET(吃单)平仓。v6.0 的 DSL 会在每次退出时触发 FEE_OPTIMIZED_LIMIT——优先挂 maker 单,ALO 超时 60 秒后回退到 taker。HL 的 maker 费率为 0.015%,taker 费率为 0.045%,每次平仓可节省 0.020-0.030%。
已持仓资产去重(三层防护)
- 生产器预筛选:从 clearinghouse 获取
held_assets,剔除已持有的标的 - LLM 门控硬性跳过:信号负载中的
heldAssets数组会让 LLM 在标的已持仓时拒绝信号 - 运行时
per_asset_cooldown_minutes: 240(已知可能静默失效;第 1 和第 2 层才是真正的防护)
平仓后冷却(生产器侧兜底)
逐次比较不同运行周期中的 held_assets。标的从已持仓集合中消失时,记录平仓时间戳。任何平仓后 240 分钟内,生产器都会跳过该标的的信号发出。此机制为运行时冷却时间的缺陷兜底。
重入保护
producer_daemon 持有逐周期的 scanner_lock,并可自动恢复过期 PID——取代 v6.x 手写的 fcntl 锁文件。防止两个运行周期发生竞争。
DSL 预设(v7.2.0 —「让赢家奔跑」阶梯,停用时间止盈)
| 阶段 | 组件 | 设置 |
|---|---|---|
| 阶段 1 | max_loss_pct | 15% |
| 阶段 1 | retrace_threshold | 10(v6.x 从 6 调高) |
| 阶段 1 | consecutive_breaches | 1 |
| 阶段 2 T0 | 触发 10% / 锁定 0% | (让涨幅达到 +10% 的标的在锁定前可以完全回撤) |
| 阶段 2 T1 | 触发 20% / 锁定 25% | |
| 阶段 2 T2 | 触发 30% / 锁定 40% | |
| 阶段 2 T3 | 触发 50% / 锁定 60% | |
| 阶段 2 T4 | 触发 75% / 锁定 75% | |
| 阶段 2 T5 | 触发 100% / 锁定 85% | (峰值) |
| hard_timeout | 720 分钟(12h) | 已启用(仅剩的时间止盈) |
| weak_peak_cut | — | 已停用(v7.2.0) |
| dead_weight_cut | — | 已停用(v7.2.0) |
v7.2.0:已停用 weak_peak_cut 和 dead_weight_cut。对 100 笔交易的分析 表明,时间止盈是瓶颈——它们会在趋势币加速前强制平仓,并限制了 足以带来全部收益的右侧尾部涨幅。两笔 HYPE 大额盈利(+13.9%、+8.9%)只有通过 12h 硬超时机制才得以保留,因此保留了这一故障保护机制。中位数交易会回吐少许收益; 现在右侧尾部不再受限。
风险门控(runtime.yaml risk.guard_rails)
| 门控 | 设置 |
|---|---|
| daily_loss_limit_pct | 25% |
| max_entries_per_day | 8 |
| max_consecutive_losses | 3 |
| cooldown_minutes (post-loss) | 30 |
| drawdown_halt_pct | 25% |
| drawdown_reset_on_day_rollover | false(Roach 周六至周日亏损扩大的教训) |
| per_asset_cooldown_minutes | 240(4h) |
运维安装
有关全新安装和从 v5.2 迁移的命令,请参阅 README.md。
已纳入的集群补丁
- ✓ 持仓资产去重(三层:生产器预筛选、LLM 门控、运行时 per_asset_cooldown)
- ✓ 平仓后冷却(生产器侧的后备机制,用于应对运行时冷却静默执行的缺陷)
- ✓ 集群标准 T0/T1 阶梯
- ✓ 可重入保护(v7.0.0:producer_daemon scanner_lock,支持过期 PID 自动恢复;取代手工编写的 fcntl)
- ✓ 从配置读取钱包(不硬编码;senpi-skills 为公开项目)
- ✓ drawdown_reset_on_day_rollover: false(Roach 教训)
- ✓ senpi_runtime_helpers(v7.0.0:进程内 MCP + signal POST;取代 mcporter + openclaw-CLI 子进程)
- ✗ FP-001 静默时段 — 暂缓,待集群遥测数据验证时段与损益的相关性
用户对话 Claude 会话的硬性规则
用户对话 Claude 会话不得调用以下任何工具:
create_position、close_position、edit_position、
ratchet_stop_add、ratchet_stop_edit、ratchet_stop_delete、
cancel_order、strategy_close、strategy_close_positions。
这些工具仅供生产器守护进程(入场路径)和 DSL ratchet 引擎(退出路径)使用。用户对话会话只能只读。
如果用户提出的问题隐含操作意图(例如“有没有快触发的?”),请读取当前状态并作答——不要执行操作。生产器守护进程会在下一次轮询时处理实际信号。
技能归属信息
创建策略时,请在调用中包含 skill_name 和 skill_version。详情请参阅 references/skill-attribution.md。
许可证
MIT — 版权所有 2026 Senpi(https://senpi.ai)