mcpField
R
roach-strategy

roach-strategy

github.com/senpi-ai其他14051 次安装今天更新
代码仓库

关于 roach-strategy

roach-strategy 是面向 Senpi runtime 的 Striker 专用交易技能。Producer 筛选市场信号并交由 runtime 处理,由 runtime 负责执行头寸操作和风险控制。

主要功能

  1. 01每 90 秒运行的市场信号 Producer
  2. 02Striker 信号筛选与冷却机制
  3. 03由 runtime 管理执行和风险限制
  4. 04优先 Maker 的退出单及 Taker 回退
  5. 05守护进程健康度与活动监控

适用场景

  1. 01向 Senpi runtime 发送符合条件的市场信号
  2. 02使用 runtime 强制执行的风险限制运行策略
  3. 03监控 Producer 守护进程健康度和信号活动

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/senpi-ai/senpi-skills --skill roach-strategy

安装后在 Claude Code 中输入/roach-strategy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
runtime.yaml
config/
roach-config.json
references/
skill-attribution.md
scripts/
roach_config.py
roach-producer.py

详细介绍

🪳 ROACH v3.0.0 — 仅 Striker。senpi_runtime_helpers。

蟑螂能在任何环境中存活。ROACH 的生存之道,是在没有爆发行情时不交易。


v2.0 的变更

架构(而非策略):

层v1.xv2.0
交易循环Agent 运行扫描器,Agent 调用 create_position生产器通过 SenpiClient.push_signal() 推送信号;运行时负责执行
入场门控Agent 决定LLM 直通门控(生产器已完成筛选)
退出通过 runtime.yaml 配置 DSL(效果良好)相同的 DSL 预设,但使用 FEE_OPTIMIZED_LIMIT 订单类型 — 优先做市,等待 60 秒,之后回退为吃单
风险门控Agent 在扫描器代码中执行通过 runtime.risk.guard_rails 声明式配置
单资产冷却生产器状态文件运行时 + 生产器(纵深防御)

v2 的原因: v1 每次退出都使用 MARKET 订单,每次退出需支付约 3 bp 的 HL 吃单手续费。近期 25 笔交易样本:HL 手续费为 $46,全部为吃单。v2 的 FEE_OPTIMIZED_LIMIT 配合 ensure_execution_as_taker: true 和 60 秒超时,优先争取做市成交,但在必须平仓时接受回退为吃单。预计可节省 50-70% 的 HL 退出手续费。

延续 v1.2 的策略: 禁用 Stalker。仅使用 Striker。FIRST_JUMP 从第 25 名及之后的排名跃升 >= 15,或 contribVelocity >= 15;得分 >= 10 且至少有 4 个理由;成交量为 1.5 倍;1h 价格走势一致;4h 趋势一致;禁止 XYZ。


文件

文件用途
runtime.yamlsenpi-trading-runtime 规范(扫描器、动作、退出 DSL、guard_rails)
scripts/roach-producer.py由 Cron 驱动的生产器 — 向运行时发送 Striker 信号
scripts/roach_config.py共享 MCP 辅助工具 + 原子状态 I/O
config/roach-config.json可由操作者调整的默认值(仅供参考;以生产器常量为准)

生产器行为

作为长驻守护进程,每 90 秒运行一次(通过 producer_daemon;扫描器锁及过期 PID 自动恢复由守护进程负责)。每次运行时:

  1. 防重入: 获取 state/<wallet-hash>/producer.lock。如果上一次运行尚未释放该锁(Cron 运行间隔短于 MCP 延迟),本次运行会正常跳过。
  2. 获取市场数据: leaderboard_get_markets(前 50 名,在解析时过滤掉 XYZ)。
  3. 检测 Striker 信号: 排名跃升、contribVelocity,以及相对于扫描历史的贡献暴增。
  4. 应用硬性门槛: 4h 趋势一致,cc_15m >= 0.5,1h 价格走势一致且涨幅 >= 0.1%,成交量 >= 1.5 倍,得分 >= 10,至少有 4 个理由,资产不在 120 分钟冷却期内。
  5. 发送信号: 通过 client.push_signal()(直接向运行时 API 发起 HTTP POST)。
  6. 持久化扫描历史和冷却状态: 存储在 state/<wallet-hash>/ 下。

无执行代码。无持仓追踪。无 DSL 状态。这些全部由运行时负责。


入场流程

Producer daemon (90s tick)
  ↓ Striker signal detected
  ↓ client.push_signal(scanner="roach_signals", ...)
Runtime
  ↓ Schema-validates fields against runtime.yaml
  ↓ LLM gate (decision_model = ${ROACH_DECISION_MODEL})
  ↓ Pass-through unless malformed (producer already filtered everything else)
  ↓ OPEN_POSITION via FEE_OPTIMIZED_LIMIT (maker-first, 60s, taker fallback)
