返回 Skill 列表
extension
分类: 数据与分析无需 API Key

macro-dashboard

宏观经济30+指标跟踪看板,自动生成HTML数据看板

person作者: user_186b4ea5hubcommunity

宏观经济数据跟踪看板 (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,且只从以下位置读取,绝不写死在技能文件里
    1. 环境变量 TUSHARE_TOKEN
    2. 本地配置文件 ~/.config/tushare/token(用户私人凭证,位于用户主目录,不属于技能)
  • 若上述位置都没有 Token,回退脚本会自动跳过 Tushare 类指标、仅用 AKShare(无需 Token) 继续运行,不会报错退出。
  • 切勿将任何 Token 明文写入本技能目录或 SKILL.md。

前置条件

1. Python 依赖

pip install requests beautifulsoup4 tushare akshare pandas-datareader openpyxl pandas

requestsbeautifulsoup4 是东方财富 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)的指标整体不展示(不渲染行),不写空字符占位