通过一次主题列表请求和每家中央银行各一次请求,可以获取预测主题中每家有事件的中央银行的决议日期,并按由近到远的顺序列出。截至2026年10月24日,最近的是加拿大银行、美联储和新西兰储备银行的2026年10月28日,随后是欧洲中央银行的10月29日和日本银行的10月30日。
使用 API 完成操作
使用 central_banks 组中的预测主题构建跨银行列表。脚本保留标题以 rate decision 结尾的主题,读取其事件,并输出每家银行最近的未来日期。每行输出依次包含 UTC 日期和银行名称。
应使用的事件字段是 resolves_at。when 函数读取其时间戳,并将 Z 后缀作为 UTC 偏移量处理。事件必须包含该字段,且时间戳晚于脚本启动时间,才能进入该银行的排序列表。如果同一家银行有多个未来事件,只有最早的一个会进入合并输出。脚本收集完各家银行后再进行最终排序,使不同主题的日期按顺序一起显示。
- 获取 API 密钥 创建免费密钥,并将其保存在名为
NARWHAL_API_KEY的环境变量中。脚本读取该变量,并通过Authorization: Bearer YOUR_KEY请求头将密钥发送到https://api.narwhalapi.com。 - 读取中央银行主题 先使用
GET /v1/predictions/topics?group=central_banks获取主题列表,再对每家银行使用GET /v1/predictions/topics/{topic_id}。先获取列表,脚本才能拿到请求事件所需的主题 ID。 - 运行 Python 脚本 脚本读取每个事件的
resolves_at,保留晚于脚本启动时间的时间戳,并在每家银行的事件中对这些时间戳排序。它取出该银行最早的未来时间戳,将其转换为日期,再把日期和银行名称加入输出。import os from datetime import datetime, timezone import requests HEADERS = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} BASE = "https://api.narwhalapi.com/v1/predictions" def get(path, **params): r = requests.get(f"{BASE}{path}", params=params, headers=HEADERS, timeout=10) r.raise_for_status() return r.json() now = datetime.now(timezone.utc) def when(text): return datetime.fromisoformat(text.replace("Z", "+00:00")) topics = [ t for t in get("/topics", group="central_banks")["topics"] if t["title"].endswith("rate decision") ] rows = [] for topic in topics: events = get(f"/topics/{topic['topic_id']}")["events"] upcoming = sorted( when(e["resolves_at"]) for e in events if e.get("resolves_at") and when(e["resolves_at"]) > now ) if upcoming: rows.append( ( upcoming[0].date().isoformat(), topic["title"].removesuffix(" rate decision"), ) ) for day, bank in sorted(rows): print(day, bank) - 按顺序查看日期 最后的循环对合并后的行排序,将最近的日期放在最前面,并将日期相同的银行列在一起。只有主题中存在
resolves_at为未来时间的事件时,银行才会出现在结果中;脚本会排除没有此类事件的主题。
无需代码查找会议日期
打开中央银行会议指南,按月查看会议。它涵盖美联储、欧洲中央银行、英格兰银行、日本银行、加拿大银行、澳大利亚储备银行和瑞士国家银行。也可以通过各家银行的利率概率页面查看会议事件,无需编写代码。
查看指南所涵盖银行的日期时,使用月度指南。查询某一家银行时,使用该银行的利率概率页面。如果需要合并列出预测主题中所有有未来事件的银行,则运行脚本并查看按日期排序的输出。
不同情况应选哪种方法
| 情况 | 最合适的方法 | 原因 |
|---|---|---|
| 按月查看会议日期 | 中央银行会议指南 | 按月归类所涵盖银行的会议 |
| 列出所有有未来决议日期的银行 | 预测主题脚本 | 按日期顺序合并各家银行最近的未来事件 |
| 查看精确的决议时间 | topic == "policy_rate" 的经济日历条目 | 根据2026年10月24日的记录,包含 USA、AUS、BRA 和 MEX 在2026年10月24日至12月31日期间的精确时间 |
日期列表和经济日历用于不同的日程查询。使用预测主题将各家银行的决议日期汇总到同一份输出中。如果还需要查看具体时刻,则使用日历中的 policy_rate 条目。
为什么经济日历中没有某些银行?
经济日历提供决议时间的国家数量少于预测主题覆盖的国家数量。截至2026年10月24日,日历在2026年10月24日至12月31日期间的 policy_rate 条目涵盖 USA、AUS、BRA 和 MEX,共有八次决议。
预测主题涵盖更多银行并提供会议日期,但不一定提供具体时刻。因此,某家银行未出现在这些日历条目中,并不代表预测主题中没有其决议日期。读取该银行的主题事件,即可获取脚本使用的日期。
这些日期是官方日期吗?
这些是预测市场会议事件中 resolves_at 的日期,依照各家银行公布的日程,最终以银行为准。脚本将该时间戳转换为 UTC 日期,用于合并列表。结果行中的日期应理解为该银行会议事件所附的日期。
主题 ID 会变化吗?
每次构建列表时,都从 GET /v1/predictions/topics?group=central_banks 获取主题 ID。像脚本一样,使用返回的 topic_id 值分别请求事件,避免硬编码 ID。脚本请求事件前,标题筛选会先从该组中选出利率决议主题。
示例:2026年10月26日所在周
数据来自2026年10月24日。取出每家银行最近的未来决议日期,再将日期一起排序。结果列表中有十一家银行具有未来决议事件,其 UTC 日期为:
| UTC 决议日期 | 银行 |
|---|---|
| 2026-10-28 | 加拿大央行 |
| 2026-10-28 | 美联储 |
| 2026-10-28 | 新西兰储备银行 |
| 2026-10-29 | 欧洲央行 |
| 2026-10-30 | 日本央行 |
| 2026-11-03 | 澳大利亚储备银行 |
| 2026-11-04 | 巴西央行 |
| 2026-11-05 | 英格兰银行 |
| 2026-11-05 | 墨西哥央行 |
| 2026-11-18 | 印尼央行 |
| 2026-12-18 | 俄罗斯央行 |
每行代表2026年10月24日数据中某家银行最近的未来事件。统计日期落在所查询周内的银行数量,再将每日数量相加。如果还需要该周之后的决议日期,在完整列表中保留后面的行。
要统计2026年10月26日所在周的决议数量,保留日期在该周内的行。在2026年10月24日的数据中,10月28日星期三有加拿大银行、美联储和新西兰储备银行。10月29日星期四有欧洲中央银行,10月30日星期五有日本银行。
| 2026年10月26日所在周的日期 | 2026年10月24日数据中的决议数量 |
|---|---|
| 10月28日星期三 | 3 |
| 10月29日星期四 | 1 |
| 10月30日星期五 | 1 |
| 本周合计 | 3 + 1 + 1 = 5,共 11 家 |
发布于。
后续步骤
创建免费密钥,在自己的代码中调用 API。 获取免费 API 密钥
