financialprice
可视化对比各关注标的的价格变动趋势,并进一步分析各标的价格变化及回撤。 覆盖 A股 / 港股 / 美股,支持原始值/归一值切换、回撤区间标注(阈值默认 5%,可自定义)、周期涨跌幅拖选测算。 当前版本:1.1.0
这是什么
当你想对比多个标的的历史价格走势,或分析单个标的的回撤与区间表现时,这个 skill 会:
- 从配置数据源(MCP 优先:westock-mcp / tdx-connector;akshare / yfinance 兜底)取历史收盘价;
- 生成一份规范 CSV(所有标的合并、含非交易日行、标注货币单位);
- 生成一个交互式 Plotly 看板(HTML),包含:
- 汇总对比图:默认显示归一值(首日=100),可切换为原始值;右侧提示框不重叠;区间涨跌幅模式默认关闭。
- 单标的回撤图:价格线叠加红色阴影回撤区间,支持「价格 / 回撤(水下)」视图切换;下方列示回撤起止、持续天数、最大回撤、峰顶值、谷底值。
- 周期涨跌幅拖选:开启后拖选任意图表,右侧提示框显示起止日期与区间涨跌幅。
适合谁
- 需要横向对比几只股票/指数/ETF 价格形态的投资者或分析师;
- 想快速定位某标的「历史上回撤超过 5% 都发生在什么时候」的人。
不适合谁 / 边界
- 本 skill 只做历史价格可视化与测算,不构成投资建议;
- 不含实时行情、不含基本面/财报分析;回撤阈值默认 5%,可用
--threshold自定义。
触发方式
- 关键词:分析价格变化趋势、分析回撤、价格走势对比、回撤分析、价格变动可视化、标的涨幅对比
- 或自然语言描述「对比这几只股票的价格走势 / 看看这只基金的历史回撤」。
发布元数据(SkillHub)
发布到 SkillHub 社区源时,SKILL.md frontmatter 包含以下市场元数据:
- slug:
financialprice - displayName:
多标的价格对比及回撤分析 - summary:可视化对比 A股/港股/美股多标的的价格走势与回撤,支持原始值/归一值一键切换、自定义回撤阈值、周期涨跌幅拖选测算。
- tags:金融 / 股票 / 可视化 / 回撤分析
文件结构
financialprice/
├── SKILL.md # 路由 + 工作流 + 数据源强约束
├── README.md # 本文件(当前版本 1.1.0)
├── CHANGELOG.md # 版本变更记录
├── DESIGN.md # 架构与决策
├── assets/
│ └── dashboard_template.html # 看板 HTML 模板(build_dashboard.py 注入数据)
├── data/
│ └── sources.yaml # 数据源配置与禁止项
├── references/
│ ├── data-sources.md # 市场/代码/货币映射 + raw_prices.json schema
│ └── chart-spec.md # 看板交互实现细则(维护参考)
├── scripts/
│ ├── markets.py # 市场/货币/代码识别单一数据源(fetch_data.py 复用)
│ ├── fetch_data.py # 兜底取数(akshare / yfinance)→ raw_prices.json
│ └── build_dashboard.py # raw_prices.json → CSV + HTML 看板
└── tests/
└── test.py # 自动测试(纯标准库)
快速开始
数据获取分两条路径,优先走 MCP:
- 主路径(推荐):由 Agent 在对话中直接调用 MCP(
westock-mcp的data_kline/tdx-connector的tdx_kline)取日级收盘价,按references/data-sources.md的 schema 组装成raw_prices.json。无需运行 fetch_data.py。 - 兜底路径:仅当 MCP 不可用或部分标的缺失时,才用
fetch_data.py(akshare / yfinance)补齐。
# 1) 兜底取数(仅 MCP 不可用时;主路径由 Agent 走 MCP 生成 raw_prices.json)
python scripts/fetch_data.py --symbols 600519.SH,00700.HK,AAPL \
--start 2026-01-01 --end 2026-07-18 -o raw_prices.json
# 2) 生成交付物(--threshold 可选,默认 0.05 即回撤 >5% 标注)
python scripts/build_dashboard.py raw_prices.json ./output --threshold 0.05
# 3) 打开 ./output/price_dashboard.html 看板,./output/prices_source.csv 为源数据
看板通过 CDN 加载 Plotly.js(已加 SRI 校验),首次打开需联网;数据本身已内嵌在 HTML 中。 离线方案:数据已内嵌,若需完全离线渲染,可将
plotly-2.35.2.min.js下载到本地, 把assets/dashboard_template.html中的 CDN<script src>改为本地相对路径(同时移除integrity)。
输出文件约定
| 文件 | 说明 |
|------|------|
| prices_source.csv | 所有标的合并的规范源数据。表头:标的名称,标的代码,市场,货币单位,交易日期,当日收盘价,是否交易日;非交易日保留行并标注,收盘价前向填充,两位小数 |
| price_dashboard.html | 交互式 Plotly 看板(v1.1.0 布局:汇总图 + 单标的回撤图双板块;原始/归一切换;各图表独立区间模式;回撤阴影阈值随 --threshold 动态;无 PE 标注/无红涨绿跌切换;Plotly.js 带 SRI 校验) |
| raw_prices.json | 中间数据(Agent / fetch_data.py 产出) |
数据来源约束
🔒 严禁使用 WebSearch / 网络搜索获取价格;所有数据仅来自 data/sources.yaml 声明的 MCP 与 akshare / yfinance。价格精确到小数点后两位。
详见 references/data-sources.md。
Scan to join WeChat group