本周宏观事件日历
什么时候用
- 用户问「这周有什么数据 / 下周有什么重要事件 / 本周宏观日历」。
- 用户问「非农什么时候公布 / CPI 几点出 / 美联储什么时候开会 / 下次议息还有几天」。
- 用户问「CPI 前后美股一般怎么走 / 非农那天美元一般什么表现」——这是问历史分布,能答;如果他问的是「这次会怎么走」,那是预测,不答(见「边界」)。
- 用户想看某个具体指标的历史数据(「美国失业率最近几个月什么水平」「10 年美债收益率现在多少」)。
用不着的场合:用户要的是买卖判断、仓位建议、点位预测。这个技能不提供,也不要拐弯抹角地提供。
运行要求
Node ≥ 18(node -v 确认),全部脚本零依赖、只用 Node 原生 fetch。Windows / macOS / Linux 通用。
四个数据源都是公开免费接口,不需要任何账号或密钥:
| 来源 | 用途 | 是否要 key |
|---|---|---|
| ForexFactory 周历 JSON | 本周/下周事件、共识、前值 | 否 |
| 美联储官网 FOMC 日历页 | 议息会议日程 | 否 |
FRED fredgraph.csv 公开接口 |
经济序列、市场日频序列 | 否(有 FRED_API_KEY 会更快更准) |
网络不通时脚本会直接报错并说明原因,不会悄悄给一张空表。如果本机需要代理,先设 HTTPS_PROXY 环境变量再跑。
四个脚本
1. 周历:scripts/calendar.mjs
node {baseDir}/scripts/calendar.mjs [--week this|next] [--tz Asia/Shanghai] [--min-impact medium]
[--country USD,EUR] [--out cal.md] [--json cal.json]--week this本周(默认),--week next下周。ForexFactory 的「周」按美东周日起算,所以周六日跑this拿到的可能还是刚过去那一周,需要下周就明确加--week next。- 下周端点经常 404(ForexFactory 目前只稳定提供 thisweek 一个免费接口)。这时脚本会自动降级到内置的美国发布日排期:只有美国主要数据与 FOMC,没有前值/预期,日期按官方排期推算可能差一两天。报告开头会有一行 ⚠ 标注,这行必须转述给用户,别让他以为拿到了完整的全球周历。
--min-impact默认medium;用户说「只看最重要的」就用high,说「全都要」就用low。休市(Holiday)无论门槛多高都会保留,因为它影响当天流动性。--country只看某几个国家(货币码:USD 美国、EUR 欧元区、CNY 中国、JPY 日本、GBP 英国…),默认全部。- 事件名中英对照表在
references/events-zh.json,先精确匹配全名,再按关键词匹配;表里没有的保留英文原名,不硬猜。要加词条直接改那个 JSON。 - 输出末尾会单独列一段「重要度高」的事件,适合直接念给用户听。
2. 议息日程:scripts/fomc.mjs
node {baseDir}/scripts/fomc.mjs [--tz Asia/Shanghai] [--years 2026,2027] [--out f.md] [--json f.json]- 从美联储官网解析当年与次年(默认)的会议日期,决议日取会议最后一天,公布时间固定美东 14:00 —— 换成北京时间就是次日凌晨 02:00(夏令时)或 03:00(冬令时),报告里要把「次日凌晨」这四个字说出来,不然用户会记错一天。
- 开头一句话直接给「下一次会议是哪天、距今几天、有没有点阵图」。季度会议(3/6/9/12 月)带经济预测摘要和主席发布会,市场关注度更高,可以顺带提一句。
- 官网抓不到或页面结构变了(解析出的日期少于 8 个),会降级到内置的 2025–2027 官方排期表,并在报告里明确标注「用的是内置表、非实时」。这个标注必须转述给用户。
3. 经济序列:scripts/fred.mjs
node {baseDir}/scripts/fred.mjs <序列ID> [--n 13] [--key $FRED_API_KEY] [--out s.md] [--json s.json]
node {baseDir}/scripts/fred.mjs --list # 常用序列速查- 常用:
CPIAUCSLCPI(季调)、CPIAUCNSCPI(未季调)、PCEPILFE核心 PCE、PAYEMS非农就业总人数、UNRATE失业率、ICSA初请失业金、RSAFS零售销售、DGS1010 年美债、SP500标普 500、DTWEXBGS美元指数。 - 输出最近 13 期(
--n可调)的数值、环比、同比。 - 三个已经踩过的坑,脚本已经处理,转述时也要注意:
- FRED 的缺失值有
.和空串两种写法,空串被当成 0 会算出离谱的环比 —— 脚本一律跳过并在报告里报「跳过了 N 条缺失值」。 - 缺报月(比如政府停摆那次)会让相邻两行跨两个月,这种时候环比留空并注明「中间有缺报」,不要按两个月的变化当成一个月讲。
- 同比要自己算,而且口径要对:季调序列(
CPIAUCSL)算同比有口径偏差,要同比就用未季调序列(CPIAUCNS)。
- FRED 的缺失值有
- 还有一个容易讲错的:参考期不是发布日。表里的
2026-08-01指的是「8 月这个月的数据」,它是 9 月中旬才公布的。给用户念的时候要说「8 月的 CPI」,不要说「8 月 1 日的 CPI」。
4. 历史反应:scripts/reaction.mjs
node {baseDir}/scripts/reaction.mjs --event CPI [--n 12] [--dates 2026-09-11,...] [--out r.md] [--json r.json]
node {baseDir}/scripts/reaction.mjs --list- 支持的事件:
CPI/NFP(非农)/FOMC/PCE/PPI/RETAIL(零售),中文别名(非农、议息、零售…)也认。 - 观察三个市场,全部取自 FRED 公开日频序列:标普 500(%)、美元指数 DTWEXBGS(%)、10 年期美债收益率(bp)。
- 三个窗口:事件日(公布当天收盘 vs 前一交易日)、次日、±1 日合计。给出中位数、25/75 分位、极值、上涨占比。
- 发布日来源:默认用
references/release-dates.json的内置表(2024–2025 是核实过的实际发布日,2026 是按官方排期推算,报告里会标);设了FRED_API_KEY就改用 FRED 官方发布日历,更准。也可以用--dates直接指定。 - 取不到数据就退出码 2 并说明原因,绝不编数。有效样本少于 3 次时那一项直接写「样本不足」,不出统计量。
报告口吻
- 时间一律换算成北京时间,并且每次都写明「北京时间」四个字。 美东 08:30 的数据对应北京时间 20:30(夏令时)/ 21:30(冬令时),FOMC 决议对应次日凌晨。别让用户自己换算,也别只给美东时间。
- 先讲结构,再讲细节:开头三句话说清「这周几件大事、分别在哪天、哪件最重要」,然后再上表。用户没问就不要把二三十行表格全念一遍。
- 前值/预期要说明来路:那是市场机构的共识值,不是官方数字,临近发布还会变。
- 不做预测。用户问「这次 CPI 会是多少」「会不会降息」,直接说这个技能只提供日程和历史数据,不预测。可以顺势给他
reaction.mjs的历史分布,但要讲清那是历史、不是这一次。 - 不给交易建议。不说「适合埋伏」「注意规避风险」「建议减仓」这类话,也不暗示。用户追问就明说:不提供投资建议,具体决策请咨询有资质的持牌机构。
- 反应统计只描述分布,不下因果结论。正确说法是「过去 12 次 CPI 公布,标普当天变动的中位数是 +0.13%,一半以上的次数在 ±0.3% 以内」;错误说法是「CPI 公布后美股倾向于上涨」——十来个样本支撑不起「倾向」两个字,而且每次的背景(预期差、政策环境)都不一样。样本量必须报出来。
- 降级和缺数据要说出来,不能让用户以为拿到的是实时权威数据。报告里凡是带「内置表」「推算」「样本不足」「跳过缺失值」的标注,都要转述。
- 用户只问一件小事(「非农什么时候」),就答一句话加一个日期,不要甩一整份周历。
边界
- 只做日程与历史统计。不预测数据值、不预测利率路径、不预测行情。
- 不提供投资建议,包括但不限于买卖方向、点位、仓位、品种推荐。涉及具体投资决策时,明确请用户咨询有资质的持牌机构。
- 不接任何交易所行情,不涉及虚拟货币、数字货币及其任何衍生品。市场反应统计只用公开的美股指数 / 美元指数 / 美债收益率(来源 FRED)。
- 数据是第三方公开源:ForexFactory 的共识值是机构预期不是官方数字;FRED 数据会被修订;美联储官网页面结构变了脚本会降级。任何一处不确定,报告里都要标明,不许用确定的语气盖过去。
- 取不到数据就说取不到(脚本退出码 2),不拿旧数据冒充新数据,不估算,不编。
- 脚本只读公开接口,不写用户任何文件(除非用户自己指定
--out/--json路径),不需要也不索取任何账号密码。FRED_API_KEY是可选的,用户不给就走免 key 通道。
典型流程
- 用户问「这周有什么数据」→
calendar.mjs --week this --min-impact high→ 先口头说三句话(几件大事、哪天、哪件最重要),再按需展开表格。 - 用户追问「非农是几号」→ 从上一步结果里直接答;问的是未来某次 →
calendar.mjs --week next,还更远就说明周历只覆盖本周和下周,并用fomc.mjs(议息)或内置发布日规律给个大概。 - 用户问「下次议息什么时候」→
fomc.mjs→ 「下一次是 X 月 X 日,北京时间次日凌晨 02:00 公布,距今 N 天,这次带点阵图」。 - 用户问「CPI 最近几个月什么水平」→
fred.mjs CPIAUCSL(要同比就CPIAUCNS)→ 讲最新一期的参考期、数值、环比同比,提醒参考期 ≠ 发布日。 - 用户问「CPI 前后美股一般怎么走」→
reaction.mjs --event CPI --n 12→ 报样本量和中位数、分位数,明确说这是历史分布、不预示这一次,并且不给操作建议。