# Validating Financial Data

> 在數據收集（collecting-market-data, scanning-macro-news）與分析鏈之間的強制驗證閘門。執行三層數據品質檢核：多源交叉對標、統計異常偵測、LLM 邏輯與真實性審查。遵循「Garbage In, Garbage Out」原則——所有下游分析的品質上限取決於此技能。

- Skill: `alanlee0323/validating-financial-data` (Agent Skill)
- Install (CLI): `npx skillmds@latest add alanlee0323/validating-financial-data`
- Raw SKILL.md: https://api.skillmd.com/api/skills/alanlee0323/validating-financial-data/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: Alanlee0323 (https://skillmd.com/u/alanlee0323)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/alanlee0323/validating-financial-data

---


# Validating Financial Data

## When to use this skill
- **強制觸發：** 每次 `collecting-market-data` 或 `scanning-macro-news` 執行完畢後，在數據進入任何分析技能之前。
- 當估值結論或建議涉及重大資金決策（如再平衡、大額建倉）。
- 當用戶要求事實查核（fact-check）特定數據點。
- 當上游數據出現 ⚠️ 或 🚨 標記時（異常值已被偵測但尚未驗證）。
- 當分析結論與直覺「感覺不對」時——觸發回溯驗證。

## Workflow

1. Plan
- 分類待驗證數據：
  - **量化數據 (Quantitative)：** 股價、財務數字、經濟指標、匯率
  - **質化資訊 (Qualitative)：** 新聞事件、管理層聲明、政策解讀、傳聞
  - **衍生數據 (Derived)：** 估值倍數、成長率、排名、比較結論
- 確定驗證優先級：
  - 🔴 高：直接影響買賣決策的數據（持倉股價、關鍵財務指標）
  - 🟡 中：影響分析框架的數據（宏觀指標、產業數據）
  - 🟢 低：背景資訊（歷史類比、一般性敘述）

2. Execute — 三層驗證

  ### Layer 1：多源交叉對標 (Multi-Source Cross-Referencing)

  **目的：** 確保同一數據點在多個獨立來源中一致。

  **執行方法：**
  - 對每個關鍵量化數據點，至少查詢 2 個獨立來源。
  - 搜尋模板：
    - 股價：`"{TICKER} stock price"` 對比 Yahoo Finance / Google Finance / MarketWatch
    - 財務數據：SEC 10-Q/10-K vs 財經數據庫 vs 公司 IR 頁面
    - 經濟指標：官方機構（BLS/BEA/FRED）vs 財經新聞引用值
    - 台股：公開資訊觀測站 vs 證交所 vs Yahoo 奇摩股市

  **資訊源信譽分層：**
  | 層級 | 來源類型 | 信譽權重 | 範例 |
  |---|---|---|---|
  | T1（最高） | 官方公告/監管文件 | 100% | SEC filing, 公開資訊觀測站, 央行公告 |
  | T2 | 專業通訊社/數據商 | 90% | Bloomberg, Reuters, FactSet, S&P Capital IQ |
  | T3 | 主流財經網站 | 75% | Yahoo Finance, Google Finance, MarketWatch |
  | T4 | 一般媒體/分析 | 50% | CNBC, 經濟日報, 財經部落格 |
  | T5（最低） | 社群媒體/匿名 | 20% | Reddit, PTT, Twitter/X, 未署名文章 |

  **交叉驗證規則：**
  - 差異 ≤ 0.1%：✅ 通過（價格可能因收盤時間微差）
  - 差異 0.1%-1%：⚠️ 標記，取 T1/T2 來源的值
  - 差異 > 1%：🚨 阻斷，必須查明原因（可能是：股票分割、幣別錯誤、日期錯誤、數據延遲）
  - **低信譽源（T4/T5）發出重大情報時：** 必須觸發 T1/T2 來源的二次確認

  ### Layer 2：統計異常偵測 (Statistical Anomaly Detection)

  **目的：** 用量化方法自動過濾不合理的數據點。

  **執行方法：**

  a) **合理性邊界檢查 (Schema Validation)**
  | 數據類型 | 合理範圍 | 異常觸發 |
  |---|---|---|
  | 股價 | > $0, 單日漲跌 ≤ ±30% | 負值或超範圍 |
  | PE Ratio | 0-200（正常）；負值或 >1000 需檢查 | PE < 0 或 > 500 |
  | 毛利率 | 0%-100%（一般）；部分產業可 < 0% | > 100% |
  | 營收成長率 | -100% 至 +500%（極端但可能） | > +500% 或數值異常 |
  | 殖利率 | 0%-15%（一般） | > 20% 或 < 0% |
  | 匯率 USD/TWD | 25-40（歷史區間） | 超出 20-50 |
  | VIX | 8-90（歷史區間） | 超出此範圍 |

  b) **離群值偵測 (Outlier Detection)**
  - **Z-score 方法：** 計算數據點相對於近 20 日均值的 Z-score。
    - |Z| > 2：⚠️ 需要確認是真實波動還是數據錯誤
    - |Z| > 3：🚨 高度可疑，強制二次驗證
  - **適用場景：** 成交量、價格變動、財務指標的季度變化

  c) **一致性檢查 (Consistency Check)**
  - 同一公司的多個財務指標應內部一致：
    - 營收 × 毛利率 ≈ 毛利（誤差 < 1%）
    - EPS × 股數 ≈ 淨利（誤差 < 2%）
    - 若 PE 為正但 EPS 為負 → 數據矛盾 🚨
  - 時間序列一致性：
    - 今年營收 vs 去年營收 + 營收成長率 → 是否算術一致

  ### Layer 3：LLM 邏輯與真實性檢核 (AI-Driven Fact-Checking)

  **目的：** 針對非結構化資訊（新聞、傳聞、管理層聲明）進行邏輯審查。

  **執行方法：**

  a) **多源一致性比對 (Cross-Source Consistency)**
  - 對同一事件，收集至少 3 篇獨立報導。
  - 比對核心要素：日期、金額/數量、人名/公司名、因果關係。
  - 若核心要素有衝突 → 標記為「⚠️ 待核實」並列出各版本。

  b) **LLM 幻覺過濾 (Hallucination Guard)**
  - 在使用 LLM 總結新聞/財報時，強制要求：
    - 列出「原文直接引用」vs「LLM 推論」→ 明確區分事實與推測
    - 若 LLM 聲稱某數字但原文中找不到 → 標記為「⚠️ 可能為模型補全」
  - 自我檢查機制：
    - 要求 LLM 對自己的總結提出「我最可能犯錯的地方是什麼？」
    - 高風險聲明必須附帶原文 URL 與段落引用

  c) **反向查證 (Reverse Verification)**
  - 對「傳聞」或「獨家」報導：
    - 搜尋該公司的官方 IR / Press Release 頁面
    - 搜尋監管機構公告（SEC EDGAR / 公開資訊觀測站）
    - 若 T1 來源無法確認 → 標記為「未經證實傳聞 — 不可作為決策依據」

  d) **時效性驗證 (Temporal Validation)**
  - 確認新聞/數據的發布時間與當前分析的相關性。
  - 超過 7 天的新聞標記為「⚠️ 可能已過時」。
  - 超過 30 天的數據標記為「🚨 陳舊數據 — 需更新」。

