---
name: sector-rotation-monitor
description: >
  MUST USE when 定时分析港股“金融 vs 科技”轮动、恒指风格切换，或监控相对强弱/
  美债利率/人民币/南向资金并生成告警。触发词：轮动/金融科技/恒指风格/定时分析/
  监控/告警/金融跑赢/科技跑输/rotation monitor。只做状态监控，不预测涨跌，
  不构成交易建议。
---

# 金融 vs 科技轮动监控技能

> 目标：把“金融和科技会不会轮动”变成**每天可复算的状态表**，而不是拍脑袋。
> 一句话：**先定口径，再看相对强弱，最后看宏观触发；表格里每个数字都必须写清含义。**

## 何时用

- 每日/每周定时分析港股金融与科技的相对强弱；
- 回答“现在是不是该从金融切科技 / 科技切金融”；
- 监控美债 10Y、USD/CNY、HIBOR、南向资金是否出现轮动触发；
- 给邮件/报告生成“金融 vs 科技”监控段落。

不适用：个股基本面（走 `equity-analysis`）；策略显著性/回测（走 `hypothesis-validation`）；
指数权重/归因（走 `market-diagnostics`）。

## 快速运行

```bash
python3 scripts/rotation_monitor.py
python3 scripts/rotation_monitor.py --alert
python3 scripts/rotation_monitor.py --out output/rotation_monitor/latest.md
```

- `--alert`：有强标记时 exit 1，便于 cron/CI 发告警。
- 输出：`output/rotation_monitor/YYYY-MM-DD.md` + `.json`。
- 代码：`scripts/rotation_monitor.py`。

## 输出硬要求（用户指定）

**所有数字必须放在表格里，并同步解释含义。** 不允许只给一串数字。

必须至少有三张表：

### 1. 相对强弱
| 指标 | 数值 | 含义 | 当前读法 |
|---|---:|---|---|
| 金融篮子累计 | 例：+108.6% | 2020 以来等权金融股累计涨跌 | 金融长期占优 |
| 科技篮子累计 | 例：+53.3% | 2020 以来等权科技股累计涨跌 | 科技落后 |
| 20/60/120/252d 相对 | 例：+11.9% | 金融相对科技的超额 | 金融/科技/持平 |
| 相对强弱分位 | 例：100% | 当前相对强弱在 2020 以来历史位置 | 极值高位/中性/低位 |
| 60d 相关性 | 例：0.47 | 两篮子日收益同步度；越低越分散 | 低/中/高相关 |

### 2. 宏观与资金
| 指标 | 数值 | 含义 | 当前读法 |
|---|---:|---|---|
| 美债 10Y | 5.26% | 全球无风险利率锚；上行压科技估值 | 20d +51bp，利率上行 |
| USD/CNY | 6.654 | 人民币汇率；数值升=人民币贬 | 20d −0.8%，大致稳定 |
| HIBOR 3M | 3.21% | 香港短期资金成本；升=流动性收紧 | 20d −2.9bp，成本下降 |
| 南向 20d | −9.3 HK$bn | 南向估算净买入；正=流入 | 流出，承接力偏弱 |

### 3. 状态标记
| 标记 | 触发条件 | 当前是否触发 | 解释 |
|---|---|---|---|
| `FIN_CROWDED` | 1y 相对 ≥+50% 且分位 ≥90 | 是/否 | 金融拥挤，赔率下降 |
| `TECH_WEAK` | 1y 相对 ≥+30% | 是/否 | 科技相对弱，等催化 |
| `CORR_LOW` | 60d 相关 <0.45 | 是/否 | 分散度上升，轮动迹象 |
| `RATE_UP` | 美债 10Y 20d ≥+30bp | 是/否 | 科技估值受压，银行 NIM 受益 |
| `RATE_DOWN` | 美债 10Y 20d ≤−30bp | 是/否 | 反向 |
| `CNY_WEAK` | USD/CNY 20d ≥+1% | 是/否 | 外资/科技风险偏好受压 |
| `CNY_STRONG` | USD/CNY 20d ≤−1% | 是/否 | 利好外资/科技 |
| `SOUTHBOUND_OUT` | 南向 20d ≤−20bn | 是/否 | 港股承接力下降 |
| `SOUTHBOUND_IN` | 南向 20d ≥+20bn | 是/否 | 港股承接力上升 |

