# 央行黄金储备监测(国家队屯金) — 数据源与方法 (2026-08-22 实证)

## 为什么黄金ETF不适合监测"国家队屯金"
黄金ETF份额变动 = 市场投资者(散户+机构)申赎, 和国家队/央行是两条线。央行购金在SGE/国际市场上直接买实物金, 不走ETF渠道。监测国家队屯金要用**央行官方储备**(每月7号左右公布上月)。

## 数据源
- **央行黄金储备(月度)**: `akshare.macro_china_foreign_exchange_gold()` — 列: 统计时间(字符串'2026.7')/黄金储备(万盎司)/国家外汇储备(亿美元)。1978年起418行; **1993年前是年度数据**(每年1行), 1993年起月度。最新滞后1个月(8月数据9月初出)。
- **换算**: 万盎司 × 0.311 = 吨。单月增持 = `黄金储备.diff() * 0.311`。
- **金价(2000年起)**: COMEX黄金期货月度, Yahoo API (需代理+User-Agent):
  `https://query1.finance.yahoo.com/v8/finance/chart/GC=F?interval=1mo&period1=946684800&period2=4102444800`
  返回JSON: `result[0].timestamp` + `indicators.quote[0].close`。**起点2000-08**(278美元/盎司), 268行到2026-08。
