宏观经济数据跟踪看板 (Macro Dashboard)
概述
查询中国及全球宏观经济指标的最新数据,填充桌面 Excel 跟踪表,并生成 HTML 数据看板。
核心能力:
- 优先从东方财富网数据中心 API(datacenter-web.eastmoney.com)获取中国宏观指标数据(PPI/CPI/PMI/GDP/M2/工业增加值/固投/社零/消费者信心)
- 东方财富无法覆盖的指标(全球类、市场类:BDI/国债收益率/美元指数/A股成交/两融等),用 Python 回退脚本(Tushare + AKShare)补全
- 自动计算衍生指标:CPI-PPI、M1-M2剪刀差、M2-名义GDP、股债性价比、中美利差
- 更新桌面 Excel 跟踪表
市场跟踪/宏观经济指标.xlsx - 生成 HTML 数据看板文件
⚠️ Token 说明(重要)
本技能不存储任何 Token,也不内嵌任何密钥。
- 主流程(东方财富 API)完全不需要 Token,所有中国宏观指标优先从
datacenter-web.eastmoney.com获取。 - 仅当启用 Python 回退路径(
scrape_eastmoney.py确实无法获取的全球/市场指标)时,scripts/macro_dashboard.py才需要 Tushare Token,且只从以下位置读取,绝不写死在技能文件里:- 环境变量
TUSHARE_TOKEN - 本地配置文件
~/.config/tushare/token(用户私人凭证,位于用户主目录,不属于技能)
- 环境变量
- 若上述位置都没有 Token,回退脚本会自动跳过 Tushare 类指标、仅用 AKShare(无需 Token) 继续运行,不会报错退出。
- 切勿将任何 Token 明文写入本技能目录或 SKILL.md。
前置条件
1. Python 依赖
pip install requests beautifulsoup4 tushare akshare pandas-datareader openpyxl pandas
requests和beautifulsoup4是东方财富 API 爬取需要;Tushare/AKShare 仅用于回退路径。
2. 文件路径
- Excel 模板位于:
C:\Users\HT\Desktop\市场跟踪\宏观经济指标.xlsx - 入口脚本(一键执行完整流程):
scripts/merge_data.py - 东方财富 API 爬取脚本(主数据源):
scripts/scrape_eastmoney.py - Python 回退脚本(补全全球/市场指标):
scripts/macro_dashboard.py - 看板生成脚本:
scripts/build_dashboard.py(读取scripts/macro_data.json生成 HTML,无需 Token/API) - 输出 HTML 保存至桌面
市场跟踪/目录
使用方法(一键执行 → 完整数据看板)
当用户提出"查询宏观经济指标"或"更新经济数据跟踪"时,运行 merge_data.py 一键完成全部流程,等同于依次执行 Step 1→2→3→4。
一键运行(推荐)
C:/Users/HT/.workbuddy/binaries/python/envs/default/Scripts/python ^
C:/Users/HT/.workbuddy/skills/macro-dashboard/scripts/merge_data.py
分步说明
Step 1:东方财富 API 爬取(中国核心宏观指标)
C:/Users/HT/.workbuddy/binaries/python/envs/default/Scripts/python ^
C:/Users/HT/.workbuddy/skills/macro-dashboard/scripts/scrape_eastmoney.py
Step 2:Python 回退(全球/市场类指标)
cd C:/Users/HT/Desktop/市场跟踪
TUSHARE_HOME="C:/Users/HT/Desktop/市场跟踪/.tushare" ^
C:/Users/HT/.workbuddy/binaries/python/envs/default/Scripts/python ^
C:/Users/HT/.workbuddy/skills/macro-dashboard/scripts/macro_dashboard.py
Step 3:合并数据 + 生成看板
merge_data.py 自动完成:EM 数据优先 → 回退数据补缺 → 写入 macro_data.json → 运行 build_dashboard.py → HTML 至桌面。
可获取的指标(9 类,全部无需 Token):
| 东方财富 Report Name | 指标 | 数据列 |
|------|------|--------|
| RPT_ECONOMY_GDP | GDP 同比增速 | SUM_SAME |
| RPT_ECONOMY_PMI | 制造业 PMI | MAKE_INDEX |
| RPT_ECONOMY_CPI | CPI 同比增速 | NATIONAL_SAME |
| RPT_ECONOMY_PPI | PPI 同比增速 | BASE_SAME |
| RPT_ECONOMY_CURRENCY_SUPPLY | M2/M1 同比增速 | BASIC_CURRENCY_SAME / CURRENCY_SAME |
| RPT_ECONOMY_INDUS_GROW | 工业增加值同比增速 | BASE_SAME |
| RPT_ECONOMY_ASSET_INVEST | 固定资产投资同比增速 | BASE_SAME |
| RPT_ECONOMY_TOTAL_RETAIL | 社会消费品零售总额同比增速 | RETAIL_TOTAL_SAME |
| RPT_ECONOMY_FAITH_INDEX | 消费者信心指数 | CONSUMERS_FAITH_INDEX |
东方财富 API 无法获取的指标(这些需要走 Step 2 回退):
- PMI 细分项(新出口订单/进口/购进价格)
- 社会融资规模
- 用电量同比增速
- BDI 波罗的海干散货指数
- A股成交额、两融余额、北向资金
- 沪深300/中证500滚动市盈率
- 中国/美国10年国债收益率、美元指数、中美利差
- 美国非农数据、美国失业率
- 股债性价比
- 城镇调查失业率
- 工业企业利润率、宏观杠杆率、A股上市公司利润总额
Step 2:识别缺口,按需运行 Python 回退(次流程)
对东方财富 API 无法获取的指标,运行回退脚本补全:
cd C:/Users/HT/Desktop/市场跟踪
TUSHARE_HOME="C:/Users/HT/Desktop/市场跟踪/.tushare" ^
C:/Users/HT/.workbuddy/binaries/python/envs/default/Scripts/python ^
C:/Users/HT/.workbuddy/skills/macro-dashboard/scripts/macro_dashboard.py
脚本生成 macro_dashboard_YYYYMMDD_HHMMSS.html,其中的缺口指标值可回填到 macro_data.json。
⚠️ 必须设置
TUSHARE_HOME指向可写目录,否则 Tushare 写tk.csv会被沙箱拦截;无 Token 时该脚本自动跳过 Tushare 类指标、仅返回 AKShare 数据。
Step 3:汇总为 macro_data.json 并生成看板
Step 1 的 scrape_eastmoney.py 已自动写入 macro_data.json。如需补充 Step 2 的全球/市场数据,手动合并进去。
然后运行看板生成脚本(纯本地、无需 Token/API):
C:/Users/HT/.workbuddy/binaries/python/envs/default/Scripts/python ^
C:/Users/HT/.workbuddy/skills/macro-dashboard/scripts/build_dashboard.py
生成 macro_dashboard_YYYYMMDD_HHMMSS.html 到桌面 市场跟踪/ 目录。
Step 4:回写 Excel(可选)
用专用脚本统一写入 C:\Users\HT\Desktop\市场跟踪\宏观经济指标.xlsx 的 C/D/E/F 列(行号与指标对应,第 2 行起)。
已知问题与避坑指南
1. TUSHARE_HOME 沙箱问题
运行脚本时必须设置 TUSHARE_HOME 环境变量指向可写目录(如桌面 市场跟踪/.tushare),否则 Tushare 尝试在用户根目录写 tk.csv 文件,会被沙箱拦截导致脚本崩溃。
2. 两融余额仅含上交所
脚本 pro.margin(exchange_id='SSE') 只返回上交所两融余额(~1.4-1.5万亿),实际两市合计约 2.9-3.0万亿。需用 WebSearch 搜索"两融余额 最新"补全深交所部分。
3. 固定资产投资数据问题
ak.macro_china_gdzctz() 返回的 自年初累计 列是绝对额(亿元),非同比增速。脚本需要手动匹配 累计同比 列,若找不到则需从互联网搜索补全。
4. 中国国债收益率显示异常
Excel 中中国10年国债收益率若显示过高的值(如 4.5%),实际应为 1.5%-2.0%(2025-2026年水平)。以 AKShare bond_zh_us_rate() 的 中国国债收益率10年 列为准。
5. 社融规模数据
脚本 pro.sf_month() 返回的 stk_endval 是社融存量(万亿元),Excel 中已有数据若为较小数值(如 17.48万亿)可能是当月增量,注意区分。
数据源与列映射
主流程(Step 1):东方财富网数据中心 API —
datacenter-web.eastmoney.com/api/data/v1/get,9 类中国宏观指标,无需 Token。回退路径(Step 2):以下 Tushare / AKShare 接口,仅用于东方财富 API 无法覆盖的全球/市场类指标。
东方财富 API 报告名称(主流程)
| 页面 | Report Name | 关键列 | 说明 |
|------|------------|--------|------|
| PPI | RPT_ECONOMY_PPI | BASE_SAME | PPI 同比 |
| CPI | RPT_ECONOMY_CPI | NATIONAL_SAME | 全国CPI同比 |
| PMI | RPT_ECONOMY_PMI | MAKE_INDEX | 制造业PMI |
| GDP | RPT_ECONOMY_GDP | SUM_SAME | GDP同比增速 |
| M2/M1 | RPT_ECONOMY_CURRENCY_SUPPLY | BASIC_CURRENCY_SAME, CURRENCY_SAME | M2/M1同比增速 |
| 工业增加值 | RPT_ECONOMY_INDUS_GROW | BASE_SAME | 工业增加值同比 |
| 固定资产投资 | RPT_ECONOMY_ASSET_INVEST | BASE_SAME | 固投同比 |
| 社会消费品零售 | RPT_ECONOMY_TOTAL_RETAIL | RETAIL_TOTAL_SAME | 社零同比 |
| 消费者信心 | RPT_ECONOMY_FAITH_INDEX | CONSUMERS_FAITH_INDEX | 消费者信心指数 |
以上接口均通过
https://datacenter-web.eastmoney.com/api/data/v1/get?reportName=xxx&columns=xxx&sortColumns=REPORT_DATE&sortTypes=-1&pageSize=3&pageNumber=1&source=WEB&client=WEB调用。
Tushare Pro API(回退路径)
| 指标 | Tushare API | 关键列 | 说明 |
|------|------------|--------|------|
| GDP | pro.cn_gdp() | gdp_yoy | 季度同比增速 |
| PMI | pro.cn_pmi() | PMI010100 | 制造业PMI |
| PMI新出口订单 | pro.cn_pmi() | PMI010200 | 新出口订单指数 |
| PMI进口 | pro.cn_pmi() | PMI010300 | 进口指数 |
| PMI购进价格 | pro.cn_pmi() | PMI010400 | 购进价格指数 |
| CPI | pro.cn_cpi() | nt_yoy | 全国CPI同比 |
| PPI | pro.cn_ppi() | ppi_yoy | PPI同比 |
| M2/M1 | pro.cn_m() | m2_yoy, m1_yoy | M2/M1同比增速 |
| 社会融资规模 | pro.sf_month() | stk_endval | 社融存量(万亿) |
| A股成交额 | pro.index_daily() | amount | 沪深两市合计(亿元) |
| 两融余额 | pro.margin() | rzrqye | 上交所两融余额(亿元) |
| 北向资金 | pro.moneyflow_hsgt() | ggt_ss+ggt_sz | 沪深港通累计净流入(亿) |
| 沪深300 PE | pro.index_dailybasic() | pe_ttm | 滚动市盈率 |
| 中证500 PE | pro.index_dailybasic() | pe_ttm | 滚动市盈率 |
注意:yc_cb(国债收益率曲线)需要 Tushare 积分权限,未开通时用 AKShare 替代。
AKShare 替代
| 指标 | AKShare API | 说明 |
|------|------------|------|
| 工业增加值 | ak.macro_china_gyzjz() | 同比增长 列 |
| 固定资产投资 | ak.macro_china_gdzctz() | 自年初累计 列(绝对额) |
| 社会消费品零售总额 | ak.macro_china_consumer_goods_retail() | 同比增长 列 |
| 消费者信心指数 | ak.macro_china_xfzxx() | 搜索含信心/预期/指数的列 |
| 用电量同比增速 | ak.macro_china_society_electricity() | 搜索含同比的列 |
| BDI | ak.macro_china_bdti_index() | 波罗的海干散货指数(注:akshare接口名是bdti但返回BDI数据) |
| 中国10年国债 | ak.bond_zh_us_rate() | 中国国债收益率10年 列 |
| 美国10年国债 | ak.bond_zh_us_rate() | 美国国债收益率10年 列 |
| 城镇调查失业率 | ak.macro_china_urban_unemployment() | item=全国城镇调查失业率 |
| 美元指数 | web.DataReader("DTWEXBGS", "fred", ...) | FRED数据库 |
衍生指标计算
| 指标 | 公式 | |------|------| | CPI-PPI | CPI同比 - PPI同比 | | M1-M2剪刀差 | M1同比 - M2同比 | | 实际通货膨胀率(M2-名义GDP) | M2增速 - GDP同比 | | 股债性价比 | 1/市盈率×100 - 10年国债收益率(%) | | 中美利差 | 中国10年国债收益率 - 美国10年国债收益率 |
更新频率说明
| 频率 | 指标 | 发布时间 | |------|------|---------| | 季度 | GDP | 季后约2周(4/7/10/1月) | | 月度 | PMI | 月末最后一天 | | 月度 | CPI/PPI/社融/M2 | 次月9-15日 | | 月度 | 工业增加值/固投/社零 | 次月15-18日 | | 日度 | A股成交/两融/北向/BDI/国债/美元 | 交易日次日 |
完成后的清理
- 删除临时脚本
update_macro_excel.py - 删除
TUSHARE_HOME目录.tushare/(仅包含 token 缓存,无必要保留)
Excel 写入格式
更新桌面 C:\Users\HT\Desktop\市场跟踪\宏观经济指标.xlsx 的 Sheet1:
- C列(最新值):当前最新数据
- D列(前值):上一期数据
- E列(环比变动):HTML 看板统一使用"箭头 + 数值(百分比%)"格式,例如
↑ +0.30 (+6.00%)/↓ -0.40 (-0.78%)/→ 0.00 (0.00%),不带pp后缀;单元格内填最新值减前值的绝对变化,由看板生成器自动计算 - F列(更新时间):数据对应的时间戳
- 行号与指标对应:第2行=GDP,第3行=PMI,以此类推
- N/A 行处理:无最新值(N/A)的指标整体不展示(不渲染行),不写空字符占位
Scan to join WeChat group