最后必须有一句**条件化结论**，例如：

> 金融相对拥挤且美债利率上行：这是“金融仍强、科技继续受压”的组合；
> 轮动到科技需要利率见顶或科技盈利超预期，当前未确认。

## 口径（写死，不要改）

- 金融篮子：HSBC、工行、建行、招行、平安、友邦、中行、中银香港、港交所，**等权**。
- 科技篮子：腾讯、阿里、小米、美团、网易、中芯、京东、百度、快手、联想，**等权**。
- 相对强弱 = 金融累计净值 ÷ 科技累计净值。
- 收益：前复权、日频；不计成本、股息、成分变化。
- 历史起点：2020-01-02；分位按 2020 以来。
- 这是**自建篮子**，不是官方行业指数。

## 数据源

| 数据 | 文件 | 更新 |
|---|---|---|
| 金融/科技股价 | `data/hk_broad/snapshot/*.pkl` | 每日快照 |
| 美债 10Y | `data/us_market_snapshot/treasury_yield.pkl` | 每日快照 |
| USD/CNY | `data/cnh_hibor/usdcny.csv` | 每日 |
| HIBOR 3M | `data/cnh_hibor/hibor_hkd.csv` | 每日 |
| 南向持股 | `data/southbound_holdings/southbound_long.csv` | 每日/周 |
| 银行 NIM/NPL/CET1 | `data/bank_reports/bank_metrics.csv` | 季/年 |
| 科技盈利/AI 资本开支 | 年报/季报 | 季 |
| 中国社融/信贷 | akshare 宏观接口 | 月 |

## 定时调度

每个交易日港股收盘后跑一次（HKT 17:30 左右）：

```bash
30 9 * * 1-5 cd /data/fortune && python3 scripts/rotation_monitor.py --alert
```

- exit 1 时触发邮件/CI 告警；
- 周报：每周五跑一次，附上 20/60/120/252d 相对强弱；
- 月报：加中国社融、银行 NIM/NPL、科技财报；
- 告警只提醒“状态变化”，不自动下单。

## 基本面补充（不要日频硬编）

- **银行**：NIM、NPL、拨备覆盖、CET1、分红率；季/年更新。
- **科技**：营收/经营利润、AI 资本开支、游戏/广告增速；季度更新。
- **中国信用**：社融、信贷、地产销售；月度更新。
- 基本面数据没有更新时，报告中必须写“未更新”，不得用旧值假装当期。

## 硬规则

```
G1 只给数字、不解释含义                     → FAIL
G2 用日频价格代替基本面判断                 → FAIL（只能做状态，不做价值结论）
G3 把监控标记当买卖信号                     → FAIL
G4 不写口径（等权/起点/复权/成本）           → FAIL
G5 不写数据缺口（NPL/CET1/财报未更新）       → FAIL
G6 取单一窗口最好结果当结论                 → FAIL
G7 结论无“适用范围”                         → FAIL
```

## 限制

- 自建等权篮子 ≠ 官方行业指数；
- 阈值是监控规则，不是回测出来的 alpha；
- 只有 2020 以来样本，不能据此预测下次轮动日期；
- 未计交易成本、股息、成分调整；
- 不构成买卖建议。

## 文件

- 脚本：`scripts/rotation_monitor.py`
- 输出：`output/rotation_monitor/YYYY-MM-DD.md` / `.json`
- 相关技能：`market-diagnostics`（权重/归因）、`hypothesis-validation`（显著性）、`equity-analysis`（个股基本面）
