COYOTE v1.0.0 是一个市场状态分类器(Regime Classifier / Meta-Router)策略技能。它的核心思路是:在考虑任何交易之前,先回答“我们现在处于什么样的市场”。
用途
在 Senpi 代理体系中,每个代理此前都各自实现“我现在是否应该活跃”的判断逻辑,例如 Vulture 有 HEAVY_FLOW 门控、Wolverine 有多时间框架对齐检查、Tortoise 则无条件买入。它们各自做局部判断,没有共享的宏观状态视图。Coyote 的目标是改变这一点:它观察宏观条件,将市场分类为 TREND_UP / TREND_DOWN / CHOP,并针对自身状态判断做一次方向性押注,同时在每个 tick 上发布该状态视图。
主要能力
Coyote 将市场划分为三种状态,并对应两种交易动作:
- TREND_UP:当 BTC 7 天涨跌幅 ≥ trendUpThresholdPct(默认 5%)且已实现波动率 ≤ maxVolForTrendPct(默认 80%)时,做多 BTC。
- TREND_DOWN:当 BTC 7 天涨跌幅 ≤ −trendDownThresholdPct(默认 5%)且已实现波动率 ≥ minVolForCrashPct(默认 60%)时,做空 BTC。
- CHOP:其他情况,不交易。
TREND_DOWN 明确要求高波动率,用于区分“恐慌式暴跌”(急跌加波动率飙升)与“缓慢阴跌”(小幅下跌、低波动,本质上只是 CHOP),从而避免在有序回调中做空。
状态计算方式
Coyote 使用三个纯指标,全部来自 market_get_asset_data 的 4 小时 K 线:
- btc_7d_pct:最新 BTC 收盘价相对 42 根 4 小时 K 线前(7 天前)收盘价的百分比变化。
- realized_vol_pct:对数收益率标准差 × sqrt(2190) × 100(年化,4 小时 K 线假设 24/7 交易)。
- dispersion_pct:{BTC, ETH, SOL, HYPE} 近期收益率的横截面标准差。
随后通过一个四路分支 classify_regime(btc_move, vol, ...thresholds) 输出 TREND_UP / TREND_DOWN / CHOP / UNKNOWN。当输入数据缺失时触发 UNKNOWN。
使用方式与关键规则
- 始终发布状态:即使不交易(CHOP / UNKNOWN),生产者也会在 tick 结果中输出状态分类以及三项输入指标(BTC 7 天涨跌幅、已实现波动率、离散度)。操作者可以随时通过 tail /tmp/coyote-producer.log | jq .regime 读取。
- 离散度目前仅作信息展示:跨资产离散度会被计算并发布,但当前不进入门控逻辑。未来版本可能用它细化状态检测(例如高离散度加 BTC 走平等于“轮动状态”)。
- 生产者从不平仓:退出由 DSL 负责。Coyote 在状态转换时入场,DSL 跟踪止损在状态存续期间管理仓位。
- 状态具有持续性,避免频繁切换:per_asset_cooldown_minutes 为 360(6 小时),max_entries_per_day 为 2,防止 Coyote 因噪声来回翻转。真实状态可持续数天或数周,干净的分类不会逐 tick 变化。
适用场景
Coyote 适用于需要宏观状态判断作为交易门控的场景。当前操作者可以直接读取 Coyote 的状态视图,辅助手动决定启用或暂停哪些代理。未来(运行时工作待完成)其他代理将能够订阅 Coyote 的状态频道作为门控输入,例如 Tortoise 在 TREND_DOWN 时自动暂停、Stag 在 TREND_UP 时自动启用。“元路由”的定位在 v1 中属于愿景,Coyote 也进行自身的状态方向性交易,以使其判断与自身利益绑定。
限制
- 离散度指标当前不参与门控逻辑,仅作展示。
- 其他代理订阅 Coyote 状态频道的能力尚待运行时工作完成,v1 暂未提供。
- 元路由定位在 v1 中为愿景性质。
- 输入数据缺失时状态为 UNKNOWN。
其他信息
该技能采用 DSL 预设(balanced,标准平衡型)。它属于扫描器模式中的新原型 #16:状态分类器 / 元路由,相关说明见 senpi-trading-runtime/references/producer-patterns.md。主要 MCP 调用为针对每个 universe 资产的 market_get_asset_data(仅用于收盘价)。纯函数(pct_move、realized_vol_pct、dispersion_pct、classify_regime、regime_to_direction)在 tests/test_signal.py 中有单元测试。安装方式见 README.md。创建策略时应包含 skill_name 和 skill_version,详见 references/skill-attribution.md。
版本与许可
v1.0.0(2026-05-29)首次发布。这是首个围绕宏观状态分类作为一等能力构建的舰队代理,引入原型 #16(状态分类器 / 元路由),每个 tick 发布状态,进行自身的状态方向性押注,14/14 单元测试覆盖所有纯函数,采用 taker-true 入场、disown-safe 启动。许可为 MIT,Copyright 2026 Senpi(https://senpi.ai)。