我给自己造了一台宏观交易台:4353 个指标、零网络请求、毫秒级响应
从"每次取数都要过一次 Cloudflare 盾",到一座完全离线、能主动报警、带着我自己研判口径的私人宏观投研终端。
这篇文章记录它怎么长出来的,以及今天它第一次"现场验证"的时刻。

一、起因:不是想做个工具,是受不了等
我做宏观研究要频繁查数据。数据源是 MacroMicro(财经M平方),4300 多个指标,覆盖 1850 年至今。
问题是每次取数都要过一次 Cloudflare 盾。慢只是次要的——更要命的是每次访问都在向风控暴露自己。你越频繁地自动取数,bot 分数越低,然后挑战越来越频繁,最后直接 403。这是个自我强化的死循环。
所以第一件事不是"做个好看的界面",而是:把数据搬到本地,让日常读取根本不碰网络。
二、第一层:本地镜像
先量成本,再定方案。实测:
| 项 | 值 |
|---|---|
| 单批 | 20 张 / 约 7 秒 |
| 单条均值 | 85 KB / 3,246 点 |
| 全量外推 | 约 22 分钟 |
22 分钟这个数字决定了整套设计:既然全量刷新这么便宜,就不做增量更新。增量会引入"哪些数据变了"的判断复杂度,以及"判断错了就永久漏更新"的风险,而收益只有 20 分钟。
存储选了 SQLite,理由不是体积(Parquet 更小),而是依赖:Node 26 内置 node:sqlite,不需要 better-sqlite3 那种原生模块——也就永远不会遇到"换 Node 版本必须重编"的坑(我在别的项目上踩过)。
最终:4,353 个指标 / 14,731 条序列 / 15,670,734 个数据点 / 682 MB。
省空间的两个小选择:日期存 INTEGER YYYYMMDD(4 字节)而非文本(10 字节);点表用 WITHOUT ROWID。
效果:日常取数从"网络 7 秒 + 一次风控暴露"变成 21 毫秒 + 零网络请求。
三、第二层:把数据变成能看的东西
有了本地数据,才开始做界面。核心诉求是看得清,所以我选了《经济学人》的图表语言:
- 米白纸感底 + 标志性红
#e3120b - 只保留横向网格线,去掉全部竖线(这是经济学人图表最强的视觉特征)
- 线粗、无数据点标记、线端直接标数值
- 深浅色跟随系统切换

