债市日评
生成中国债券市场每日复盘报告(复盘上一交易日),产出 HTML + PDF,并推送精要到微信机器人。
核心原则(先读这一节)
债市日评不等于只看债市。 只盯债券一条线,必然漏掉真正的主逻辑。
> 事故:2026-09-28 当日美债 10Y 升至 5.24%(创 2007 年 7 月以来新高)、伦敦金现跌 3.94%、创业板指跌 4.53%、超 4500 只个股下跌。报告却把债市波动写成"基金止盈、当日无新消息"——整条主叙事全部漏掉。
>
> 禁止在未核对跨资产数据的情况下,把债市波动简单归因为"基金止盈/无新消息"。
政策信号优先于自媒体传闻。 国内官方政策(国常会部署、央行工具调整、部委发文)往往才是当日真正的主逻辑。必须单独检索、优先核对。
事实与传闻必须严格分开。 写入报告前必须确认消息是否已落地为正式政策。
> 事故:曾把已于前一日由财政部、央行、金融监管总局联合发文落地的政策写成"传闻、未证实",属方向性错误。
工作流
第 0 步:确保接收器存活(必做,且不能只看返回值)
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\wx_watchdog.ps1 -StateDir "<状态目录>"
Get-CimInstance Win32_Process -Filter "Name='node.exe'" |
Where-Object { $_.CommandLine -like '*wx_receiver.cjs*' }
必须真的确认进程存在,不能只看计划任务返回码——历史上出现过"任务返回成功但进程根本没起来"的假成功。详见 references/troubleshooting.md。同时读一遍 wx_watchdog_log.txt。
> 本步需要有状态目录:存放 wx_auth_state.json(bot 凭据)与 wx_session.json(会话令牌)。首次使用需先完成扫码接入,见 references/wechat-channel.md。
第 1 步:收益率数据(中债口径,全期限)
node scripts/ifind_fetch.cjs --kind edb --queries-file q.txt --out rate.json
q.txt 每行一条:
中债国债到期收益率曲线1年、3年、5年(<前推5日至今天>)
中债国债到期收益率曲线7年、10年、30年(<前推5日至今天>)
解析出上一交易日与前一交易日的 1/3/5/7/10/30 年收盘。变动 bp = 两日差 × 100,保留 2 位小数。
⚠️ 解析以 datas 数组为准,answer 的 markdown 表偶发日期错位。详见 references/data-channels.md。
第 2 步:跨资产取证(必做 —— 主逻辑与归因的数据基础)
node scripts/ifind_fetch.cjs --kind edb --queries-file cross.txt --out cross.json
cross.txt 覆盖七组:
中债国债到期收益率曲线10年、30年(<前推10日至今天>)
美国10年期国债收益率日值(<前推10日至今天>)
上证综合指数收盘价(<前推10日至今天>)
创业板指数收盘价(<前推10日至今天>)
现货收盘价:伦敦金(美元)(<前推10日至今天>)
美国:美元指数日值(<前推10日至今天>)
期货结算价:原油:布伦特BRENT(<前推10日至今天>)
即期汇率:美元兑人民币(<前推10日至今天>)
每组取最近两个有值交易日的收盘。
异动判定(命中任一即须执行归因):美债 >5bp、黄金 >1%、上证 >1%、创业板 >2%、油价 >2%、中债任一期限 >3bp。
境内外基准日可能不同:境内节假日休市而海外正常交易时,须分别取各自前一交易日,并在报告表注写明。伦敦金现常有 1 个交易日滞后,该行单独标注其基准日。
第 3 步:政策类检索(优先级最高)
用 --kind news 检索会议部署、央行工具调整、部委发文。这往往是当日真正的主逻辑。 query 模板见 references/data-channels.md。
第 4 步:传闻检索
检索固收自媒体、券商研判、外媒报道。时间窗给足 7–9 天,过窄容易空。
⚠️ 空结果纪律:检索返回空或结果无关时,传闻节必须写"当日未检索到有效传闻"或直接省略,严禁凭记忆、凭训练知识罗列传闻条目。
⚠️ 状态核实纪律:先搜「XX 政策 通知/落地/实施」确认是否已发文,再决定归入事实级还是传闻级。
第 5 步:其他数据
逆回购净投放、DR001/DR007、机构观点。央行的单日净投放以新闻检索为准(EDB 口径为周频/月频),并用"前一日隔夜投放 = 今日隔夜到期"交叉验证。
第 6 步:生成报告
按 references/report-spec.md 的章节骨架与写作口径生成 HTML。
第一部分(一)"昨日市场交易主逻辑"置顶,含四件套:一句话主逻辑(.logic 高亮框)→ 多资产联动对照表 → 联动判读(≥3 条)→ 对债市的含义。
⚠️ 硬性要求:多资产表变动列一律不着色(避免与收益率红绿口径混淆);表注写明境内外各自基准日。
第 7 步:转 PDF 并校验交付
python scripts/html_to_pdf.py --html 债市日评_YYYY-MM-DD.html --pdf 债市日评_YYYY-MM-DD.pdf --min-pages 3
脚本内置三重防护:源文件硬断言、页数下限校验、md5 前后比对。不要手写 PowerShell 的 Copy-Item 覆盖流程。
第 8 步:推送微信
中文绝不可走命令行参数,必须写 UTF-8 文件:
node scripts/wx_send.cjs --file-text push_today.txt --state-dir "<状态目录>"
精要内容:标题+复盘日期 → 昨日交易主逻辑 3-4 行 → 多资产对照 6-8 行 → 各期限收益率与变动 → T 主力表现 → 央行操作与资金利率 → 当日政策要点 1-3 条 → 传闻 3-5 条精要 → 今日预判方向(含区间)→ 一条风险提示。数字必须与 HTML 报告完全一致。
| 输出 | 含义 | 后续 |
|---|---|---|
SENT |
成功 | — |
SAVED TO PENDING |
令牌失效已挂起 | 答复中必须请用户给机器人发一条任意消息,接收器会自动补发,无需人工干预 |
> ret=-2 令牌失效是正常现象(有效期约 24h),不是故障。
第 9 步:收尾
清理临时文件,用文件预览展示 HTML 与 PDF,答复中给出:核心数据(10Y/30Y 收盘与变动)、资金面一句话、昨日交易主逻辑一句话、跨资产关键点、当日政策要点、传闻要点、预判方向、是否推送成功。
资源索引
| 文件 | 何时读 |
|---|---|
references/report-spec.md |
写报告前 —— 章节骨架、第一部分四件套、红线清单、视觉规范 |
references/data-channels.md |
取数前 —— iFinD 三个服务的解析差异、指标号、query 模板、异动阈值 |
references/wechat-channel.md |
推送相关 —— iLink 协议、context_token 机制、首次接入、保活 |
references/troubleshooting.md |
用户说"没收到"时 —— 五步定位法、故障对照表 |
scripts/ifind_fetch.cjs |
取数(EDB / news / future 统一封装) |
scripts/wx_send.cjs |
发送文本到微信 |
scripts/wx_receiver.cjs |
长轮询接收器(须常驻) |
scripts/wx_watchdog.ps1 |
接收器保活(注册为计划任务) |
scripts/html_to_pdf.py |
HTML→PDF 并安全交付 |
每日流程总览
第0步 接收器保活(看 watchdog_log + 确认真有进程)
↓
第1步 中债收益率全期限 ┐
第2步 跨资产七组取证 ├─ 独立解析,逐点对账昨日报告
第3步 政策类检索 │
第4步 传闻检索 ┘
↓
第5步 资金面与其他
↓
第6步 生成 HTML(第一部分主逻辑置顶)
↓
第7步 转 PDF(md5 + 页数双重校验)
↓
第8步 推送微信(中文走 UTF-8 文件)
↓
第9步 清理 + 展示 + 答复
常见误区
- ❌ 只盯债市,漏掉股/债/金共振 → 必须做跨资产取证
- ❌ 未核对跨资产就写"基金止盈/无新消息"
- ❌ 把已落地的政策写成"传闻"
- ❌ 检索为空时凭记忆罗列传闻
- ❌ 把券商公开预测包装成内幕传闻
- ❌ 保活脚本写死 node 版本路径 → node 升级后静默失效
- ❌ 只看计划任务返回码就认定保活成功
- ❌ 命令行直接传中文
- ❌ 用
Copy-Item覆盖被占用的文件后靠Test-Path判成功