mcpField
O
owl-strategy

owl-strategy

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

关于 owl-strategy

owl-strategy 是 Senpi 技能,扫描加密货币永续合约中的拥挤交易及其衰竭迹象,再发出逆向入场信号。生产进程提交信号,运行时负责执行和持仓管理。

主要功能

  1. 01拥挤度与衰竭评分
  2. 02持续性与宏观趋势门控
  3. 03按 OI 筛选永续合约范围
  4. 04提交逆向交易信号
  5. 05运行时强制执行风险限制

适用场景

  1. 01发现出现衰竭迹象的拥挤交易
  2. 02强劲 BTC 波动期间过滤反向信号
  3. 03向运行时提交逆向候选信号

MCP 相关

生产进程通过 SenpiClient.mcp_call() 获取市场数据和持仓信息,再用 SenpiClient.push_signal() 发送逆向信号。运行时会校验并处理信号。

安装

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

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

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

包含的文件

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

README.md
runtime.yaml
config/
owl-config.json
references/
skill-attribution.md
scripts/
owl_config.py
owl-producer.py

详细介绍

🦉 OWL v8.0 — 纯逆势。原生 Helpers。Maker 退出。

等待大众过度下注。等待他们耗尽。然后收割他们的清算。

唯一的论点:大众是错的。 其他所有技能都会顺着动能、顺着趋势、顺着聪明钱入场。OWL 是唯一一个逆着大众入场的技能。优势在于:拥挤交易的平仓会剧烈且可预测地发生。


v8.0.0 中的变更

仅调整底层实现。论点没有变化。 v7.1 的拥挤度/耗尽评分、持久性门槛、MACRO_TREND_GATE、信念杠杆和 DSL 预设均原样保留。

在 @senpi-ai/runtime 1.1.0 上进行六层底层实现切换(与 Wolverine/Lemon/Cheetah v3.0+ 迁移采用相同模式):

层v7.1v8.0
MCP 调用mcporter 子进程SenpiClient.mcp_call() 直接通过 HTTPS 调用
信号发送openclaw senpi external-scanner ingest 子进程SenpiClient.push_signal() 直接发送 HTTP POST
重入控制手动编写的 fcntl 对 producer.lock 加锁producer_daemon.scanner_lock(自动恢复陈旧 PID)
Tick 调度openclaw cron + agentTurn长驻 producer_daemon 进程
/state alive_check无wallet=/scanner= 参数 → 如果 runtime/scanner 被移除,守护进程会自行终止
信号类型标记从 payload 推断显式传入 signal_type="OWL_CONTRARIAN_FADE"

为何推出 v8.0: 让 Owl 使用与整个技能集群相同的底层实现。消除每个 tick 的子进程开销(约 30-60 秒 → 每个 tick 约 1-3 秒)。论点没有变化——v7.1 是最近一次论点层面的更新。


论点(沿用 v7.1 / v6.2)

  • 拥挤度评分: 资金费率极端程度(0-4)+ SM 倾斜度(0-3,若确认资金费率则 +1)+ OI 集中度(0-2)。下限为 6。
  • 持久性: 高于下限至少 1 小时,允许 2 个 tick 的噪声容差(v5.3)
  • 耗尽评分: 成交量下降 + 价格停滞 + 成交量激增但未能延续走势 + RSI 背离。≥ 2 个不同信号,评分 ≥ 5。
  • 综合评分 ≥ 12 才触发。
  • 宏观趋势门槛: 当 |BTC 4h move| > 3% 时,阻止对加密资产进行逆势交易(v7.1)。
  • 亏损后每种资产冷却 6 小时。
  • 资产范围: 所有 OI > $3M 的加密永续合约(v6.1 扩展,不截断至前 30 名)。
  • 禁止 XYZ(其平仓动态不同,需要单独校准)。

文件

文件用途
runtime.yamlRuntime 规格(扫描器、操作、退出 DSL、guard_rails)——架构版本 1.8.0
scripts/owl-producer.py长驻、原生 Helpers 的生产者守护进程(15 分钟间隔)
scripts/owl_config.py共享 MCP helper + _wrapper_client 代理 + 原子状态 I/O
config/owl-config.json操作者可调的默认值(仅供参考;以生产者常量为准)

Producer 行为

每 15 分钟运行一次(长期运行的守护进程,不是 openclaw cron)。每次触发时:

  1. 解析钱包(OWL_WALLET 环境变量;未设置时回退到 config.wallet);如果两者都为空,则报错并立即终止。
  2. 读取账户价值:通过 strategy_get_clearinghouse_state 获取,用于仓位规模计算和动态上限。
  3. 应用动态每日上限(与运行时的 guard_rails 配合,形成纵深防御)。
  4. 获取标的范围:market_list_instruments(约 80–100 个未平仓合约持仓量(OI)超过 $3M 的加密货币永续合约)。
  5. 获取 SM 持仓分布图(一次 MCP 调用,为所有资产共享)。
  6. **MACRO_TREND_GATE:**若 |BTC 4h move| > 3%,则跳过本次触发。
  7. 为每种资产计算拥挤度分数,并更新持久化历史记录。
  8. 筛选已持续满足条件的候选资产(高于拥挤度下限至少 1 小时)。
  9. 仅检测已持续满足条件的候选资产是否出现耗竭(减少 MCP 调用)。
  10. 筛选综合分数 ≥ 12 的资产,并应用单资产冷却期。
  11. 通过 cfg._wrapper_client.push_signal(..., signal_type="OWL_CONTRARIAN_FADE", ...) 发出最具逆势性的候选信号,杠杆按信号强度缩放(按分数使用 7/8/10 倍)。
  12. 将拥挤度历史记录和冷却状态持久化到 state/<wallet-hash>/。