一个必须解决的问题:量级差
两条曲线量级差几个数量级时(比如铜金比 0.16 vs 出口额 250 万),共用一个 Y 轴会把小的那条压成一条直线,看着像"没有变化"。
所以做了双轴。但难点不是画两条轴,是判断什么时候该拆:
- 判据用跨度比(每条序列自己的 max−min),不是数值比——两条线跨度相近时,即使绝对水平差很多,共轴也能各自占满纵向空间
- 跨度相差 15 倍以上才拆
- 只在序列数 ≤ 4 时自动生效
最后这条是踩坑踩出来的。第一版对所有序列数都自动判定,结果 9 个产业的出口金额图里,只有最小的"食物"被拆到右轴,其余 8 条留左轴——这张图的目的就是比大小,拆掉一条反而破坏了可比性。
四、第三层:从"被动查看"到"主动报警"
数据能看了,但它还是被动的。真正的跃迁是让它自己盯着。
顶部跑马灯:快讯与指标打通
接了华尔街见闻的快讯流做跑马灯。但更有意思的是第二步:关键词 → 指标映射。
新闻里出现"CPI",那个词就是可点的,点了直接跳到 CPI 图表。
这里最大的工程量是降噪。第一版误报严重:
"摩根士丹利第三季度净营收203.4亿美元" → 命中「美元」→ 美元指数 ❌
"美元"在财经文本里几乎 100% 是计价单位。同样的还有裸"央行"(中日韩央行会议会被错配到中国基准利率)、裸"准备金"(欧央行新闻命中美国图表)。
修掉之后:命中数从 8/30 降到 4/30,留下的全是真命中。
异动雷达:四重漏斗 + 微信推送
华尔街见闻一天上千条快讯。只靠"命中关键词"就推送,两小时内你就会把通知关掉——然后系统就死了(它还在跑,但没人看)。
所以做了四重漏斗:
① 看板绑定 只看你显式跟踪的指标,绝不扫 4353 全库
② 重要性 源头自带的重点标记
③ 结果词 必须含"落地型"动词,排除前瞻/观点
④ 冷却池 同一指标 60 分钟内至多 1 条
+ 全局保险 每小时硬上限
漏斗③ 有个隐蔽的坑:超预期 / 不及预期 / 高于预期 里含"预期",而"预期"正是我用来拦前瞻吹水的词。结果真实的数据发布被自己的降噪规则杀掉了。
核心教训:降噪过度比降噪不足更危险,因为它静默。
误报顶多让人烦,用户会抱怨;漏报没有任何反馈,你会在某天发现"这么重要的事系统居然没告诉我"——那时信任已经没了。
五、第四层:从"看板"到"投研工作台"
最后一层是让数据沉淀成认知。
每个指标卡片下方都有一个说明框。我写的不是名词解释,是判断方法:
铜金比:铜和黄金都对美元敏感,相除能过滤掉大部分美元噪音,剩下的更接近纯粹的风险偏好。
天然气:区域市场,美国 Henry Hub 与欧洲 TTF 逻辑完全不同,不要用美国气价推断欧洲。
螺纹钢:要与铁矿、焦煤一起看,钢厂利润 ≈ 螺纹 − 铁矿 − 焦炭,利润压缩会减产并反向压制原料价格。
这才是真正的价值所在——数据不值钱,"指标阈值与传导机理"才值钱。指标过了几个月你会忘记"当初为什么要看它、警戒线在哪"。写在旁边,数据才变成认知。
现在有 11 个主题看板、81 个指标:中国宏观、美国流动性、全球流动性、美债利率、美国就业通胀、中国房地产、日本出口、大宗商品、全球汇率、航运供应链、热点监测。
六、今天的一次"现场验证"
这套系统最有说服力的时刻,是它写下的判断在几小时内被市场验证。
① 信用市场的裂痕,先于股票
我的「热点监测」看板里有一条关于信用利差的说明:
美国信用风险利差(CCC 级)最新 12.13%,近期从 11.709 走阔到 12.129。
⚠️ AI 叙事的第一道信用裂痕:云服务商 CoreWeave 债券已跌入困境区间。
若这是趋势而非个案,会反向压制云厂商 Capex 与 GPU 租金那两条链。
然后当天:
[17:08] 云服务商 CoreWeave 债券急挫至困境区间,连马斯克也惊呼"吓人"
[17:23] CoreWeave 的 CEO Intrator:对公司业务模式有信心
[17:30] 纳斯达克100 跌幅扩大至 2%,CoreWeave 跌 15.4%
[16:25] 美股费城半导体指数跌幅扩大至 4.01%,英伟达跌 3.11%、博通跌 2.89%
[16:20] 美国芯片股跌势加剧,合计市值恐将蒸发逾 1 万亿美元
信用市场通常比股票市场早反应 2-3 周。 高息私募债先破位,芯片股的万亿抛售随后就到——这个传导链我在看板里写下来了,当天就看到了。
② ON RRP 枯竭的代价
同一块看板的另一条说明:
ON RRP 已于 2026-10 枯竭:最新 0.275(十亿美元)≈ 2.55 万亿,占峰值 0.0%。
这意味着缓冲垫已经失效(不是"接近"),TGA 上升会直接从准备金扣除。
当天快讯:
[17:16] 美联储隔夜逆回购协议(RRP)使用规模为 2.01 亿美元
为什么芯片股跌 4% 没有买盘来护盘? 因为在 RRP 归零后,金融体系已经没有游离在外的闲置流动性可以进场接飞刀了。没有缓冲气囊,估值回调会比过去两年任何一次都生硬。
③ 铜的历史天花板
看板说明里我写过:
铜 6.749 美元/磅,历史最高 6.8035 → 占峰值 99.2%。
若全品种同步回落需警惕短期头部。
当天:
[16:52] LME 期铜收跌 88 美元,报 14490 美元/吨
[17:01] 国际铜夜盘收跌 0.89%,沪铜跌 0.81%,沪铝跌 0.96%,沪锌跌 0.37%
七、踩过的坑(这部分可能比成果更有用)
我在这套系统上踩了 20 多个坑,几个印象最深的:
① 退避参数只会降、不会升
同步速度从 130 张/分钟掉到 9 张/分钟,剩余 63% 要跑 5 小时。原因是一次偶发挑战把批大小永久停在保守档。
② 前向预测陷阱(我自己中招)
某指标末点在 2027-08,我把它当当期读数,得出"衰退概率腰斩"的错误结论。真相是 last 是模型预测覆盖期,当期值要用 asOf——实际是 26.51%,是上升而非腰斩。
③ 推送有 2048 字节硬上限
晚报按"字符数"看着不长,实际 2301 字节被拒。中文一个字 3 字节,而且失败只在日志里——不测就会"永远发不出去而你不知道"。
④ 端口冲突
我把新服务放在 8488,而该端口已被另一个服务占用(且它绑 0.0.0.0)。两者共存时 loopback 流量被新服务抢走,原服务只有从外部 IP 才连得上——症状诡异,排查很久。
⑤ 全角括号导致白屏
JS 里误用全角 ( 而非 (。代码"读起来是对的"。
改完必须验,不能只靠读代码。
⑥ 静默过期
系统性扫描 81 个指标的最新数据日期,抓到两个已失效的:一个停在 2019-10(失效 7 年),一个停在 2022-12。图上照常画着线,只是末端停在几年前。 所以加了频率感知的陈旧告警(月频晚 4 个月算异常、年频晚 4 个月很正常)。
八、现在它是什么
| 层 | 能力 |
|---|---|
| 底座 | 本地 SQLite 镜像,4353 指标 / 1567 万点,日常读取零网络 |
| 交互 | 经济学人版式、双轴、剪刀差衍生计算、多图十字光标联动 |
| 雷达 | 快讯跑马灯 + 关键词直达图表 + 四重降噪漏斗 + 微信推送 |
| 认知 | 11 个主题看板 / 81 指标,每个都带我自己写的研判说明 |
| 运维 | launchd 常驻、崩溃自动拉起、月度自动同步、NAS 备份 |
技术上它没什么黑魔法。真正让它有价值的,是把"取数"这件苦活做便宜之后,你才愿意去做那些本来会偷懒跳过的验证——
比如去逐月核对一个 +77.8% 的涨幅是不是基数效应(是的,2025 年 3-5 月是 −50% 的深坑);比如去把日元计价的出口增长换算成美元口径(11.8% 变成 3.7%,三分之二的"增长"是汇率给的)。
降噪和查证的前提,是查询够便宜。
数据来源:MacroMicro(sc.macromicro.me),本地只读镜像。新闻来源:华尔街见闻快讯。本文所有数字均为本地镜像实测,非估算。