- **失败/不足的替代源**: akshare `spot_hist_sge` 只到2016-12; `futures_foreign_hist('GC')` 只到2016-08; FRED `fredgraph.csv?id=GOLDPMGBD228NLBM/GRABDM228NLBM` 接口失效(返回HTML 404); Stooq `q/d/l/?s=xauusd` 代理下超时(exit 28)。**结论: 长历史金价首选Yahoo GC=F, 但必须用日线接口(`interval=1d`)再resample('ME')月末重采样——月线接口缺约45个月历史点(见下文\"断断续续根因\")**。
- 抓取脚本模式: `urllib` + `ProxyHandler({'http': proxy, 'https': proxy})` + UA头, 存CSV缓存(每次画图不重复请求)。

## 关键事实(2026-08-22 锚点)
- 5轮增持周期(自动检测: diff>0连续≥3个月): 2015-06~2016-04(11月) / 2016-06~10(5月) / 2018-12~2019-09(10月) / 2022-11~2024-04(18月, 史上最长) / **2024-11~2026-07(21个月, 持续中)**。
- 2026年增持加速: 3月+5吨 → 4月+8.1 → 5月+10 → 6月+14.9 → **7月+19.9吨(近年单月最大)**; 储备7608万盎司(约2366吨)。
- 2000年储备~1600万盎司 → 2026年7608万盎司, 26年增5倍。
- 2000-2026金价278 → 4000+美元/盎司; 近两年"越涨越买"(与2018-2022"逢高停手"形成对比, 从储备多元化转向战略抢筹)。

## 解读陷阱
- **2009年(1929→3389万盎司)和2015年(3389→5332)的大跳变不是单月购入**: 是央行多年未公布后一次性披露, 图里显示为巨大单月柱, 解读时必须说明, 否则用户会误读。
- **akshare储备序列有缺失月份**(如2025-10~12无数据行): 连续增持段按"数据连续的行"检测, 日历连续月数可能比检测值更长, 报告时注明。
- 2019-10~2022-09储备冻结6264万盎司 = **真实暂停购金**(每月都有数据, 差0), 不是数据缺失——用户曾问"没有数据还是说没有购入", 答案是后者(逢高停手: 当时金价盘整+美元强势+人民币贬值压力)。

## 汇总图已纳入黄金 (a_share_summary.py, 2026-08-22)
- 标题: "8指数+黄金 x 40策略"(原36策略+黄金4)。表格底部金色系(#B8860B渐变)黄金组4行。
- 实现: 黄金4策略混合类型——2个MA百分位(宽买稳卖MA250/极致Calmar MA300)复用统一`backtest()`; ROC动量/BB突破是**自定义T+1循环**(与generate_gold_strategy_chart.py的run_roc/run_bb_breakout逐行一致: `pos`按当日信号更新、`nav *= (1 + prev_pos * ret[i])`)。ROС: `close.pct_change(30) > -0.02` 满仓否则0; BB: `close > mid+2.5σ` 满仓, `< mid-2.5σ` 清仓。
- 数值与黄金单图一致(ROC动量#1 +94.5%)。黄金并入indices仅用于idx_colors/标题, 不写回strategy_config.json。
- 画图脚本: `/mnt/c/Users/Administrator/draw_pboc_gold.py`(2000年起版, 一次性; 若挂月度cron需移入quant/正式目录)。

## 金价\"断断续续\"根因与修复 (2026-08-22 实证)
用户问\"为什么金价断断续续的\"——两个叠加原因, 都要修:
1. **Yahoo月线接口(interval=1mo)本身缺约45个月历史点**: 268行 vs 期望~313个月。**修复**: 改日线全量 `interval=1d&period1=946684800&period2=4102444800`(6602行) → `pd.Series(cl, index=ts).resample('ME').last()` 月末重采样, **2000-08起313个月连续零缺口**。日线CSV缓存: `/tmp/gold_usd_daily.csv`(画图前重采样)。
2. **右Y轴下限设置过高**: 金价右轴从1000起步, 2000-2007年金价只有250-800美元 → **整段被压在可视区外**, 曲线看起来\"从2007年才开始\"(视觉上像缺数据)。**修复**: `ax2.set_ylim(0, 5500)`, 双轴各自 set_ylim 时检查被画数据的最小值是否在可视范围内——这是 twinx 双轴图的常见静默丢失。
另: tushare确认**没有**国际金价长历史(只有国内沪金期货AU 2008起、SGE 2016起), 2000年起国际金价只能走外网Yahoo。

## 按月披露口径 (用户定案 2026-08-22)
用户最终决定**从按月披露起始时间(2015-07)绘图**, 放弃2000年长历史诉求(因2009/2015一次性披露巨柱误导)。修改: `df = df[df['date'] >= '2015-07-01']`(diff第一行NaN, bar自动跳过), 储备Y轴缩到(5500, 8000)。此口径下增持节奏清晰: 2015-08~2016-04(9月)/2018-12~2019-09(10月)/2022-11~2024-04(18月)/2024-11~2026-07(21月), 中间3次暂停(2016-11~2018-11约2年/2019-10~2022-10近3年/2024-05~10六个月)。**口径原则: 数据披露频率变了的历史段不能与逐月段混画**(一次性披露=累计补记, 与月度增量不可比)。

## 监测图格式偏好 (用户要求 2026-08-22)
用户对监测类图表明确要求: **大标题包含更新日期**(如\"央行黄金储备与COMEX金价监测 | 储备更新至2026-07 · 金价更新至2026-08-21\") + **最新价格标注**(右上角方框\"最新 4624美元/盎司 (2026-08-21)\")。做监测图默认加上, 不等用户提醒。

## 月度cron要点(若实施)
每月7号后(数据公布)更新; 金价缓存刷新一次即可(Yahoo月度数据月更)。**✅ 已实施 (2026-08-22)**: cron ef63dd2cffc0, 每月8日09:00, script=~/.hermes/scripts/pboc_gold_monitor.sh(包装: 过滤akshare进度条+pipefail)。正式脚本 quant/pboc_gold_monitor.py(金价日线拉取内置, 代理172.29.144.1:10808优先/直连fallback; 输出摘要含储备吨/单月增持/连续增持月数/金价/美债)。三面板: 储备×金价 / 单月增持 / 中国持美债(2015起)。

## 中国持美债(TIC)数据获取 — 完整方案 (2026-08-22 实证)
用户要求\"国家队持有美债放黄金图做参照\"。数据源验证结论:
- **tushare**: 无(全token接口列表无TIC/美债/海外持仓类)
- **akshare**: 无(1137接口全量搜索, 仅macro_china_foreign_exchange_gold相近)
- **GitHub**: 无现成CSV, 但搜索\"tic treasury securities\"找到 **Yivermouth/TIC-Table1-Analysis**(中文抓取项目, ★1) —— 它的抓取代码揭示了正确数据路径: **ticdata.treasury.gov/resource-center/data-chart-center/tic/Documents/** (主站home.treasury.gov改版后全部404反爬, 但这个旧资源中心路径仍然存活)
- **✅ 正确源**: `https://ticdata.treasury.gov/resource-center/data-chart-center/tic/Documents/mfhhis01.html` — 853KB Excel发布格式HTML, **内嵌2000-03~今全历史**(288+个月×30国家)。**mfhhis01.csv/`.txt` 是同一文件的\"最近12月快照\"版**(98KB), html才是全历史——这是整个排查的关键。
- **解析要点**: ①`pd.read_html(StringIO(html))` — 长HTML字符串直接传参会被当作文件路径(Errno 2 No such file or directory), 必须StringIO包装; ②表结构=每年一个14列块(1国家+12月), 需遍历检测\"月份行(Dec..)+年份行\"配对, 再找'China, Mainland'行(每块1次, 25块=25年), 解析成(month, us_tb_bn)长表; ③drop_duplicates('month', keep='last')合并跨块重复。
- **关键历史锚点**(与公开记录一致): 2000-06: 67.5十亿 | 2010-06: 1112 | **2013-12峰值1270十亿(1.27万亿$)** | 2015-2018高位震荡~1.2万亿 | 2020-06: 1074 | **2022起断崖减持** | 2025-12: 684十亿。2013顶→2025底 **-46%**。
- **图面口径**: 面板3过滤 `>= '2015-01-01'` 与黄金图同区间(sharex), 红色#C62828, 右轴单位十亿美元; 最新值标注用 `xytext=(24, 30)` 右上偏移避开X轴标签(在y轴底部时向下的标注会压X轴标签)。
- **储备腾挪叙事**: 2022年后美债断崖减持 + 黄金史上最长增持 = \"弃美债购黄金\"; 当前组合 0.684万亿$ vs 黄金2366吨(约3000亿$), 黄金占比从2015年<5%升至~30%。
- 缓存: quant/pboc_china_ust_hist.csv; 脚本每次运行重抓(HTML 853KB, 代理60s超时够用)。

## TIC 2026年数据调查 — 官方发布滞后结论 (2026-08-23 实证)
用户发来 Global Markets Investor 图(显示中国2026年=633.4十亿)追问\"没有2026的数据吗\"。多路核实:
- **官方确实没有2026年数据**: mfhhis01.html 的 Last-Modified=2026-08-17(刚更新过!)但内容仍停在2025-12——文件里的2026字样只是**修订日期标注**(\"(2025 revised July 14, 2026)\" / \"(2024 revised January 15, 2026)\"), 不是数据段。
- **该表发布节奏=年度修订+严重滞后**: 2024年数据2026-01-15修订、2025年数据2026-07-14修订(约一年一周期)——**2026年月度数据可能要到2027年修订周期才出**, 不是缓存问题, 用户追问时直接说明官方滞后, 勿反复抓取排查。
- **SLT Table 1(slt_table1.html, 3.5MB)不是替代品**: 是\"总长期证券持仓\"口径(Total含Treasury/Agency/Corporate分类, 大量n.a.), 非美债-only; 且其历史段更旧。
- **fiscaldata API 无TIC数据**(swagger/datasets/tic_*端点全404); home.treasury.gov 新站全路径404(反爬); TradingEconomics 动态页无内嵌JSON。以上均为死路, 不再重试。
- **Global Markets Investor 的2026数据来源**: beehiiv文章 `globalmarketsinvestor.beehiiv.com/p/foreign-holdings-of-us-treasuries-are-rapidly-falling`(2026-08-20发布, 付费墙后)——他们走付费数据通道(Bloomberg/CEIC类)。633.4 vs 官方2025-12的684.4, 方向一致(继续减持~50十亿), 可信但无法用免费官方源复核。
- **处理**: 监测脚本自动取\"官方最新可得月份\", 大标题显示\"美债更新至2025-12\"; 官方发布后下次运行自然延伸。如需提前画2026趋势, 只能手工加第三方参考点(标注来源, 官方数据出后替换)。

