Macro-skills analyze-gas-fertilizer-contract-shock

displayName: 分析天然氣暴漲對化肥價格衝擊

install
source · Clone the upstream repo
git clone https://github.com/fatfingererr/macro-skills
manifest: skills/analyze-gas-fertilizer-contract-shock/skill.yaml
source content

displayName: 分析天然氣暴漲對化肥價格衝擊 emoji: "\U0001F4A8" authorUrl: https://github.com/fatfingererr/macro-skills

tools:

  • claude-code

featured: false installCount: 0

testQuestions:

  • question: '最近天然氣暴漲是否導致化肥價格跟隨上漲?' imagePath: images/gas-fert-shock-2026-01-29.png expectedResult: | 結論:敘事有數據支撐,但相關性偏低


    關鍵發現

    1. 天然氣 Shock Regimes(9 個) ┌────────────────────┬───────────────┬─────────────────────┐ │ 時間 │ 峰值 │ 漲幅 │ ├────────────────────┼───────────────┼─────────────────────┤ │ 2026-01-20 ~ 01-22 │ $5.045/MMBtu │ +29.1% ← 最近的暴漲 │ ├────────────────────┼───────────────┼─────────────────────┤ │ 2025-11-06 ~ 11-14 │ $4.646 │ +6.6% │ ├────────────────────┼───────────────┼─────────────────────┤ │ 2025-11-19 ~ 11-20 │ $4.667 │ +2.6% │ ├────────────────────┼───────────────┼─────────────────────┤ │ 2025-03 月多次 │ $4.45 ~ $4.49 │ 短暫 spike │ └────────────────────┴───────────────┴─────────────────────┘
    2. 化肥(Urea)Spike Regimes(2 個) ┌────────────┬─────────────┐ │ 時間 │ 價格 │ ├────────────┼─────────────┤ │ 2025-10-27 │ $394/ton │ ├────────────┼─────────────┤ │ 2025-05-01 │ $473.25/ton │ └────────────┴─────────────┘
    3. 領先落後分析
    • 天然氣領先化肥約 21 天(在合理範圍 7-56 天內)
    • 交叉相關係數:0.131(偏低)
    • 同期相關:0.041(幾乎無關)

    三段式因果檢驗 ┌─────────────────────────┬────────┬───────────────────────────────────┐ │ 條件 │ 結果 │ 說明 │ ├─────────────────────────┼────────┼───────────────────────────────────┤ │ A. 天然氣出現 shock │ ✓ 通過 │ 9 個 shock regime,最大漲幅 29.1% │ ├─────────────────────────┼────────┼───────────────────────────────────┤ │ B. 化肥在之後出現 spike │ ✓ 通過 │ 化肥 spike 晚於天然氣約 59 天 │ ├─────────────────────────┼────────┼───────────────────────────────────┤ │ C. 領先落後支持因果 │ ✓ 通過 │ lag=21 天在合理範圍內 │ └─────────────────────────┴────────┴───────────────────────────────────┘

    解讀

    最近的天然氣暴漲(2026/1/20-22,+29.1%)尚未完全傳導至化肥價格,原因可能是:

    1. 傳導需要時間(歷史顯示約 21 天)
    2. 化肥目前價格 $409/ton,相對 2025 年高點 $473 仍有空間
    3. 相關係數僅 0.131,說明化肥價格還受其他因素影響(運費、季節性需求、政策等)

    若敘事成立,預期化肥價格在未來 2-4 週內可能開始反應。


    替代解釋

    • 化肥價格可能受庫存、出口政策、農業需求週期等因素主導
    • 低相關係數表明天然氣成本傳導不是唯一驅動因素
  • question: '如何判斷天然氣價格是否出現衝擊?' expectedResult: | 根據這個技能的方法論,判斷天然氣價格是否出現「衝擊(shock)」使用的是 雙重確認機制:

    1. Rolling Z-Score 偵測
      z_t = (r_t - rolling_mean(r, window)) / rolling_std(r, window)
    • r_t = 當日報酬率(日變動)
    • window = 60 天滾動視窗
    • 閾值:z ≥ 3.0 視為 shock

    意義:當天的價格變動超過過去 60 天均值 3 個標準差以上,代表是統計上的極端事件。

    1. 斜率偵測(補充確認)

    slope_t = (price_t / price_{t-k} - 1) / k

    • 閾值:每日漲幅 ≥ 1.5%
    • 捕捉的是「持續快速上漲」而非單日跳動
    1. Regime 合併

    連續觸發 shock 的交易日會被合併為一個 shock regime(衝擊區間),輸出:

    • 起始日 / 結束日 / 峰值日
    • 區間累計漲幅

    判斷流程 ┌──────────────────────────────────┬─────────────────────┐ │ 條件 │ 狀態 │ ├──────────────────────────────────┼─────────────────────┤ │ z-score ≥ 3.0 或 日斜率 ≥ 1.5% │ 單日 shock │ ├──────────────────────────────────┼─────────────────────┤ │ 連續多日觸發 │ 合併為 shock regime │ ├──────────────────────────────────┼─────────────────────┤ │ 有 regime 且化肥隨後也出現 spike │ 敘事成立的前提 │ └──────────────────────────────────┴─────────────────────┘ 簡單來說:價格變動相對於近期歷史極端異常(3σ)或持續快速上漲(1.5%/天),就判定為 shock。這是統計驅動的方法,不依賴主觀判斷。

qualityScore: overall: 65 badge: 白銀 evaluatedAt: "2026-01-28"

metrics: problemFit: 75 correctness: 65 dataGovernance: 60 robustness: 55 maintainability: 70 usability: 65

metricDetails: problemFit: score: 75 strengths: - 問題定義精準:「檢驗天然氣→化肥敘事」 - 三段式因果檢驗架構完整 - 輸入參數設計詳盡(te_symbols, spike_detection, lead_lag) improvements: - 可增加更多化肥種類(DAP, 磷肥等) - 缺資料分支處理可更系統化

correctness:
  score: 65
  strengths:
    - 方法論清晰(z-score + 斜率)
    - 領先落後分析邏輯合理
    - 有完整的 pseudo-code 說明
  improvements:
    - 需實際運行驗證
    - 可增加更多 golden case
    - 數學公式可更精確

dataGovernance:
  score: 60
  strengths:
    - Chrome CDP 爬蟲已實作完成
    - 有 FRED + World Bank 備援方案
    - 快取策略已規劃(12 小時有效期)
  improvements:
    - TradingEconomics 爬蟲授權需注意
    - 缺少 cross-validate 流程

robustness:
  score: 55
  strengths:
    - 有多種數據來源可選
    - 有參數預設值
    - CDP 連線失敗有明確錯誤訊息
  improvements:
    - 缺少獨立的 failure-modes.md
    - 錯誤處理策略可更完善
    - 降級輸出機制待完善

maintainability:
  score: 70
  strengths:
    - manifest.json 完整
    - 目錄結構清晰
    - 模組化腳本設計
    - Chrome CDP 實作乾淨(無 Selenium 依賴)
  improvements:
    - 長期維護性需觀察
    - 版本更新記錄待建立

usability:
  score: 65
  strengths:
    - 輸出結構設計完整
    - 視覺化腳本已實作
    - 有解讀說明與範例輸出
  improvements:
    - 待實際運行產生真實範例
    - 可增加歷史案例對照

details: | 任務適配度(75/100)— 良好 - 問題定義精準,三段式檢驗架構完整 - 待改進:擴展化肥種類、系統化缺資料處理

**正確性(65/100)— 中等**
- 方法論清晰,邏輯合理
- 待改進:實際運行驗證、增加 golden case

**資料治理(60/100)— 中等**
- Chrome CDP 爬蟲已實作,有備援方案
- 待改進:授權說明、交叉驗證

**穩健性(55/100)— 待改進**
- 有基本參數配置
- 待改進:failure-modes、降級機制

**可維護性(70/100)— 良好**
- 結構清晰,純 CDP 實作無額外依賴
- 待改進:長期維護驗證

**輸出可用性(65/100)— 中等**
- 輸出設計完整,視覺化已實作
- 待改進:真實範例、歷史對照

bestPractices:

  • title: 使用多個化肥指標交叉驗證 description: Urea、DAP、磷肥等可能有不同走勢,多指標一致性更可靠
  • title: 關注 regime 時序而非單點 description: 重點是「A 段之後 B 段才出現」的時序關係,非單日波動
  • title: 結合新聞事件驗證 description: 價格 shock 配合 force majeure 新聞,敘事更有說服力
  • title: 區分現貨與期貨 description: TradingEconomics 數據可能是現貨或近月期貨,需注意區分

pitfalls:

  • title: 過度解讀相關性 description: 相關不代表因果,需配合時序與機制分析 consequence: 錯誤歸因價格變動
  • title: 忽略全球供需因素 description: 化肥價格受多因素影響,不只天然氣 consequence: 錯誤單一歸因於天然氣 shock
  • title: 數據頻率不匹配 description: 天然氣日頻與化肥可能週/月頻 consequence: 領先落後分析失準
  • title: 地區差異 description: 美國天然氣與歐洲/亞洲化肥市場關聯可能不同 consequence: 區域性分析結論無法泛化

faq:

  • question: 天然氣和化肥價格真的有關嗎? answer: | 是的,天然氣是生產氨肥(如尿素)的主要原料。

    傳導機制

    1. 天然氣價格上漲 → 氨生產成本上升
    2. 成本上升 → 部分廠商減產或停產(force majeure)
    3. 供給減少 → 化肥價格上漲

    時間滯後

    • 通常 1-8 週
    • 取決於庫存緩衝和合約安排
  • question: 什麼是不可抗力 (Force Majeure)? answer: | Force Majeure(不可抗力)是合約條款,允許供應商在極端情況下 不履行合約義務而不承擔違約責任。

    天然氣→化肥場景

    • 天然氣成本飆升超過合約價格
    • 生產商宣布 force majeure 停產
    • 化肥供給驟減,價格飆漲

    本技能作用

    • 用價格數據檢驗這個敘事是否在時序上成立
    • 不能證明具體公司是否毀約,只能看價格關係
  • question: 為什麼使用 Z 分數偵測事件衝擊? answer: | Z 分數可以標準化不同商品的波動性:

    優點

    • 適應性:不同商品有不同波動水平
    • 可比性:跨商品的衝擊強度可比較
    • 動態閾值:隨市場波動調整

    公式: z = (當日報酬 - 60日平均報酬) / 60日報酬標準差

    當 z >= 3,代表報酬偏離歷史均值 3 個標準差,屬於異常事件。

about: repository: https://github.com/fatfingererr/macro-skills branch: main additionalInfo: | ## 數據來源

**TradingEconomics(主要)**
- Natural Gas: https://tradingeconomics.com/commodity/natural-gas
- Urea: https://tradingeconomics.com/commodity/urea
- DAP: https://tradingeconomics.com/commodity/dap
- 使用 Chrome CDP 爬取 Highcharts 圖表數據

**FRED(備援)**
- DHHNGSP: Henry Hub Natural Gas Spot Price
- 使用 CSV endpoint 直接下載

**World Bank Pink Sheet(備援)**
- 月頻化肥價格數據
- Excel 下載

## 使用場景

1. 社群帖文驗證:看到「天然氣暴漲導致化肥危機」的說法時
2. 研究筆記:撰寫天然氣→化肥傳導機制的分析報告
3. 投資假說:評估天然氣 shock 對農業/化工股的影響

## 技術架構

- **爬蟲方法**:Chrome CDP(透過 WebSocket 連接調試端口)
- **數據提取**:從 Highcharts.charts 全域變數取得圖表數據
- **分析方法**:Rolling z-score + 斜率偵測 + Cross-correlation