🌡️ 市场温度计是什么
把估值、情绪、流动性三类指标,统一换算到 0–100 的相对刻度上。0 = 这个市场历史上最冷的水平;100 = 历史上最热。GitHub Actions 在工作日 17:30(北京时间,覆盖中港收盘后)和每日 06:00(北京时间,覆盖美股收盘后)自动重算,所有数字都来自 silver 层、可在 git 历史里追溯。
1
第一步:把每个指标换成历史百分位
对每个指标(CAPE、VIX、社融、美元指数 …)取过去 10 年的滚动百分位作为基础信号。月频指标(CAPE、M2、社融)会先 forward-fill 到日度,避免窗口里只有十几条点。
2
第二步:按方向决定升降温
每个指标在 weights.yaml 里都标了一个方向:+ 表示分位高 → 温度高(如 CAPE 高 = 估值贵 = 热);- 表示分位高 → 温度低(如 VIX 高 = 恐慌 = 冷;DXY 强 = 全球流动性紧 = 冷)。
3
第三步:合成子温度
在每个子项(估值 / 情绪 / 流动性)下,按权重加权平均所有可用指标。缺失指标会自动按可用权重重归一——比如港股期权 PCR 没有免费源时,HK 情绪不会拉垮,而是把 100% 权重给到南向 5 日。
4
第四步:合成综合温度
三个子温度按市场各自的权重加权得到 综合温度(0–100)。区间:< 30 偏冷 · 30–70 中性 · ≥ 70 偏热。
function 公式速览
indicator_pct = rolling_percentile(value, window=10y)
contribution = (direction == '+') ? indicator_pct : (100 − indicator_pct)
sub_temp = Σ (contributioni × indicator_weighti) / Σ available_weighti
overall = val × wval + sent × wsent + liq × wliq
// 0 ≤ overall ≤ 100 · < 30 cold · 30–70 mid · ≥ 70 hot
tune 各市场权重明细
实时从 config/weights.yaml 读取——改完它再跑 finsynapse transform run --layer temperature 立刻生效。
🇨🇳 CN
中国 A 股
CN
valuation 65%
· sentiment 20%
· liquidity 15%
| 子温度 | 占比 | 指标 | 指标权重 | 方向 |
|---|---|---|---|---|
| 估值 | 65% | 沪深 300 PE-TTM 估值 csi300_pe_ttm |
50% | + 分位高 → 热 |
沪深 300 市净率 csi300_pb |
50% | + 分位高 → 热 | ||
| 情绪 | 20% | cn_north_5d cn_north_5d |
25% | + 分位高 → 热 |
A 股 5 日换手率 cn_a_turnover_5d |
25% | + 分位高 → 热 | ||
cn_margin_balance cn_margin_balance |
35% | + 分位高 → 热 | ||
cn_usdcny_pressure cn_usdcny_pressure |
15% | − 分位高 → 冷 | ||
| 流动性 | 15% | cn_m2_yoy cn_m2_yoy |
25% | + 分位高 → 热 |
中国社融 12 个月累计 cn_social_financing_12m |
25% | + 分位高 → 热 | ||
cn_credit_impulse cn_credit_impulse |
25% | + 分位高 → 热 | ||
cn_dr007 cn_dr007 |
25% | − 分位高 → 冷 |
🇭🇰 HK
香港
HK
valuation 60%
· sentiment 25%
· liquidity 15%
| 子温度 | 占比 | 指标 | 指标权重 | 方向 |
|---|---|---|---|---|
| 估值 | 60% | 港股 ETF 滚动股息率 hk_ewh_yield_ttm |
100% | − 分位高 → 冷 |
| 情绪 | 25% | 南向资金 5 日净流入 cn_south_5d |
60% | + 分位高 → 热 |
hk_vhsi hk_vhsi |
40% | − 分位高 → 冷 | ||
| 流动性 | 15% | us10y_real_yield us10y_real_yield |
30% | − 分位高 → 冷 |
美元指数 dxy |
20% | − 分位高 → 冷 | ||
hk_hibor_1m hk_hibor_1m |
50% | − 分位高 → 冷 |
🇺🇸 US
美国
US
valuation 35%
· sentiment 45%
· liquidity 20%
| 子温度 | 占比 | 指标 | 指标权重 | 方向 |
|---|---|---|---|---|
| 估值 | 35% | 美股 PE-TTM 估值 us_pe_ttm |
35% | + 分位高 → 热 |
美股 CAPE 估值(席勒市盈率) us_cape |
35% | + 分位高 → 热 | ||
us_erp us_erp |
30% | − 分位高 → 冷 | ||
| 情绪 | 45% | VIX 恐慌指数 vix |
40% | − 分位高 → 冷 |
us_hy_oas us_hy_oas |
35% | − 分位高 → 冷 | ||
us_umich_sentiment us_umich_sentiment |
25% | + 分位高 → 热 | ||
| 流动性 | 20% | us10y_real_yield us10y_real_yield |
25% | − 分位高 → 冷 |
美元指数 dxy |
15% | − 分位高 → 冷 | ||
us_nfci us_nfci |
35% | − 分位高 → 冷 | ||
us_walcl us_walcl |
25% | + 分位高 → 热 |
history 历史极值与对应事件
下表展示每个市场综合温度的历史最热 / 最冷点,并匹配那段时间的代表性宏观事件。今天的「历史分位」就是当前温度在这条时间线里的位置。
「历史分位」= 当前综合温度在自身有数据以来全部交易日里的百分位排序。99% 表示比历史上 99% 的日子都热。
| 市场 | 类型 | 日期 | 温度 | 对应事件 |
|---|---|---|---|---|
| 🇨🇳 CN 中国 A 股 | 📍 今日水平 | 2026-05-14 | 79° (P79) | (区间内无显著事件标记) |
| 🇨🇳 CN 中国 A 股 | 🔥 历史最热 | 2013-01-16 | 100° | (区间内无显著事件标记) |
| 🇨🇳 CN 中国 A 股 | 🧊 历史最冷 | 2014-05-19 | 0° | (区间内无显著事件标记) |
| 🇭🇰 HK 香港 | 📍 今日水平 | 2026-05-14 | 14° (P15) | (区间内无显著事件标记) |
| 🇭🇰 HK 香港 | 🔥 历史最热 | 2021-02-23 | 97° | 2021 南向资金井喷 / 科技股狂热 |
| 🇭🇰 HK 香港 | 🧊 历史最冷 | 2018-04-06 | 1° | (区间内无显著事件标记) |
| 🇺🇸 US 美国 | 📍 今日水平 | 2026-05-14 | 87° (P70) | (区间内无显著事件标记) |
| 🇺🇸 US 美国 | 🔥 历史最热 | 2018-01-30 | 100° | (区间内无显著事件标记) |
| 🇺🇸 US 美国 | 🧊 历史最冷 | 2022-03-07 | 2° | 2022 美联储激进加息周期 |
info 需要知道的几个细节
- 权重不会随时间变化——一旦订就锁死,避免曲线拟合。一周温度变化的归因也是用这套固定权重做的。
- 10 年滚动窗口意味着遇到从未有过的极端值会被压在 0 或 100。这是设计——温度计衡量的是「相对历史的位置」,不是绝对水平。
- data_quality 字段会标
ok(三个子温度都齐)或<sub>_unavailable(如liquidity_unavailable,表示该子温度当天所有指标都缺数据)。子温度内单指标缺失会自动按可用权重重归一,不进 data_quality 字段。 - 日报 (gold/brief) 是另一回事——LLM 或模板只是把上面这些 silver 数字串成一段叙事,不会引入新计算。