Skip to content

[feat·B路線] 帳戶級績效(含現金):現金 ingestion + Modified Dietz TWR + IRR + cash drag — #154 B 路線落地規格 #171

Description

@atomchung

來源

#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:117RecordType != "Trade" 把它們全部丟棄(進 skip_non_trade 計數)。
  • 最乾淨算法:完整 CSV 下 cash = Σ Amount(買賣的 Amount 已是含手續費淨額)。
  • 關鍵風險 — 完整性last_state.jsonholdings.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 已支援

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions