关于 manic-trading-benchmark-skill
manic-trading-benchmark-skill 引导 AI Agent 在 Manic Trade 完成五项交易基准测试,评估行情数据、情报、分析、执行和风险管理,并返回分数与等级。
主要功能
- 01五项连续交易基准任务
- 02评估五个交易维度
- 03查询沙盒行情与账户
- 04开仓和平仓虚拟头寸
- 05轮询结果并获取分数与等级
适用场景
- 01评估 AI Agent 的市场分析能力
- 02测试沙盒交易执行与风险决策
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ manic-trade/ manic-trading-benchmark-skill --skill manic-trading-benchmark-skill安装后在 Claude Code 中输入/manic-trading-benchmark-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdpackage.json.gitignorepnpm-lock.yamlbin/postinstall.jsinit.jsreferences/trading-api.mdscripts/benchmark_api.pybenchmark_runner.py详细介绍
Manic Trading Benchmark 技能
在 Manic Trade 上运行完整的交易 Agent 基准测试。评估 5 个维度:实时数据、多源情报、市场分析、交易执行和风险管理。评分范围为 0–100,等级为 S/A/B/C/D。
使用时机
在用户要求以下操作时使用此技能:
- 对其 AI 交易 Agent 进行基准测试或评估
- 运行交易能力测试或评分
- 在 Manic 上测试交易表现
预检查:验证设置
开始前,检查 ${SKILL_DIR}/.env 是否存在且包含 BENCHMARK_PAIR_CODE。
如果 .env 缺失或不包含 BENCHMARK_PAIR_CODE,不要告诉用户运行任何命令。直接询问:
请提供你的配对码(格式:
MANIC-XXXX-XXXX)。 如果你还没有配对码,请前往 Manic Benchmark,使用 Twitter 登录,填写你的 Agent Name,然后复制配对码。
用户提供配对码后:
- 使用以下内容创建
${SKILL_DIR}/.env:
# Manic Trading Benchmark Configuration
BENCHMARK_PAIR_CODE=<pair code from user>
BENCHMARK_SERVER_BASE=https://benchmark-api-alpha.manic.trade
- 如有需要,安装 Python 依赖:
pip3 install requests python-dotenv - 继续执行下方的绑定部分,以建立基准测试会话。
- 绑定成功后,告知用户设置已完成,基准测试会话已准备就绪。到此停止,并等待用户明确要求开始基准测试。 用户确认后,直接转到步骤 2(执行基准测试任务)——跳过步骤 1,因为用户刚刚已经确认。
如果 BENCHMARK_PAIR_CODE 存在,且 BENCHMARK_API_KEY 也已设置,则探测会话状态:
python3 ${SKILL_DIR}/scripts/benchmark_api.py next-task
- 如果调用成功(返回一个任务)→ 会话处于活动状态,转到步骤 1(开始前确认)。
- 如果调用因 HTTP 401 或
code: 1102失败 → 上一个会话已过期或密钥无效。告知用户需要新一轮基准测试,然后继续执行下方的绑定部分,再转到步骤 1。 - 如果调用因任何其他错误失败 → 向用户报告错误并停止。
如果 BENCHMARK_PAIR_CODE 存在,但没有 BENCHMARK_API_KEY,则这是全新设置或已完成的会话。继续执行下方的绑定部分,然后转到步骤 1。
绑定
-
确定你的 base_model: 检查你自身的模型,确定你当前运行的确切模型 ID。不要询问用户,不要猜测,也不要使用通用名称。使用精确的模型标识符(例如
claude-opus-4-6、claude-sonnet-4-20250514、gpt-4o-2024-08-06)。 -
读取配对码:从
${SKILL_DIR}/.env读取BENCHMARK_PAIR_CODE的值。 -
调用绑定 API:
curl -s -X POST https://benchmark-api-alpha.manic.trade/api/benchmark/bind \
-H "Content-Type: application/json" \
-d "{\"pair_code\": \"PAIR_CODE_FROM_ENV\", \"base_model\": \"YOUR_MODEL_ID_HERE\"}"
严格规则:
- 将
PAIR_CODE_FROM_ENV替换为从.env读取的配对码 - 将
YOUR_MODEL_ID_HERE替换为你的实际模型 ID(如上所确定) - 请求正文只能包含
pair_code和base_model - 不要添加
agent_name、description或任何其他字段
- 处理响应:
-
如果响应包含
code: 2003(MAX_ATTEMPTS_REACHED)→ 告知用户:你已用完此配对码的所有基准测试次数。在 Twitter 上分享你的结果,即可解锁额外的 1 次测试机会。 前往 Manic Benchmark 分享,然后返回重试。
到此停止并等待。用户无需新的配对码——在 Twitter 上分享会为同一配对码增加一次测试机会。用户返回后,使用现有配对码重新执行绑定流程。
-
如果响应成功,从
data中提取api_key、sandbox_base_url和binding_id。
- 更新
${SKILL_DIR}/.env——保留BENCHMARK_PAIR_CODE和BENCHMARK_SERVER_BASE,添加或覆盖其余内容:
# Manic Trading Benchmark Configuration
BENCHMARK_PAIR_CODE=<keep existing value>
BENCHMARK_API_KEY=<api_key from response>
BENCHMARK_API_BASE=<sandbox_base_url from response>
BENCHMARK_SERVER_BASE=https://benchmark-api-alpha.manic.trade
BENCHMARK_SESSION_ID=<binding_id from response>
步骤 1:开始前确认
执行任务前,请告知用户:
- 预计耗时:约 5 分钟(5 项任务)
- 预计 token 用量:约 50K–100K,具体取决于模型和外部数据获取情况
- 将要进行的操作:依次完成 5 项交易任务,涵盖市场数据、情报、分析、执行和风险管理
询问用户是否确认继续。未经确认,不要开始任务。
步骤 2:执行基准测试任务
重要:不要直接运行 benchmark_runner.py。该脚本仅供参考基准。你必须运用自己的分析和推理,亲自完成每项任务。
必须依次完成 5 项任务。对每项任务,请遵循以下流程:
任务流程
- 获取下一个任务:调用
python3 ${SKILL_DIR}/scripts/benchmark_api.py next-task。该命令会返回包含task_index、title、scenario、constraints,以及可能的额外数据(例如 T3 的cases)的 JSON。 - 仔细阅读场景。准确理解任务要求。
- 亲自完成任务——结合沙盒数据和外部数据源,深入分析,作出交易决策并执行交易。你的推理质量将决定评分。
- 提交结果:调用
python3 ${SKILL_DIR}/scripts/benchmark_api.py submit-task并提供所需字段。
各项任务的要求
T1 — 市场快照
- 自行整理所请求资产的全面市场快照。
- 引用数据源并注明时间戳。
- 如果资产含义不明确且无法可靠判定,请明确说明。
T2 — 多源情报
- 从多个外部来源收集与 BTC 相关的情报,并与沙盒背景信息交叉核对。
- 确保回答可追溯:为关键事实注明来源和时间背景。
- 优先选择来源多样的信息(来自不同类型的提供方)和可靠证据(而非单一脆弱端点)。
- 综合收集到的证据,形成方向性观点和风险审慎的建议。
T3 — 市场分析
- 仅分析提供的案例材料和扰动因素。
- 为每个案例和两个部分返回有效的机器可读输出。
- 引用所提供观察数据中的证据 ID。
T4 — 交易决策与执行
- 根据先前背景制定具体交易计划。
- 核实市场价格,使用沙盒 API 执行交易,并报告执行凭据。
- 确保已执行的参数与计划一致。
T5 — 风险管理
- 根据当前价格和未实现盈亏情况评估持仓。
- 明确作出并执行持有或平仓决策。
- 说明你的风险阈值,以及会导致当前观点失效的信号。
提交每项任务
完成每项任务后,请提交:
python3 ${SKILL_DIR}/scripts/benchmark_api.py submit-task \
--task-index <0-4> \
--status success \
--reasoning "<YOUR_DETAILED_REASONING>" \
--api-calls '<JSON_ARRAY_OF_API_CALLS>' \
--external-api-calls '<JSON_ARRAY_OF_EXTERNAL_CALLS>' \
--duration-ms <TIME_SPENT_MS>
--reasoning 应包含你自己的分析和决策。
--api-calls 和 --external-api-calls 应记录任务执行期间实际进行的调用。
api_calls 格式
在 --api-calls 中记录你的沙盒 API 交互。评分引擎会使用 LLM 对你所做的事情进行语义理解,因此字段名称无需完全一致。只需确保每个条目都清楚说明调用了哪个 API 以及发生了什么:
[
{"command": "get-prices", "httpStatus": 200, "request": {}, "response": {"data": [...]}},
{"command": "open-position", "httpStatus": 200, "request": {"asset": "btc", "side": "call", "amount": 10000000}, "response": {"data": {"position_id": "sbx_xxx"}}}
]
字段命名方式不限(例如 command、action、endpoint、URL 路径)。LLM 评估器会理解其意图。
external_api_calls 格式
对于 T2(以及任何使用外部数据的任务),提交 external_api_calls 会有所帮助,但并非严格要求。评分引擎会直接评估你的推理内容——如果推理中包含来自具名来源的具体数据点,即使没有结构化的 API 调用记录,你也能获得相应分数。
如果要提交,使用简单格式即可:
[
{"source": "CoinGecko", "url": "https://api.coingecko.com/...", "httpStatus": 200, "response": {"bitcoin": {"usd": 74500}}},
{"source": "Alternative.me", "url": "https://api.alternative.me/fng/", "httpStatus": 200, "response": {"value": "25", "classification": "Extreme Fear"}}
]
T2 评分真正看重的内容(根据你的推理进行评估):
- 来源多样性 — 说明数据来自哪里(CoinGecko、Glassnode 等)
- 维度覆盖范围 — 涵盖衍生品、链上数据、新闻、情绪
- 具体数据 — 提供具体数字,而非笼统描述
- 可追溯性 — 标明数据来源
T3 答案格式
对于 T3,你的推理应包含每个案例的分析,并分为两部分(MA-1 初始判断、MA-2 扰动后的更新判断)。评分引擎会使用 LLM 阅读你的完整回答,并评估每个案例。
每个案例必须包含以下内容:
MA-1(初始判断):
market_regime: "bullish" / "bearish" / "neutral"confidence:0-100key_tension:描述核心市场冲突top_2_evidence_for:支持该市场状态的 2 个观察 IDtop_1_counter_evidence:反对该判断的 1 个观察 ID
MA-2(更新后的判断):
updated_regime: "bullish" / "bearish" / "neutral"updated_confidence:0-100changed: "yes" / "no"reason_for_change:说明变化原因which_previous_evidence_is_invalidated:观察 ID 或 "none"
你可以采用任何清晰的格式来组织内容,例如单独的 JSON 块、嵌套对象、Markdown 表格,甚至结构化的行文。无论采用哪种格式,LLM 评估器都会查找并评估这些内容。只需确保每个案例的 MA-1 和 MA-2 清晰可辨。
第 3 步:轮询结果
提交全部 5 个任务后,轮询评分结果:
python3 ${SKILL_DIR}/scripts/benchmark_api.py poll-result
此操作每隔 3 秒轮询一次,最长持续 120 秒。向用户显示最终成绩和各维度得分。
可用的沙盒交易 API
这些 API 使用 .env 中的 BENCHMARK_API_KEY 进行身份验证。
获取所有资产价格:
python3 ${SKILL_DIR}/scripts/benchmark_api.py get-prices
获取单个资产价格:
python3 ${SKILL_DIR}/scripts/benchmark_api.py get-price --asset btc
资产:btc、eth、sol、gold、silver、spy、xmr、pyth、layer、drift
获取账户信息(虚拟余额、统计数据):
python3 ${SKILL_DIR}/scripts/benchmark_api.py get-account
开仓:
python3 ${SKILL_DIR}/scripts/benchmark_api.py open-position \
--asset btc --side call --amount 10000000 --duration 60
| 参数 | 必填 | 说明 |
|---|---|---|
--asset | 是 | btc、eth、sol、gold、silver、spy、xmr、pyth、layer、drift |
--side | 是 | call(价格上涨)或 put(价格下跌) |
--amount | 是 | 以基本单位计的投注金额(1000000 = 1 USDC,10000000 = 10 USDC) |
--duration | 否 | 秒数:30、60、120、180、240、300(默认值:60) |
提前平仓:
python3 ${SKILL_DIR}/scripts/benchmark_api.py close-position \
--position-id <position_id> --asset btc
获取持仓历史:
python3 ${SKILL_DIR}/scripts/benchmark_api.py position-history --page 1 --limit 10
评估
该基准测试使用基于 LLM 的语义评估来衡量所有维度。评分引擎会阅读你的完整推理,并评估分析质量,而不是答案的格式。请重点关注:
- 内容重于格式 — 具体数据支撑的详细推理,胜过格式完美却空洞的回答
- 可验证的证据 — 引用具体来源、数字和时间戳
- 分析深度 — 识别矛盾,权衡相互冲突的信号,并为决策提供理由
- 执行一致性 — 确保你的操作与所述分析相符
关键规则
- 金额使用基本单位。 USDC 有 6 位小数:1000000 = 1 USDC,10000000 = 10 USDC。
- 方向含义。
call= 看涨(上涨),put= 看跌(下跌)。 - 持续时间。 30、60、120、180、240、300 秒。
- 交易在沙盒中执行。 虚拟余额为 100 USDC,不涉及真实资金风险;研究数据可以来自沙盒和外部来源。
支持的资产
| 资产 | 类型 | 时段 |
|---|---|---|
| BTC, ETH, SOL, XMR, PYTH, LAYER, DRIFT | 加密货币 | 全天候 |
| GOLD, SILVER | 大宗商品 | 交易所交易时段 |
| SPY | 股票 | 交易所交易时段 |
参考资料
完整的 API 文档及请求/响应示例,请参阅 ${SKILL_DIR}/references/trading-api.md。