---
name: analyze-jgb-insurer-superlong-flow
description: 從日本保險公司對超長期(10年以上)JGB 的淨買賣時間序列,自動產出「本月是否創紀錄淨賣出、連續淨賣出月數、期間累積淨賣出」等結論。
---
# 分析日本保險公司超長期 JGB 淨買賣流量 Skill
以 JSDA 公開數據驗證「保險公司創紀錄賣超長端國債」等敘事,提供可複製的摘要(含 streak / record / 累積值)。
**核心數據來源:JSDA 公社債店頭売買高(Trading Volume of OTC Bonds)**
日本證券業協會(JSDA)自 2018/05 起將投資人別交易統計整併進「Trading Volume of OTC Bonds」資料集。
**數據位置**:
- 當前財年:https://www.jsda.or.jp/shiryoshitsu/toukei/tentoubaibai/koushasai.xlsx
- 歷史財年:https://www.jsda.or.jp/shiryoshitsu/toukei/tentoubaibai/koushasai{YYYY}.xlsx
**關鍵 Sheet**:
- `(J)合計差引` - 淨買賣額(Sell - Purchase)
**數據特徵**:
- 頻率:月度
- 分類:投資人類型 × 債券類型 × 天期桶
- 單位:億日圓(100 million yen)
- 延遲:約 T+1 個月
**注意**:2018/05 前的舊版「Trends in Bond Transactions (by investor type)」已停止更新。
**符號慣例(重要!)**
JSDA 使用「賣出 - 買入」作為差引計算方式:
```
net_sale = 賣出金額 - 買入金額
```
- **正值 = 淨賣出**(賣出 > 買入,需求減少)
- **負值 = 淨買入**(買入 > 賣出,需求增加)
這與部分新聞報導的符號相反,需特別注意。
**天期桶口徑對齊**
JSDA Excel 欄位結構(第 4 列):
| JSDA 欄位 | 英文 | 說明 |
|-----------|------|------|
| 超長期 | Interest-bearing Long-term (over 10-year) | 10 年以上利付債 |
| 利付長期 | Interest-bearing Long-term | 5-10 年利付債 |
| 利付中期 | Interest-bearing Medium-term | 2-5 年利付債 |
| 割引 | Zero-Coupon | 零息債 |
| 国庫短期証券等 | Treasury Discount Bills | 短期國庫券 |
**本 Skill 使用**:`超長期`(對應新聞常見的「10+ years」或「super-long」口徑)
**投資人分類**
| JSDA 分類 | 英文 | 說明 |
|-----------|------|------|
| 生保・損保 | Life & Non-Life Insurance Companies | 壽險 + 產險合計 |
| 都市銀行 | City Banks | 大型商業銀行 |
| 地方銀行 | Regional Banks | 區域性銀行 |
| 信託銀行 | Trust Banks | 含年金管理 |
| 外国人 | Foreigners | 海外投資者 |
**本 Skill 使用**:`生保・損保`(保險公司合計)
**歷史極值判斷邏輯**
```python
record_high = max(series) # 最大淨賣出(正值最大)
is_record_sale = (latest == record_high) AND (latest > 0)
```
**注意事項**:
- 數據起點會影響「歷史紀錄」的判定,輸出必須說明樣本期間
- 若僅為近期極值,需標註「近 N 個月新高」
驗證「日本保險公司創紀錄賣超長端 JGB」等敘事,並提供:
1. **本月淨賣出/買入**:最新月份數值(億日圓)
2. **是否創紀錄**:判斷是否為樣本最大淨賣出(正值最大)
3. **連續淨賣出月數**:streak_len
4. **本輪累積淨賣出**:cum_over_streak
5. **Z-score 與分位數**:相對歷史的極端程度
**最快的方式:執行快速分析**
```bash
cd .claude/skills/analyze-jgb-insurer-superlong-flow
pip install pandas numpy openpyxl # 首次使用
python scripts/jsda_flow_analyzer.py --quick
```
**輸出範例**(2025/12 實測結果):
```markdown
## 日本保險公司超長期 JGB 淨買賣驗證報告
**分析期間**:2022-04 ~ 2025-12(45 個月)
### 核心結論
| 指標 | 數值 | 說明 |
|------|------|------|
| 本月(2025-12)| **8,224 億日圓** | 淨賣出 |
| 是否創歷史紀錄 | **✓ 是** | 全樣本 (45 個月) |
| 連續淨賣出月數 | **5 個月** | 自 2025-08 起 |
| 本輪累積淨賣出 | **13,959 億日圓** | 1.40 兆日圓 |
### Headline Takeaways
1. ✓ 驗證屬實:日本保險公司在 2025/12 創下歷史最大單月淨賣出
2. 已連續 5 個月淨賣出超長期國債,累積 1.40 兆日圓
3. 當前淨賣出規模處於歷史極端區間(Z-score: 2.71)
```
**完整分析(含歷史比較)**:
```bash
python scripts/jsda_flow_analyzer.py --full --format json
```
**強制重新下載數據**:
```bash
python scripts/jsda_flow_analyzer.py --quick --refresh
```
您想要執行什麼操作?
1. **快速檢查** - 查看最新月份的淨買賣與連續淨賣出狀態
2. **完整分析** - 執行完整的歷史比較與極值判斷
3. **驗證新聞** - 輸入新聞的數字,對比 JSDA 原始數據
4. **JSON 輸出** - 輸出結構化 JSON 供後續處理
**請選擇或直接執行分析。**
| Response | Action |
|---------------------------------|-------------------------------------|
| 1, "快速", "quick", "check" | `python scripts/jsda_flow_analyzer.py --quick` |
| 2, "完整", "full", "analyze" | `python scripts/jsda_flow_analyzer.py --full` |
| 3, "驗證", "verify", "新聞" | 讀取 workflows/verify-claim.md |
| 4, "json", "JSON" | `python scripts/jsda_flow_analyzer.py --format json` |
**Type**: flag
**Description**: 快速檢查模式(使用快取數據)
**Type**: flag
**Description**: 完整分析模式
**Type**: int
**Description**: 起始財年(日本財年 4 月開始)
**Type**: int
**Description**: 回溯月數(預設全樣本)
**Type**: string
**Options**: `json` | `markdown`
**Description**: 輸出格式
**Type**: flag
**Description**: 強制重新下載數據
**Type**: string
**Description**: 輸出檔案路徑
**JSON 輸出結構**:
```json
{
"skill": "analyze_jgb_insurer_superlong_flow",
"version": "1.0.0",
"as_of": "2026-01-26",
"data_source": {
"name": "JSDA Trading Volume of OTC Bonds (公社債店頭売買高)",
"url": "https://www.jsda.or.jp/shiryoshitsu/toukei/tentoubaibai/",
"sheet": "(J)合計差引"
},
"parameters": {
"investor_group": "life_and_nonlife_insurance",
"investor_label": "生保・損保 (Life & Non-Life Insurance Companies)",
"maturity_bucket": "super_long",
"maturity_label": "超長期 (Interest-bearing Long-term over 10-year)",
"sign_convention": "正值=淨賣出 (Sell-Purchase), 負值=淨買入",
"unit": "100 million yen (億円)"
},
"analysis_period": {
"start": "2022-04",
"end": "2025-12",
"months": 45
},
"latest_month": {
"date": "2025-12",
"net_sale_100m_yen": 8224,
"net_sale_trillion_yen": 0.8224,
"interpretation": "淨賣出"
},
"record_analysis": {
"is_record_sale": true,
"record_sale_100m_yen": 8224,
"record_sale_date": "2025-12",
"record_purchase_100m_yen": -8889,
"record_purchase_date": "2023-03",
"lookback_period": "全樣本 (45 個月)"
},
"streak_analysis": {
"consecutive_net_sale_months": 5,
"streak_start": "2025-08",
"cumulative_net_sale_100m_yen": 13959,
"cumulative_net_sale_trillion_yen": 1.3959
},
"historical_stats": {
"mean_100m_yen": -2025,
"std_100m_yen": 3785,
"latest_zscore": 2.71,
"latest_percentile": 0.9778
},
"headline_takeaways": [
"✓ 驗證屬實:日本保險公司在 2025/12 創下歷史最大單月淨賣出(8,224 億日圓)",
"已連續 5 個月淨賣出超長期國債,累積金額 13,959 億日圓(1.40 兆日圓)",
"當前淨賣出規模處於歷史極端區間(Z-score: 2.71,超過 2 個標準差)"
]
}
```
**參考文件** (`references/`)
| 文件 | 內容 |
|-------------------|------------------------------------------|
| data-sources.md | JSDA 數據來源與 XLS 下載說明 |
| methodology.md | 計算方法論(streak、record、cumulative) |
| Script | Command | Purpose |
|------------------------|---------------|--------------------|
| jsda_flow_analyzer.py | `--quick` | 快速檢查 |
| jsda_flow_analyzer.py | `--full` | 完整分析 |
| jsda_flow_analyzer.py | `--refresh` | 強制重新下載數據 |
Skill 成功執行時:
- [x] 輸出最新月份淨賣出/買入數值
- [x] 判斷是否為歷史極值(含回溯期間說明)
- [x] 計算連續淨賣出月數與累積金額
- [x] 明確標示天期桶與投資人口徑
- [x] 提供 Z-score 與分位數
- [x] 可操作的 headline takeaways
```
analyze-jgb-insurer-superlong-flow/
├── SKILL.md # 本文件(主入口)
├── skill.yaml # 前端展示元數據
├── workflows/
│ ├── quick-check.md # 快速檢查工作流
│ ├── full-analysis.md # 完整分析工作流
│ └── verify-claim.md # 驗證新聞工作流
├── references/
│ ├── data-sources.md # 資料來源說明
│ └── methodology.md # 方法論與公式
├── scripts/
│ └── jsda_flow_analyzer.py # 主分析腳本(含數據下載)
└── data/
└── cache/ # 自動緩存目錄(.gitignore)
```