分析金融事件对相关资产的历史影响。采用Kensho风格的事件驱动分析。适用于:询问资产对事件的反应(如油价等)
分析特定金融事件发生时相关资产的历史表现。类似 Kensho 的事件驱动分析:识别事件 → 查找历史先例 → 推论相关资产 → 分析历史表现。
输出: 中文分析报告 + 中文标注图表
每次执行前必须检查:
检查项命令失败修复中文字体fc-list :lang=zh family``sudo apt install fonts-wqy-microhei fonts-noto-cjkTUSHARE_TOKENecho $TUSHARE_TOKEN在 ~/.bashrc 中设置输出目录mkdir -p memory/reports/确保有写权限
自动检查: generate_charts.py 会自动执行前置检查,输出结果。
bash
pip install yfinance pandas numpy matplotlib tushare
图表使用中文标注,需要系统安装中文字体:
系统安装命令Ubuntu/Debiansudo apt install fonts-wqy-microhei fonts-noto-cjkCentOS/RHELsudo yum install wqy-microhei-fontsmacOS系统自带 PingFang SC / Heiti SCWindows系统自带 SimHei(黑体)
验证字体:
bash
# 查看可用中文字体
fc-list :lang=zh family
# matplotlib 查找字体
python3 -c "import matplotlib.font_manager; print([f.name for f in matplotlib.font_manager.fontManager.ttflist if 'Hei' in f.name or 'Noto' in f.name])"
备选字体优先级:
SimHei (黑体,Windows/macOS)WenQuanYi Micro Hei (Linux常用)Noto Sans CJK SC (现代Linux)PingFang SC (macOS)bash
export TUSHARE_TOKEN="your_token_here" # 注册: https://tushare.pro
export FRED_API_KEY="your_key_here" # 可选,用于 FRED 数据
目标: 创建本次分析的专用输出文件夹,放置在 workspace 目录下,避免污染 skill 目录。
命名规则: <indicator>_<YYYYMMDD>_<direction>
brent_crude_20260328_increase输出目录: ~/.openclaw/workspace/memory/reports/<analysis_folder>/
目录结构:
text
~/.openclaw/workspace/memory/reports/brent_crude_20260328_increase/
├── data/ # 中间数据文件
│ ├── brent_crude.json
│ ├── xle.json
│ └── jets.json
│ └── ...
├── charts/ # 图表文件
│ ├── brent_crude_vs_xle.png
│ ├── brent_crude_vs_jets.png
│ ├── performance_summary.png
│ ├── event_matrix_heatmap.png
│ └── charts_manifest.json
├── events.json # 相似事件列表
├── related.json # 相关资产推论
├── performance.json # 表现分析结果
└── report.md # 最终分析报告
执行:
bash
# 创建输出目录(使用 workspace 绝对路径)
OUTPUT_DIR="$HOME/.openclaw/workspace/memory/reports/brent_crude_20260328_increase"
mkdir -p "${OUTPUT_DIR}/data" "${OUTPUT_DIR}/charts"
目标: 将用户的事件描述映射到具体指标。
事件 → 指标映射表:
事件类型表征指标油价暴涨/暴跌brent_crude 或 wti_crude黄金价格变动gold利率变化us_10y_treasury 或 fed_funds_rateVIX/波动率飙升vix美元走强/走弱usd_index通胀变化cpi_us衰退信号unemployment_us美联储缩表fed_funds_rate + us_10y_treasury
执行:
bash
python scripts/fetch_indicator_data.py --list
目标: 获取表征指标 30+ 年时序数据。
执行:
bash
python scripts/fetch_indicator_data.py <indicator_id> --years 30 --output ${OUTPUT_DIR}/data/<indicator_id>.json --json
目标: 量化当前事件(变动幅度、方向、波动率)。
执行:
bash
python scripts/find_similar_events.py --data ${OUTPUT_DIR}/data/<indicator_id>.json --output ${OUTPUT_DIR}/events.json
已在 Step 3 完成, events.json 包含相似事件列表。
目标: 基于因果关系确定受影响资产,覆盖多个经济体, 不仅限于可交易的金融资产标的。
因果分析框架(扩展):
维度说明示例上下游供应链传导效应油价→能源股(受益)→航空股(受损)替代效应替代产品/服务油价涨→电动车需求↑互补效应联合需求模式油价涨→天然气联动金融关联资本流动、风险情绪美股波动→A股联动多经济体传导 ⭐ 核心跨市场传导美元走强→新兴市场资本流出宏观经济指标 ⭐ 核心非交易性指标传导油价暴涨→各国CPI/PPI/M2变化
多经济体分析范围 ⭐ 核心改动(必须覆盖):
经济体分析范围具体指标获取方式中国股指 + 宏观 + 利率 + 货币 + 汇率沪深300/创业板、CPI/PPI/GDP/PMI、LPR、M2/M1、USD/CNYTushare日本股指 + 利率 + 汇率 + 宏观日经225/TOPIX、10Y国债、USD/JPY、GDP/CPI/M2Yahoo Finance / FRED韩国股指 + 汇率 + 宏观KOSPI/KOSDAQ、USD/KRW、GDP/CPIYahoo Finance / FRED欧洲股指 + 利率 + 汇率 + 宏观斯托克50/DAX/CAC40/富时100、德国10Y、EUR/USD、GDP/CPI/M2Yahoo Finance / FRED亚太新兴股指 + 汇率恒生指数、印度Nifty、东南亚指数、汇率Yahoo Finance
⚠️ 强制要求: 每次分析必须覆盖以上所有经济体的 股市、宏观经济指标、利率、货币发行量、汇率 等维度,不仅限于可交易的金融资产标的(ETF、股票)。
多经济体因果映射 (详见 references/indicator_mapping.md):
事件类型中国影响日本影响韩国影响欧洲影响油价暴涨能源股受益,航空化工受损能源股受益,制造业受损能源股受益,化工受损能源股受益,航空汽车受损美元走强出口股受益,资本流出压力出口股受益,日元贬值出口股受益,韩元贬值出口股受益,欧元贬值利率上升银行保险受益,成长股受损银行股受益银行股受益银行股受益,地产股受损通胀上升抗通胀资产受益通胀摆脱通缩抗通胀资产受益抗通胀资产受益VIX飙升防守板块受益,成长股受损防守板块受益防守板块受益防守板块受益
执行:
bash
python scripts/infer_related_assets.py --indicator <indicator_id> --direction <increase|decrease> --multi-economy --output ${OUTPUT_DIR}/related.json
输出格式扩展:
json
{
"benefited": [
{"indicator": "xle", "reason": "能源ETF直接受益", "economy": "US"},
{"indicator": "csi300_energy", "reason": "中国能源板块受益", "economy": "China"},
{"indicator": "nikkei225_energy", "reason": "日本能源股受益", "economy": "Japan"}
],
"harmed": [
{"indicator": "jets", "reason": "航空ETF燃油成本上升", "economy": "US"},
{"indicator": "csi300_airline", "reason": "中国航空股成本上升", "economy": "China"},
{"indicator": "dax_auto", "reason": "德国汽车股成本上升", "economy": "Europe"}
],
"macro_indicators": [
{"indicator": "cpi_china", "reason": "油价上涨推升中国CPI", "economy": "China"},
{"indicator": "cpi_eurozone", "reason": "油价上涨推升欧元区CPI", "economy": "Europe"}
]
}
目标: 计算每类资产在各历史事件期间的表现。
执行:
bash
# 先获取所有相关指标数据
for indicator in $(cat ${OUTPUT_DIR}/related.json | jq -r '.benefited[].indicator, .harmed[].indicator'); do
python scripts/fetch_indicator_data.py $indicator --years 30 --output ${OUTPUT_DIR}/data/$indicator.json --json
done
# 分析各事件期间表现
python scripts/analyze_related_performance.py \
--events ${OUTPUT_DIR}/events.json \
--related ${OUTPUT_DIR}/related.json \
--data-dir ${OUTPUT_DIR}/data \
--output ${OUTPUT_DIR}/performance.json
目标: 可视化时序对比和表现统计,确保中文不乱码,X轴标签不重叠。
前置检查项:
检查项要求失败处理中文字体WenQuanYi/SimHei/Noto CJK 可用安装 fonts-wqy-microhei输出目录写权限正常检查目录权限matplotlib已安装pip install matplotlib
图表规范(核心改动):
图表类型内容格式要求时序对比图每类资产单独一张,双Y轴叠加中文标题/标签⭐ 强制每一项生成单独图表****表现汇总图各资产平均收益对比中文标注-事件矩阵图资产×事件收益矩阵中文热力图-
时序对比图增强功能 ⭐ 核心改动:
⚠️ 强制要求:
技术实现说明(关键代码):
python
# ⭐ 核心技术:使用 ax.get_xaxis_transform() 让矩形覆盖整个Y轴区域
rect = plt.Rectangle(
(mdates.date2num(start_date), 0), # Y=0(图表底部)
mdates.date2num(end_date) - mdates.date2num(start_date),
1, # Y高度=1(从底部到顶部,覆盖整个图表区域)
transform=ax1.get_xaxis_transform(), # ⭐ 关键:X轴数据坐标,Y轴axes坐标(0-1)
clip_on=False # 允许超出轴边界
)
原理: ax.get_xaxis_transform() 使用混合坐标系:
这样矩形会覆盖整个Y轴区域,无论表征指标的实际数值范围如何。
X轴间隔自适应规则:
数据跨度刻度间隔≤12个月每月≤24个月每季度≤60个月半年≤120个月每年>120个月每两年
执行:
bash
python scripts/generate_charts.py \
--primary-indicator <indicator_id> \
--primary-data ${OUTPUT_DIR}/data/<indicator_id>.json \
--events ${OUTPUT_DIR}/events.json \
--related ${OUTPUT_DIR}/related.json \
--performance ${OUTPUT_DIR}/performance.json \
--output-dir ${OUTPUT_DIR}/charts
目标: 生成完整中文分析报告,将所有时序对比图嵌入 Markdown。
报告结构:
图片嵌入格式:
markdown

执行:
bash
python scripts/generate_report.py \
--primary-indicator <indicator_id> \
--events ${OUTPUT_DIR}/events.json \
--related ${OUTPUT_DIR}/related.json \
--performance ${OUTPUT_DIR}/performance.json \
--charts-manifest ${OUTPUT_DIR}/charts/charts_manifest.json \
--output-dir ${OUTPUT_DIR} \
--output report.md
目标: 输出完整中文报告,向 chat 窗口展示报告内容和图表。
报告结构 (详见 references/report_template.md):
展示要求: 报告生成后,将完整内容输出到 chat 窗口,并附带已生成的图表图片。
文件名: <primary_indicator>_vs_<related_indicator>.png
结构:
text
┌─────────────────────────────────────────────┐
│ 油价 vs 能源ETF 历史走势对比 │ ← 中文标题
├─────────────────────────────────────────────┤
│ │
│ ┌───────┐ 红色虚线框 │
│ │事件区间│ 标记历史事件 │
│ └───────┘ │
│ │
│ 左Y轴: 油价(美元/桶) 右Y轴: 能源ETF价格 │ ← 双Y轴中文标注
│ ── 油价曲线 ── ETF曲线 │
│ │
├─────────────────────────────────────────────┤
│ 时间轴: 2010.01.01 - 2024.12.31 │ ← YYYY.MM.DD 格式
└─────────────────────────────────────────────┘
颜色规范:
格式: Markdown 表格,按时间从最新到最早排列
历史事件时间区间表征指标变动相关资产A相关资产B...事件1(最新)2024.03.15-2024.06.20🔴 +42%🔴 +15%🟢 -8%...事件22022.02.10-2022.04.05🔴 +38%🔴 +12%🟢 -5%...事件32020.03.09-2020.04.21🟢 -55%🟢 -28%🔴 +10%.....................
高亮规则:
详见 references/indicator_mapping.md:
类别可用指标大宗商品brent_crude, wti_crude, gold, silver, copper, aluminum, natural_gas美股指数sp500, nasdaq, dow_jones, russell2000, vix美股行业ETFxlk, xle, xlf, xlv, xli, jets, iyr, gdx, tlt外汇usd_cny, usd_index, eur_usd美债us_10y_treasury, us_2y_treasuryFRED宏观fed_funds_rate, cpi_us, gdp_us, unemployment_usA股指数csi300, sse_composite, chinext, sse50
oil_price_increase)#类别资产效果原因受益能源ETF (xle)↑收入增加受益黄金 (gold)↑通胀对冲受损航空ETF (jets)↓燃油成本增加受损工业ETF (xli)↓能源成本上升
gold_price_increase)#类别资产效果原因受益黄金矿业ETF (gdx)↑直接受益受益白银 (silver)↑贵金属联动受损股市 (sp500)↓避险信号受损金融ETF (xlf)↓风险规避
interest_rate_increase)#类别资产效果原因受益金融ETF (xlf)↑利差扩大受益美元指数 (usd_index)↑资本流入受损债券ETF (tlt)↓利率上升受损REITs (iyr)↓融资成本受损成长股 (nasdaq)↓估值压制
vix_increase)#类别资产效果原因受益防守板块 (xlp, xlv)↑避险受益黄金 (gold)↑风险规避受损股市 (sp500)↓风险规避受损金融ETF (xlf)↓风险规避
fed_balance_sheet_reduction)#类别资产效果原因受益美元指数 (usd_index)↑流动性收紧受益金融ETF (xlf)↑利差扩大受损债券ETF (tlt)↓收益率上行受损成长股 (nasdaq)↓流动性压制
用户输入: "分析历史上油价快速上涨后各类资产的表现情况"
工作流程:
~/.openclaw/workspace/memory/reports/brent_crude_20260328_increase/brent_crude${OUTPUT_DIR}/data/brent_crude.json${OUTPUT_DIR}/events.json${OUTPUT_DIR}/related.json${OUTPUT_DIR}/performance.json${OUTPUT_DIR}/charts/${OUTPUT_DIR}/report.mdreferences/indicator_mapping.md: 完整指标列表和数据源references/report_template.md: 中文报告模板结构