没有执行代码。没有持仓跟踪。没有 DSL 状态。这些都由运行时负责。

**方向与人群方向相反。**这就是全部优势所在——Owl 是整个 Agent 集群中唯一一个逆向交易拥挤行情的 Agent。


入场流程

Producer daemon tick (every 900s)
  ↓ Crowding score >= 6, persisted >= 1h
  ↓ Exhaustion score >= 5 with >= 2 signals
  ↓ Combined score >= 12
  ↓ SenpiClient.push_signal(scanner="owl_signals", signal_type="OWL_CONTRARIAN_FADE", ...)
Runtime (127.0.0.1:8787)
  ↓ Schema-validates fields against runtime.yaml
  ↓ LLM gate (decision_model = ${OWL_DECISION_MODEL})
  ↓ Pass-through unless malformed; rejects if direction == crowdDirection
  ↓ OPEN_POSITION via FEE_OPTIMIZED_LIMIT (maker-only, 60s, NO taker fallback)
DSL (runtime-managed)
  ↓ Phase 1 max_loss 35% / single-breach (wide for contrarian retrace)
  ↓ Phase 2 6-tier ladder starting at 5% trigger (Lemon-pattern first leg)
  ↓ hard_timeout 480m, weak_peak 120m@2%, dead_weight 30m
  ↓ Exit via FEE_OPTIMIZED_LIMIT (maker-first, 60s, taker fallback)

必需的环境变量

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

变量用途
${WALLET_ADDRESS}策略钱包地址
${TELEGRAM_CHAT_ID}用于接收通知的 Telegram 聊天 ID
${OWL_DECISION_MODEL}LLM 门控使用的纯模型名称。不要加提供商前缀。

Producer 会读取:

变量用途默认值
SENPI_AUTH_TOKENMCP 调用和信号 POST 所必需—(必需;Producer 会报错并立即终止)
OWL_WALLET钱包(必须与运行时 YAML 中的钱包一致)。按设计,该变量专用于此 Agent。遵循 Turbine v2.0.9 污染修复方案。回退到 config.wallet
OWL_MARGIN_PCT每个仓位占账户价值的比例0.25
OWL_MIN_OI_USD覆盖 OI 下限3000000

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

设置值
仓位数2
每个仓位的保证金账户价值的 25%(默认情况下,$1k 账户约为 $250)
默认杠杆8 倍(信号强度分级:分数为 12–13 时用 7 倍,14–15 时用 8 倍,16+ 时用 10 倍)
每日亏损停机阈值10%
回撤停机阈值25%(Producer 侧也设有断路器)
每日最多入场次数4(运行时上限);Producer 会根据盈亏设置动态上限
连续亏损次数上限4
单资产冷却期360 分钟(亏损后 6 小时)
资产范围所有 OI > $3M 的加密货币永续合约(禁止 XYZ)

动态每日上限(Producer 侧,v6 沿用):

账户状态每日最多入场次数
PnL < -25%0(硬性停止——运行时也会停止)
PnL < -15%1
PnL < -5%2
当日已实现 PnL < +$1502(基础上限)
当日已实现 PnL ≥ +$1503
当日已实现 PnL ≥ +$4004

预期行为

指标预期值
每次扫描中高于下限的拥挤资产数5–15
持续满足条件 ≥ 1 小时通常为 1–3 个
耗竭共振每次扫描 0–1 个
每日交易次数0–2
平均持仓时间1–8 小时
目标胜率60–70%(时机把握得当时,逆势平仓可靠性较高)

**保持静默才是正确做法。**Owl 会等待人群状态和耗竭触发条件同时出现。大多数时候,两者至少缺少其一。不要自行变通。


v8.0.0 更新日志

  • 仅调整底层实现。 按照 Wolverine v5.0 / Lemon v2.0 模板进行六层翻转。完整保留 v7.1 中的论点。
  • owl_config.py:mcporter_call() 现在通过 SenpiClient.mcp_call()(直接 HTTPS)进行路由。提供 _wrapper_client 代理,供 push_signal() 使用。
  • owl-producer.py:移除 fcntl 锁文件和 subprocess.run([...ingest])。改为使用 producer_daemon(fn=main, interval_seconds=900, ...) 和 cfg._wrapper_client.push_signal(signal_type="OWL_CONTRARIAN_FADE", ...)。
  • runtime.yaml:架构版本从 1.7.1 升至 1.8.0。重写描述。DSL 预设、扫描器 owl_signals、操作 owl_entry、consecutive_breaches_required: 1 均保持不变。
  • 状态文件保持不变。crowding-history.json / asset-cooldowns.json / trade-counter.json 仍存放在 state/<wallet-hash>/ 下。

许可证

Apache-2.0 — 由 Senpi (https://senpi.ai) 构建。衍生作品必须注明出处。 来源:https://github.com/Senpi-ai/senpi-skills


技能归属

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

评论

支持 Markdown