DSL (runtime-managed)
  ↓ Phase 1 max_loss 18% / 3-breach
  ↓ Phase 2 tiers (7/40, 12/55, 15/75, 20/85)
  ↓ hard_timeout 120min, weak_peak 45min, dead_weight 25min
  ↓ Exit via FEE_OPTIMIZED_LIMIT (maker-first, 60s, taker fallback)

必需的环境变量

运行时 YAML 使用以下替换项:

变量用途
${WALLET_ADDRESS}策略钱包地址
${TELEGRAM_CHAT_ID}用于发送通知的 Telegram 聊天 ID
${ROACH_DECISION_MODEL}LLM 门控使用的纯模型名称。不要加提供商前缀(例如 google/...、anthropic/...、openai/...)——OpenClaw 会重复添加前缀,并以 500 Unknown model 错误拒绝请求。选择 OpenClaw 主机运行时注册表支持的任意模型。

生产器读取以下变量:

变量用途默认值
ROACH_WALLET钱包(必须与运行时 YAML 中的钱包一致)。按 Agent 单独设置是有意设计——请勿使用通用的 STRATEGY_ADDRESS。 根据 Turbine v2.0.9 的污染修复,如果多个 Agent 共用一个安装实例,共享环境变量会成为整个 Agent 群的风险入口。—(必需;缺失时生产器会明确报错)
OPENCLAW_BINCLI 二进制名称openclaw
EXTERNAL_SCANNER_NAME扫描器 IDroach_signals
ROACH_LEVERAGE信号负载中声明的杠杆7
ROACH_MARGIN_USD信号负载中声明的每个仓位保证金250

Producer 安装(在 OpenClaw 主机上)

senpi-skills 仓库中的源路径:roach/。OpenClaw 主机上的安装目标路径:/data/workspace/skills/roach-strategy/。这两个名称不同——仓库使用 roach,安装目录使用 SKILL.md 的 name 字段(roach-strategy)。

面向操作人员的完整安装操作手册位于 README.md — 五步流程(注册 openclaw.json 插件 → 安装 senpi-trading-runtime 技能 → 拉取 Roach 文件 → 设置环境变量 → 重新创建 runtime 并启动守护进程 → 冒烟测试)。

安装后,通过 senpi-helpers CLI 管理守护进程:

senpi-helpers list                                  # daemons visible with recent LAST_TICK
senpi-helpers health roach-<wallet-suffix>          # exit 0 = healthy
senpi-helpers stats roach-<wallet-suffix> --hours 1 # signals posted + error histogram
senpi-helpers restart roach-<wallet-suffix>         # stop + re-exec from boot.json

检查 producer 状态(每个钱包的扫描历史):

ls -la /data/workspace/skills/roach-strategy/state/<wallet-hash>/
# Expect: scan-history.json with mtime in last few minutes.
# A fresh scan-history.json (mtime < 5 min) confirms the daemon is ticking.

风险范围(声明式,由 runtime 强制执行)

设置值
仓位数(最大并发持仓)2
每个仓位的保证金$250
默认杠杆7x
每日亏损停机阈值10%
回撤停机阈值25%
每日最大入场次数6
最大连续亏损次数3
亏损后冷却时间30 分钟
单个资产冷却时间120 分钟
XYZ 股票在 producer 扫描层级禁止

预期行为

指标预期
交易次数/天(震荡行情)0-1
交易次数/天(趋势行情)1-3
零交易天数常见且正常
胜率目标为 50-70%(Striker 质量)
每笔平仓的平均手续费显著低于 v1(maker 成交)
手续费总额 / 交易量相比 v1 基线减少约 50-70%

保持静默是正常的。 如果 Roach 连续 24-48 小时没有交易,这意味着没有值得参与的 FIRST_JUMP 爆发行情。这说明实验正在按预期运行,并非 bug。


v2 中移除的内容

已移除(职责转移至 runtime):

  • roach-scanner.py(由 roach-producer.py 替代)
  • 交易计数器 / 每日亏损跟踪(runtime 的 guard_rails)
  • Bootstrap 门控 / config/bootstrap-complete.json(runtime 安装负责处理状态)
  • 扫描器中的资产冷却记录(producer 中仍保留,作为纵深防御,但 runtime 才是权威来源)
  • 基于 PnL 动态调整仓位数(仓位数由 runtime 管理)
  • 所有 create_position 调用(执行由 runtime 管理)

永久禁用(在 v1.0 中决定):

  • Stalker 模式及所有累积检测
  • XYZ 股票(在扫描层级禁止)

许可证

MIT — 由 Senpi 构建(https://senpi.ai)。 源代码:https://github.com/Senpi-ai/senpi-skills


技能归属

创建策略时,在调用中包含 skill_name 和 skill_version。详情请参阅 references/skill-attribution.md。

评论

支持 Markdown