問題出在哪
過去的「股票庫存」功能是一個記帳工具:輸入幾筆、看一眼損益,然後就不會再回來了。
我們想處理的是後面那半句——怎麼讓使用者有理由回來。方向是讓系統從「回答通用問題」變成「回答這個人現在最想問的問題」。
一個設計原則決定了整份架構
模型抄錄、程式算數。
所有數值——加權平均成本、產業佔比、成本分位、警示規則——都在確定性的程式層算完,LLM 只負責理解與表達。這條線劃得很死,因為投資數字算錯的代價跟聊天機器人講錯話完全不是同一個量級。
同樣的理由,輸出全部要 grounding:講得出來的每個數字都要追得回它的來源資料表。
做了什麼
降低導入門檻。 手動輸入之外,接了 Bedrock 的多模態能力直接讀看盤 App 截圖與對帳單,逐筆保留成本、股數、買進日期。成本欄位留空會自動用年均價估算——因為多數人根本不記得自己的成本。
即時洞察卡。 加入第一檔的當下就要給出回饋:帳面 vs 含息總報酬、成本殖利率、成本買點分位、連續配息年數。不能讓使用者輸入完三十檔才看到第一個有用的東西。
組合層 AI 診斷。 整個投資組合出一份報告、只呼叫一次 Bedrock,涵蓋投資風格判讀、帳面 vs 含息的真相、產業與市值配置、集中度、越攤越平偵測、槓桿型 ETF 的性質辨識。
持股防護罩。 這是「讓使用者回來」的實體實作:四類警示引擎(法人連續買賣超、創年新高低、社群聲量爆量與情緒轉空、除息事件),並用 2025 年的真實資料回放來證明這些通知確實有價值,而不是我們自己覺得有用。
匿名同儕對照。 重虧的持股會顯示「這檔全年落後大盤多少、有多少人在討論」——用社群數據接住情緒,比單純顯示一個紅色數字有用。
架構
前端是 Streamlit。AI 主引擎走 Amazon Bedrock 上的 Claude,負責文字診斷與截圖的視覺辨識;另外接了一條本地路徑(Ollama 跑 qwen2.5:7b-instruct、EasyOCR 做 OCR)當隱私模式與離線備援。
資料是 CMoney 官方的 300 檔示範籃子,共 11 張資料表,涵蓋行情、法人、報酬、動能、股利與社群。時間基準固定在 2025/12/31。