| name | backsolve-miner-vs-metal-ratio-with-fundamentals |
| description | 從網路自動抓取礦業公司財務報表與營運揭露(產量、成本、資本支出),回算「礦業股/金屬本體比率」的基本面解釋與區間門檻(如 1.2/1.7),並輸出可重現的估值拆解(成本因子 / 槓桿因子 / 倍數因子 / 稀釋因子)。 |
<essential_principles>
**比率拆解核心公式**
礦業股/金屬價格比率可分解為四大基本面因子:
R_t ≈ K × M_t × (1-L_t) × C_t × D_t
其中:
- K: 校準常數(由觀測值估計)
- M_t: 倍數因子(EV/EBITDA)
- (1-L_t): 槓桿因子(1 - NetDebt/EV)
- C_t: 成本因子(1 - AISC/S_t)
- D_t: 稀釋因子(Shares_base / Shares_t)
此拆解讓「比率變動」有可歸因的量化解釋。
**AISC 抽取優先順序**
全維持成本(AISC)是礦業股估值的核心驅動:
| 優先級 | 來源 | 方法 |
|---|
| 1 | MD&A / 財報附註 | 關鍵字抽取:「AISC」「all-in sustaining」 |
| 2 | 年報簡報 PDF | 解析表格:$/oz 或 $/ounce |
| 3 | Proxy 回算 | (OpCost + SustCapex + G&A - Byproduct) / Oz |
當直接揭露不可得時,以 proxy 回算補缺;記錄 aisc_method 以標註來源。
**反推邏輯(Backsolve)**
目標:給定目標比率 R*(如歷史頂部 1.7),反推需要哪些因子條件。
單因子反推:假設其他因子不變,只調整單一因子
M* = M_now × (R*/R_now) # 需要的倍數
(1-L*) = (1-L_now) × (R*/R_now) # 需要的去槓桿
C* = C_now × (R*/R_now) # 需要的成本改善 → 反推 AISC*
D* = D_now × (R*/R_now) # 需要的稀釋折扣
雙因子組合:以網格列舉可行組合(如倍數 +20% + 白銀 -15%)。
**事件研究方法**
識別「比率落入底部分位」的歷史事件,回看事件當期的四大因子狀態:
- AISC 是否上升:成本壓力
- NetDebt/EV 是否惡化:槓桿壓力
- EV/EBITDA 是否壓縮:倍數壓力
- Shares 是否上升:稀釋壓力
**數據來源優先順序**
實作「礦業股/金屬價格比率」基本面回算系統:
需要進行什麼操作?
| Response | Action |
|--------------------------------|----------------------------------------------------------------|
| 1, "快速", "quick", "分析" | 執行 `python scripts/fundamental_analyzer.py --quick` |
| 2, "完整", "full", "財報" | 閱讀 `workflows/analyze.md` 並執行 |
| 3, "因子", "factor", "拆解" | 閱讀 `references/fundamental-factors.md` |
| 4, "反推", "backsolve", "門檻" | 閱讀 `references/backsolve-math.md` 並執行反推分析 |
| 5, "事件", "event", "底部" | 閱讀 `workflows/analyze.md` 並聚焦事件研究 |
| 6, "學習", "方法論", "why" | 閱讀 `references/fundamental-factors.md` + `backsolve-math.md` |
| 7, "視覺化", "圖", "chart" | 執行 `python scripts/visualize_factors.py --quick` |
| 8, "共同上漲", "情境", "路徑" | 執行 `python scripts/scenario_path_simulator.py --quick` |
| "比例關係", "漲幅", "要漲多少" | 執行 `python scripts/scenario_path_simulator.py --quick` |
| 提供參數 (如 ETF/金屬代理) | 閱讀 `workflows/analyze.md` 並使用參數執行 |