3. Validate — 彙總驗證結果
- 計算整體數據品質分數。
- 識別哪些下游分析可能受到數據品質問題的影響。

4. Synthesize — 產出驗證報告
- 將驗證結果結構化輸出。
- 對未通過驗證的數據提出「修正建議」或「阻斷建議」。

## Instructions

- **本技能為強制閘門——不可跳過。** 任何下游分析引用的數據必須標明驗證狀態。
- 驗證的深度與買賣決策的重要性成正比：
  - 日常監控：Layer 1 交叉對標即可
  - 估值分析：Layer 1 + Layer 2
  - 重大資金決策（再平衡/建倉）：Layer 1 + Layer 2 + Layer 3
- 不可僅報告「數據一致」——必須記錄驗證過程（使用了哪些來源、何時檢查的）。
- 發現矛盾時，**絕不覆蓋原始數據**——保留兩方數據並標記差異。
- 所有修正必須標註修正原因與修正前後的值。

### 數據品質分數
| 分數 | 等級 | 含義 | 下游行動 |
|---|---|---|---|
| 90-100 | A | 高品質 — 多源確認，無異常 | 可直接用於決策 |
| 75-89 | B | 良好 — 小差異但已校正 | 可用，附帶注意事項 |
| 60-74 | C | 可用但有疑慮 — 部分數據未完全驗證 | 降低分析信心度 |
| < 60 | D | 不可靠 — 重大矛盾或來源不足 | 🚨 阻斷下游分析，先修正數據 |

### Output template

```markdown
## 🔍 數據驗證報告 — <YYYY-MM-DD>

### 驗證摘要
- 數據點總數：<N>
- 驗證通過：<N> (XX%)
- 需注意：<N> (XX%)
- 已修正：<N> (XX%)
- 阻斷（不可用）：<N> (XX%)
- **整體品質分數：<X> / 100 — 等級 <A/B/C/D>**

### Layer 1：多源交叉對標結果
| 數據點 | 來源 1 (T?) | 來源 2 (T?) | 差異 | 狀態 | 採用值 |
|---|---|---|---|---|---|
| <數據> | <值> (<來源>) | <值> (<來源>) | X.X% | ✅/⚠️/🚨 | <值> |

### Layer 2：統計異常偵測結果
| 數據點 | 原始值 | 合理範圍 | Z-score | 狀態 | 備註 |
|---|---|---|---|---|---|
| <數據> | <值> | <範圍> | <Z> | ✅/⚠️/🚨 | <說明> |

### Layer 3：LLM 邏輯檢核結果
| 資訊 | 來源數 | 一致性 | 官方確認 | 狀態 |
|---|---|---|---|---|
| <新聞/聲明> | <N> | 一致/衝突 | 是/否/未查 | ✅/⚠️/🚨 |

### 修正記錄
| 數據點 | 修正前 | 修正後 | 原因 | 來源 |
|---|---|---|---|---|
| <數據> | <舊值> | <新值> | <原因> | <來源> |

### 阻斷項目（下游分析不可使用）
- <列出不可用的數據點及原因>

### 下游影響評估
- 受影響的分析技能：<列出>
- 建議行動：<修正/重新收集/降低信心度>
```

## Error handling

- 若 web_search 不可用（離線模式），將所有數據標記為「⚠️ 未驗證 — 離線模式」並將品質分數上限設為 60。
- 若某數據點在所有可用來源中都找不到 → 標記為「❓ 不可驗證」，不可用於高影響決策。
- 若 Layer 2 異常偵測觸發但 Layer 1 交叉對標通過 → 數據可能正確但不尋常，標記為「✅⚠️ 已確認的異常值」並搜尋原因。
- 若驗證過程中發現上游收集的數據有系統性錯誤（如幣別全部搞錯），立即阻斷並要求重新收集。

## Resources

- `collecting-market-data`（上游技能：提供待驗證的量化數據）
- `scanning-macro-news`（上游技能：提供待驗證的質化資訊）
- `verifying-financial-conclusions`（互補技能：本技能驗證「輸入數據」，後者驗證「輸出結論」）
- 所有下游分析技能均依賴本技能的驗證結果

