Install
openclaw skills install @haoge10241024/trading-agents-for-futures期货六维分析数据引擎。两种运行模式: (1) 数据模式:python main.py -s RB → 结构化 JSON 指标 + data_gap_report(数据缺口报告 + AI 搜索指令) (2) 决策模式:python main.py -s RB --decision → 指标 + 数据来源追溯 + 多空辩论 + 风控 + CIO决策报告 零 API Key,纯规则引擎。API 缺失时自动生成 search_actions,AI Agent 可按 fillability 回填 ai_fill 槽位。
openclaw skills install @haoge10241024/trading-agents-for-futures你是哪种用户?根据你的身份选择对应模式。
| 如果你 | 用这个命令 | 你会得到 |
|---|---|---|
| 是 AI Agent(Kimi/Claude/GPT-4 等),需要结构化数据自己分析判断 | python main.py -s RB | 纯指标 JSON(MA/MACD/RSI/Z-score/净持仓...),无方向判断 |
| 是人类交易者,需要直接看"多空辩论报告 + 操作建议" | python main.py -s RB --decision | 指标数据 + 口语化多空辩论 + 裁判长裁决 + 仓位/止损建议 |
# 默认:数据模式(给 AI Agent 用)
python main.py -s RB
# 决策模式:辩论 + 风控 + CIO 建议(给人类看)
python main.py -s RB --decision
# 批量分析多个品种
python main.py -s RB,CU,M
# 全市场扫描 38 个品种
python main.py -s ALL
执行后输出纯 JSON(字段含义见下文)。首次运行会自动下载约 1 年历史数据,耗时 5~10 分钟;后续秒级。
{
"symbol": "RB",
"timestamp": "2026-05-14T15:43:59",
"success": true,
"analysis_details": {
"technical_analysis": {
"close": 3257.0,
"MA5": 3266.8,
"MA20": 3192.1,
"MA60": 3131.7,
"EMA20": 3207.3,
"MACD": 37.8,
"MACD_Signal": 30.8,
"MACD_Hist": 7.0,
"RSI14": 70.5,
"BB_Upper": 3312.0,
"BB_Middle": 3192.1,
"BB_Lower": 3072.1,
"ATR14": 30.2,
"VOL_MA20": 685669,
"OI_delta": -49216,
"trend_20d": "up",
"change_20d_pct": 5.1,
"data_points": 245
},
"basis_analysis": {
"spot_price": 3280.0,
"futures_price": 3260.0,
"current_basis": -20.0,
"basis_pct": -0.6,
"basis_zscore_180d": -0.8,
"structure": "backwardation"
},
"term_structure_analysis": {
"front_contract": "RB2605",
"back_contract": "RB2704",
"front_price": 3150,
"back_price": 3307,
"spread": 157,
"spread_pct": 5.0,
"structure": "contango"
},
"inventory_analysis": {
"latest_inventory": 520000,
"inv_change_wow": 0.7,
"inv_change_mom": -2.3,
"inv_zscore_180d": 1.6,
"latest_warehouse_receipt": 82000,
"wr_change_5d": 1500
},
"positioning_analysis": {
"net_position": -3367,
"net_change": -3466,
"concentration_idx": 0.0068,
"top20_long": 245143,
"top20_short": 241185,
"top20_long_pct": 0.5041,
"top20_members_count": 20
},
"news_analysis": {
"total_news_count": 10,
"bullish_news_count": 1,
"bearish_news_count": 0,
"neutral_news_count": 9,
"sentiment_ratio": 0.1
}
}
}
输出是纯指标字典,不含任何方向判断、置信度评分、辩论文本。 每个 skill 的本地规则逻辑(
_rule_based_signal)仍在内部运行但不对外暴露。
你是 AI 分析师,以下是你可以用来解读数据的完整方法论。
technical_analysis)数据指标: close, MA5/MA20/MA60, EMA20, MACD/Signal/Hist, RSI14, BB_Upper/Middle/Lower, ATR14, VOL_MA20, OI_delta, trend_20d, change_20d_pct
分析框架(你需要做的):
basis_analysis)数据指标: spot_price, futures_price, current_basis, basis_pct, latest_basis, basis_zscore_180d, basis_slope_20d, structure(contango/backwardation/flat)
分析框架(你需要做的):
term_structure_analysis)数据指标: structure(contango/backwardation/flat), front_contract/back_contract, front_price/back_price, spread, spread_pct, carry_score, 各合约间价差(spread_xxx)
分析框架(你需要做的):
inventory_analysis)数据指标: latest_inventory(吨), inv_change_wow(%), inv_change_mom(%), inv_zscore_180d, latest_warehouse_receipt(吨), wr_change_5d(吨)
分析框架(你需要做的):
positioning_analysis)数据指标: net_position(手), net_change(手), concentration_idx, top20_long(手), top20_short(手), top20_long_pct, top20_short_pct, data_points, key_players(可选的乾坤/摩根等外资席位标记)
分析框架(你需要做的):
基于前 20 名会员持仓变动数据追踪机构资金意图:
news_analysis)数据指标: total_news_count, bullish_news_count, bearish_news_count, neutral_news_count, sentiment_ratio
分析框架(你需要做的):
API 拿不到的,诚实地标出来。能搜的搜,搜不到的不编。
┌─ API 命中 ──→ 输出数据,标记 data_source: "api"
数据需求 ─┤
└─ API 失败 ──→ 生成 data_gap_report ──→ fillable? ──→ AI 搜 → 回填 ai_fill (参与评分)
──→ direction_only? ──→ AI 搜 → 回填 ai_fill (×0.30~0.50 降权)
──→ 每次搜不到 ──→ 标 status: "empty",权重保持 0
价格、持仓手数、库存吨数、基差数值。这些数字必须来自 API 或官方来源。 不能编造。
新闻事件、政策变化、天气影响、地缘风险、行业开工率。
当 coverage.available < coverage.total 时,输出 JSON 的顶层包含 data_gap_report:
{
"data_gap_report": {
"total_gaps": 2,
"summary": {"fillable": 1, "direction_only": 1, "not_fillable": 0},
"gaps": [
{
"skill": "news_analysis",
"skill_cn": "新闻情绪",
"fillability": "fillable",
"ai_fill_weight_multiplier": 0.90,
"search_actions": [
{"query": "JD 鸡蛋 期货 新闻 2026年5月", "source": "web", "priority": "high"}
],
"ai_fill_schema": {
"fields": ["bullish_news_count", "bearish_news_count", "sentiment_ratio"],
"cannot_fill": []
}
},
{
"skill": "term_structure_analysis",
"skill_cn": "期限结构",
"fillability": "direction_only",
"ai_fill_weight_multiplier": 0.30,
"search_actions": [
{"query": "JD 期货 期限结构 contango backwardation", "source": "web", "priority": "high"}
],
"ai_fill_schema": {
"fields": ["structure"],
"cannot_fill": ["contracts", "prices", "spread_pct"]
}
}
]
}
}
data_gap_report,对每个 gap 执行 search_actions 中的搜索ai_fill_schema 回填到对应 analysis_details[skill].ai_fill:"ai_fill": {
"filled_at": "2026-05-18T12:00:00",
"source": "web_search",
"fillability_tier": "fillable",
"weight_multiplier": 0.90,
"confidence": "high",
"data": {
"bullish_news_count": 3,
"bearish_news_count": 1,
"sentiment_ratio": 0.2
},
"urls": ["https://...来源URL..."],
"note": "搜索结果摘要"
}
cannot_fill 中的字段绝不要编造(如期限结构的 spread_pct)weight_multiplier 从 gap 中的 ai_fill_weight_multiplier 复制当任何维度的 analysis_details 中出现以下信号时,你(AI Agent)必须立即启动搜索:
| 信号 | 含义 | 行动 |
|---|---|---|
"data_source": "insufficient" | API 有数据但太弱 | 搜索补充,API 和 AI 搜索结果合并输出 |
"status": "empty" | API 完全无数据 | AI 搜索成为该维度唯一数据源 |
"soft_data_hint" 字段存在 | 该维度给了搜索指引 | 按指引关键词搜索 |
coverage.available < coverage.total | 有维度缺失 | 检查缺失维度并搜索 |
| 品类 | 搜索模板 | 重点关注 |
|---|---|---|
| 黑色系(RB/HC/I/J/JM) | {品种名} {月份}月 2026 期货 库存 开工率 政策 检修 | Mysteel、钢厂检修、房地产政策、铁矿石发运 |
| 贵金属(AU/AG) | 沪{金/银} {月份}月 2026 COMEX库存 美联储 地缘 光伏需求 | COMEX/上金所库存、CFTC持仓、避险事件、工业需求 |
| 有色金属(CU/AL/ZN) | 沪{铜/铝/锌} {月份}月 2026 库存 LME 升贴水 矿端 | 三大交易所库存、TC/RC、矿端停产 |
| 农产品(M/RM/Y/CF/SR) | {豆粕/菜粕/豆油/白糖} {月份}月 2026 进口 天气 库存 USDA | USDA报告、海关数据、压榨利润、天气模型 |
| 能源化工(SC/FU/MA/TA/PP) | {品种} {月份}月 2026 开工率 装置检修 港口库存 OPEC | 装置动态、开工率、港口库存、原油政策 |
搜索完成后,将搜索结果合并入对应维度的 JSON:
"inventory_analysis": {
"data_source": "mixed",
"api": {
"status": "N/A",
"reason": "AKShare 不支持 AG 库存数据"
},
"ai_search": {
"search_query": "沪银 库存 上金所 注册仓单 2026年5月",
"content_count": 8,
"key_findings": [
"上金所白银库存 1,782 吨,环比-3.2%(来源:上金所官网,5月16日)",
"COMEX 白银库存 11,200 吨(来源:CME Group,5月15日)"
],
"assessment": "库存处于中等偏低水平,对银价构成支撑"
}
}
| 情况 | 处理 |
|---|---|
| API 有数但不足(quality: insufficient) | API 数据 + AI 搜索补充,data_gap_report 标记为 fillable |
| API 完全无数(status: empty) | data_gap_report 标记为 direction_only 或 fillable,AI 搜索按 ai_fill_schema 回填 |
| AI 搜索也找不到 | ai_fill.data 留空,confidence: "low",维度降权 |
| 最终仍有维度缺失 | 该维度 weight × 0,不参与 scoring |
| 级别 | 含义 | AI 搜索后评分权重 | 示例 |
|---|---|---|---|
fillable | 公开信息充足,可补全大部分字段 | ×0.75~0.90 | 新闻情绪(0.90)、基差(0.75) |
direction_only | 只能拿定性方向,Z-score/精确数字不可补 | ×0.30~0.50 | 库存方向(0.50)、期限结构(0.30)、持仓(0.30) |
not_fillable | 保留分类,当前版本所有维度均可搜索 | ×0 | — |
输出中每个维度都有数据来源和时效标记。
| 标记 | 含义 | AI Agent 应对 |
|---|---|---|
data_source: "api" | 来自 AkShare 实时数据接口 | 直接使用 |
data_source: "api_fallback" | API 当日不可用,自动回退至前一交易日 | 查看 data_gap_report,确认是否需要 AI 搜索验证 |
data_source: "api_all_neutral" | 关键词匹配全部判定为中性 | 按 data_gap_report 中的 search_actions 搜索补充 |
data_source: "insufficient" | 样本不足 | 按 ai_fill_schema 回填到 ai_fill 槽位 |
data_quality: "stale" | 数据过期回退 | 辩论中权重自动折半 |
data_quality: "low_value" | 全中性/低质量 | 辩论中权重自动 ×0.3 |
所有数字必须是 JSON 原生类型,不能是 numpy/pandas 特殊类型。
本引擎内部使用四维动态权重(品种品类 × 置信度 Sigmoid × 市场状态自适应 × 数据质量折损):
| 品类 | 核心驱动模块 |
|---|---|
| 黑色系(RB/HC/I/J/JM) | 库存(1.3x) > 持仓(1.2x) > 技术面(1.0x) |
| 贵金属(AU/AG) | 技术面(1.3x) > 持仓(1.2x) > 新闻(1.1x) |
| 有色金属(CU/AL/ZN/NI) | 期限结构(1.2x) > 基差(1.1x) > 库存(1.1x) |
| 化工(MA/TA/EG/PP等) | 基差(1.2x) > 期限结构(1.2x) > 技术面(1.0x) |
| 农产品(M/RM/Y/CF/SR/JD等) | 库存(1.3x) > 新闻(1.2x) > 基差(1.1x) |
| 能源(SC/FU/LU/PG) | 新闻(1.3x) > 技术面(1.0x) > 期限结构(1.1x) |
回退数据、AI 补全数据自动降权:
| 数据状态 | 权重乘数 |
|---|---|
| API 历史回退 | ×0.5 |
| AI 补全 fillable(新闻/基差) | ×0.75~0.90 |
| AI 补全 direction_only(库存方向/期限结构/持仓) | ×0.30~0.50 |
| 完全缺失 | ×0(不参与评分) |
拿到 6 个维度的结构化数据后,你应该:
--decision 模式输出中包含 risk_assessment)当运行 --decision 模式时,输出 JSON 的 risk_assessment 字段包含完整的风控评估结果。你需要理解并整合这些信息:
| 字段 | 含义 |
|---|---|
risk_level | 风险等级:low / medium / high |
approval | 审批状态:approved / conditionally_approved / rejected |
max_position_pct | 风控允许的最大仓位 |
max_risk_score | 综合风险评分(0~3,越高越危险) |
risk_factors | 触发的风险因素列表 |
conditions | 交易条件(必须满足才能执行) |
stop_loss_advice | 止损建议 |
position_advice | 仓位建议 |
风控引擎从五个维度独立评估风险,你解读时应对每个维度独立关注:
| 审批结果 | 含义 | 你的行动 |
|---|---|---|
approved | 通过 | 可按正常仓位执行 |
conditionally_approved | 条件批准 | 必须列出交易前置条件(如"必须严格止损""建议分批建仓"),条件不满足则不执行 |
rejected | 否决 | 强制 hold,任何情况下不得建议交易。即使 6 维度全部看涨,风控一票否决也必须服从 |
风控总监独立于交易决策链,不关心方向,只关心风险。读取风控报告时你应该:
在综合 6 维度分析 + 多空辩论 + 风控评估后,你(作为 AI Agent 的决策者角色)需要输出最终决策。参考以下框架:
| 要素 | 要求 |
|---|---|
| 方向判断 | long / short / neutral,必须明确,不能模糊 |
| 操作建议 | buy / sell / hold,与方向对应 |
| 信心水平 | 0%~100%,基于加权信号强度和分歧度。信心 < 25% 时必须建议观望或极低仓位 |
| 建议仓位 | 占资金百分比。分歧度 ≥ 30% → 不超过 5%;分歧度 < 15% + 信号强 → 可到 15% |
| 止损位 | 基于 ATR 或关键支撑/阻力。一般品种 1.5%~3%,高波动品种可放宽到 4% |
| 止盈位 | 参考最近阻力/支撑,或固定盈亏比(≥2:1) |
| 监控要点 | 列出最关键的风险因子和需要持续关注的指标变化 |
风控 rejection → 最终决策强制 hold,不可覆盖
信心 < 15% → 强制 hold,即使方向明确
仓位超过风控 max_position_pct → 以风控上限为准
--decision 模式输出的 reasoning 数组包含完整的多空辩论实录,结构为:
解读时注意裁判长的用词等级:
| 代码 | 品种 | 交易所 | 代码 | 品种 | 交易所 |
|---|---|---|---|---|---|
| RB | 螺纹钢 | SHFE | HC | 热卷 | SHFE |
| CU | 沪铜 | SHFE | AL | 沪铝 | SHFE |
| AU | 沪金 | SHFE | AG | 沪银 | SHFE |
| M | 豆粕 | DCE | RM | 菜粕 | CZCE |
| I | 铁矿石 | DCE | J | 焦炭 | DCE |
| MA | 甲醇 | CZCE | TA | PTA | CZCE |
| SC | 原油 | INE | FU | 燃料油 | SHFE |
| LH | 生猪 | DCE | SR | 白糖 | CZCE |
cache/ 目录,删除可重新获取你的输出形式是"期货投资决策委员会会议实录"——六个分析师依次发言,裁判长最终裁决。
**、#、-),纯文本输出每个分析维度有一个独立角色,在陈述时使用以下身份和语气:
| 角色 | 口头禅 / 特征 | 语气 |
|---|---|---|
| 技术面分析师 | "盯着屏幕猛敲键盘" | 语速快,数字密集,"金叉""死叉""超买超卖"张口就来 |
| 基差分析师 | "推了推眼镜" | 严谨克制,每个结论必带基差率或 Z-score 数值 |
| 期限结构分析师 | "翻开跨期价差表" | 冷静派,用 Full Carry 理论说话,爱算展期收益 |
| 库存分析师 | "冷笑一声" | 只认库存周期理论,看 Z 分位定多空,语气傲慢但每个字都有数据 |
| 持仓分析师 | "调出会员持仓排名" | 追踪"聪明钱",关注前20会员动向,讲究量仓配合 |
| 新闻分析师 | "刷着最新资讯" | 情绪敏感,能从标题里嗅出利多利空,但也坦诚信息不足时不下判断 |
| 裁判长 | "合上案卷" 或 "摇头" 或 "沉吟片刻" | 权威、克制、不站队。综合各方论述做出最终裁决,给出明确的方向、仓位和止损建议 |