來源
#154 於 2026-07-12 owner 拍板:正式啟動 B 路線(帳戶級、含現金),解除該 issue「待討論/決策點 1」的保留(原標記「另議」)。本 issue 是 B 路線的落地規格,對稱於 #164 之於 A 路線。
分工回顧(#154 已定):
前置基礎設施(已在,降低工程量)
可行性發現(2026-07-12 掃全 Firstrade CSV)
- CSV 本來就含 ~370 筆現金流 row(171 筆
Other/Financial、107 筆 Dividend/Financial、83 筆 Interest/Financial、少數 Deposit),每筆 Amount 欄即現金增減。engine 現在在 trade_recap.py:117 的 RecordType != "Trade" 把它們全部丟棄(進 skip_non_trade 計數)。
- 最乾淨算法:完整 CSV 下
cash = Σ Amount(買賣的 Amount 已是含手續費淨額)。
- 關鍵風險 — 完整性:
last_state.json 的 holdings.is_complete: false 表示持倉靠 snapshot 錨點重建、CSV 非從開戶第一天完整。現金同理——漏一筆 deposit 整個 cash weight 就錯。⇒ 正確設計必須以「當前現金餘額錨點」為準(複用 ledger --cash),交易流只做錨點之後的疊加,不做全期盲算。
分階段 PR(各自獨立可 review)
多幣別現金
USD 現金與 TWD 現金分開記(對齊 #51/#129 原幣記帳),聚合時入 USD 視圖;缺匯率照 honesty_ledger 既有路子誠實標近似。
事實鏈路(改動時照 CLAUDE.md 連動)
engine(現金 ingestion + TWR/IRR 模組 + honesty_ledger cash-drag key)↔ SKILL Step 0(收現金錨點)+ Step 1 欄位 ↔ card-spec 帳戶級三柱講法 ↔ test_tr_json_contract 的 TR_JSON_KEYS / HL_KEYS ↔ EVALS/eval-design。TR_JSON 頂層新增欄位 = 動契約測試。
驗收
refs #154 · 承接 #164(A 路線)· 前置 #163 已合(成本基礎歸一)· ledger --cash 已支援
來源
#154 於 2026-07-12 owner 拍板:正式啟動 B 路線(帳戶級、含現金),解除該 issue「待討論/決策點 1」的保留(原標記「另議」)。本 issue 是 B 路線的落地規格,對稱於 #164 之於 A 路線。
分工回顧(#154 已定):
前置基礎設施(已在,降低工程量)
ledger.py append-snapshot POS.json [--cash JSON]已支援現金錨點(L27 CLI、L330 接受{"as_of":.., "positions":[...], "cash":..})。B 路線的現金餘額錨點不用從零建。外部現金流 = 期末現金 − 期初現金 + 買入總額 − 賣出總額 − 股息;Modified Dietz(近似 TWR,不需每日 NAV);鏈接多期 → TWR vs 大盤;有日期現金流序列 → 解 IRR。可行性發現(2026-07-12 掃全 Firstrade CSV)
Other/Financial、107 筆Dividend/Financial、83 筆Interest/Financial、少數Deposit),每筆Amount欄即現金增減。engine 現在在trade_recap.py:117的RecordType != "Trade"把它們全部丟棄(進skip_non_trade計數)。cash = Σ Amount(買賣的 Amount 已是含手續費淨額)。last_state.json的holdings.is_complete: false表示持倉靠 snapshot 錨點重建、CSV 非從開戶第一天完整。現金同理——漏一筆 deposit 整個 cash weight 就錯。⇒ 正確設計必須以「當前現金餘額錨點」為準(複用 ledger--cash),交易流只做錨點之後的疊加,不做全期盲算。分階段 PR(各自獨立可 review)
--cash→cash_balance累加 →cash_weight = cash / (持倉市值 + cash)指標 +build_state欄位 + card-spec 的「這筆入金是解集中度還是加深集中度」判讀;分散度分母可選改為含現金。多幣別現金
USD 現金與 TWD 現金分開記(對齊 #51/#129 原幣記帳),聚合時入 USD 視圖;缺匯率照 honesty_ledger 既有路子誠實標近似。
事實鏈路(改動時照 CLAUDE.md 連動)
engine(現金 ingestion + TWR/IRR 模組 + honesty_ledger cash-drag key)↔ SKILL Step 0(收現金錨點)+ Step 1 欄位 ↔ card-spec 帳戶級三柱講法 ↔
test_tr_json_contract的 TR_JSON_KEYS / HL_KEYS ↔ EVALS/eval-design。TR_JSON 頂層新增欄位 = 動契約測試。驗收
cash_weight正確;帳戶級 IRR 與 [feat·績效三柱] 已部署資金 XIRR(分季+年化) + TWR vs 大盤上卡 + 踏空揭露 — #154 A 路線落地規格 #164 已部署 XIRR 顯著分岔且方向正確(閒置現金多 → 帳戶 IRR < 已部署,手算核對)。refs #154 · 承接 #164(A 路線)· 前置 #163 已合(成本基礎歸一)· ledger
--cash已支援