Skip to content

[feat·多市場] 台股任意格式自動轉標準 CSV + 台股個股報價 — engine 只吃標準格式,Claude Step 0 負責認格式 #173

Description

@atomchung

來源

owner 於 2026-07-12 拍板。2026-07-11 雙跑對比發現:fomo-kernel 只吃 Firstrade CSV schema(csv.DictReader + RecordType/Action/Symbol/Quantity/Price/TradeDate),台股對帳單是 .md 中文表格(TWD),load() 的門都進不了。後果:fomo-kernel 把「最大單點依賴」講成 GOOG 20.6%,但用戶真相是台積電 combined ~38.4%(TSM 全曝險 ~61%)——engine 的宇宙裡根本沒有台積電,因為台股從沒進過它的輸入。

對照:inote 的 combined 口徑是 Claude 人工讀 .md + OCR 截圖手動維護 portfolio.md,非 engine 算。fomo-kernel 沒有這層。

owner 方向:任意格式自動轉

假設輸入可能是任何格式(券商 .md 對帳單、App 截圖、不同券商 CSV 欄位),fomo-kernel 要自動轉成系統標準格式再餵 engine。

架構分工(符合 #89 engine 不 hardcode 格式)

  • Claude 端(SKILL Step 0):認得任意格式 → 轉成標準 CSV(含 Market/Currency 欄)。這是世界知識職責,engine 不長格式 parser。與 ledger.py snapshot 走 Step 0 標準化同款。
  • engine 端:只吃標準 CSV。多市場幣別基礎設施已在feat(engine): 多市場幣別傳導 + 匯率 gate — 台股美股混倉不再靜默算錯 (PR-2a of #129) #132/PR-2a:Market/Currency 欄、匯率 gate、混倉聚合入 USD)。缺口 = 台股個股報價fetch_prices 需掛 .TW(上市)/.TWO(上櫃)suffix 抓 yfinance;本 issue 要確認現況並補。

待定 / 設計點

  1. 台股標準 CSV 欄位慣例:Market=TWCurrency=TWD、ticker 用代號(2330)還是帶 suffix(2330.TW)——engine 內部報價 key 與呈現 key 的映射。
  2. 台股報價源:yfinance .TW/.TWO;上市/上櫃如何判別(Step 0 標準化時標記 or engine 查表)。
  3. 截圖/.md → 標準 CSV 的轉換在 Step 0 怎麼落(買賣明細 vs 持倉 snapshot 兩種輸入都要能轉;snapshot 走 ledger --cash/positions)。
  4. 台股缺即時報價時的誠實降級(對齊 last_px max_stale_days 既有邏輯)。

驗收

cross-ref #129(多市場母 issue)、#132(已 merged 的幣別傳導)。與 B 路線 issue 的多幣別現金有交集(台股現金 = TWD cash 桶),實作時對齊。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions