⚙️ 工程作品集頁面 · 研究與分析工具 · 不構成投資建議
⚙️ 獨立開發者工程作品集 · Engineering Portfolio

一個 local-first 的台股/美股研究分析桌面應用

從 0 到 47 個版本、329 個自動化測試、81-tool MCP server、多代理人 AI 辯論引擎 —— 由一位台灣獨立開發者設計與實作。本頁是工程實作紀錄,不含任何價格或購買資訊。

↗ GitHub — MCP server 文件與原始碼 看架構設計
🍎 macOS desktop · Electron + SQLite · 100% 本機運算 · MIT-licensed MCP 文件
47版本迭代
329自動化測試
81MCP 工具
15種視覺化

這個專案是什麼

一個給「自行做研究的人」用的桌面工具 —— 同時也是一個探索 local-first 架構、MCP 協定、與 agent 記憶設計的工程練習場。

🖥️

桌面應用,不是 SaaS

Electron 殼 + 內嵌 Express server + 本機 SQLite。所有運算、所有資料都在使用者自己的機器上 —— 沒有後端伺服器、沒有帳號、沒有雲端資料庫。

🔬

研究方法導向

蒙地卡羅顯著性檢定、因子探索、進階回測(grid / multi-strategy / CPCV)、參數化 VaR 與風險分解 —— 把量化研究方法做成可互動的工具。

🇹🇼

台股 + 美股雙市場

台股場內法人籌碼資料的視覺化(主流圖表平台少見),加上美股跨市場研究 —— 同一套分析框架涵蓋兩個市場。

🏗️ 架構:local-first,可換資料源

核心設計決定:運算與資料永遠不離開使用者的機器。資料層做成 3 段 fallback,讓進階使用者能接自家資料源而不必改動分析層。

呈現層 Electron renderer — 原生 JS + Canvas 自繪 15 種視覺化(K 線、Sunburst、Treemap、因子散點…),無重型前端框架。
↕  IPC + localhost-only HTTP(requireLocalhost middleware,僅收 127.0.0.1)
運算層 Electron main process — 內嵌 Express server — 回測引擎、蒙地卡羅模擬、風險分解、AI orchestrator、排程器、MCP server 全部在這層。
↕  3 段 fallback:External SMD(:3099)→ Embedded SMD subprocess → None mode(公開 OpenAPI)
資料層 本機 SQLite (better-sqlite3) + 可換的市場資料來源 — 使用者持倉、論點、交易史、AI 訊號全存本機 SQLite;市場資料走 BYODB(自架 SMD)或公開 OpenAPI。

工程踩坑紀錄之一:better-sqlite3 是原生模組,Electron 的 Node ABI(145)與系統 Node(137)不同 —— headless 測試與打包流程必須各自綁對 ABI。打包時 codesign + Apple 公證、bin/** 必須 asarUnpack 才能讓 MCP wrapper 可執行。

🔌 MCP server — 把分析能力暴露給 LLM agent

實作了一個 Model Context Protocol server,把 81 個分析工具暴露給 Claude Desktop 等 MCP client。讓 LLM「呼叫工具」而不是「閱讀原始資料表」。

🧰

81 個 tool + Resources + 模板 Resource

工具涵蓋回測 / 籌碼 / 技術指標 / 風險 / 投組。另有 URI-template resource(如 saa://memory/{stockId}),讓外部 agent 直接 @ 到個股記憶。

📉

token 效率設計

工具在後端跑運算 + 摘要,回精煉 JSON 而非原始 OHLCV 表格 —— 大幅壓縮送進 LLM 的 input,減少使用者把整張資料表複製貼上的需要。

🔐

stdio-only,local-first

MCP server 走 stdio transport,不開 HTTP 埠 —— 刻意不做遠端 transport,以維持「資料不離機」的設計主張。

# 一個 MCP client(如 Claude Desktop)可以這樣用: # A MCP client (e.g. Claude Desktop) uses it like: tool get_full_stock_analysis("2330") → 後端跑運算,回精煉 JSON(法人 / 籌碼 / 營收 / 技術面摘要) res saa://memory/2330 → 拉出「使用者對這支股票的投資論點 / 持倉 / 過去 AI 判斷」

MCP server 的公開文件(安裝指南、工具清單、使用範例)以 MIT 授權開源於 GitHub。完整應用本身為閉源桌面程式。

🧠 AI 層 — 多代理人辯論 + 投資人記憶

AI 不是「再包一層 ChatGPT」。這一層的工程重點是:如何讓 LLM 帶著使用者的脈絡分析、又不變成附和使用者的回音室。

🎭

多代理人辯論引擎

一次分析跑 5 個角色 agent(多頭 / 空頭 / 情緒 / 風險 / 統合),各自獨立論證後交由統合 agent 收斂。對抗式設計,避免單一視角偏誤。

🧠

Investor Memory Layer

對既有 SQLite 表的「讀取側投影」—— 零新表、零 migration。把使用者的投資論點、持倉、交易史、過去 AI 判斷組成有界的記憶封包注入每次分析。

🐻

反確認偏誤 framing

記憶注入時不同 agent 用不同 framing:空頭 agent 拿到的是「使用者相信的東西 → 你要壓力測試它」,統合 agent 必須明說這是新資訊還是只是確認既有偏好。

🌐

Market Context Layer(牛熊 regime)

用 Bry-Boschan 演算法判定大盤牛熊 regime,做成跟 Investor Memory 同樣的投影,讓個股判斷自動帶上市場背景。回測報酬也能依 regime 切段檢視。

AI 採 BYOK(Bring Your Own Key):使用者自選 Claude / GPT / Gemini / 本地 Ollama。用本地模型時,記憶封包完全不離機。

📊 分析引擎

把量化研究方法實作成可互動的工具 —— 重點不是「告訴你買什麼」,而是「協助你自己判斷」。

🎲

蒙地卡羅顯著性檢定

跑 1000 次隨機選股組合當 baseline,比對策略的 Sharpe / 報酬 / 回撤落在哪個百分位,評估統計顯著性。

🔍

因子挖掘

找出「高 Sharpe 組合都偏哪些因子」(動能 / 波動度 / 規模 / 產業集中度),附 Pearson r 與散點迴歸。

🧪

進階回測

Grid search 參數網格、multi-strategy 並列、regime 跨牛熊驗證、CPCV 過擬合校正。報酬可依 regime 切段。

⚠️

風險分解

參數化 VaR、系統性風險指標、邊際風險貢獻(MCR)、Monte Carlo bootstrap 信賴區間。

🇹🇼

台股法人籌碼

外資 / 投信 / 自營商每日買賣超 sub-pane,跟主圖游標同步;融資餘額、大戶比等籌碼面資料。

📐

15 種視覺化

K 線、Sunburst 持倉穿透、Treemap 熱力圖、報酬歸因瀑布、相關性矩陣、月度熱力圖 —— 全部 Canvas 自繪。

🛠️ 工程實踐

一個人的專案,但用對待正式產品的標準維護。

329 個自動化測試

vitest 測試套件涵蓋回測不變式、portfolio 計算、regime 判定、MCP schema 轉換、AI 工具 smoke test。每次發版前全綠才打包。

🍎

簽章 + 公證流程

electron-builder 打包 → Apple Developer ID codesign → notarytool 公證 → Gatekeeper 驗證。完整 release SOP 文件化。

🔄

自動更新 + ADR 文件

electron-updater 差分更新;重大設計決策都寫成 ADR(Architecture Decision Record),踩過的坑寫成可查的教訓筆記。

🔒

資安基準

Hardened Runtime、Electronegativity 靜態掃描(0 HIGH / 0 CRITICAL)、Ed25519 簽章授權檔、localhost-only server。

🌏

完整 i18n(中 / 英)

整個 app、所有圖表、所有 modal 都支援中英切換,含執行期 re-render —— 不是只翻 UI 字串。

📦

模組化 codebase

AI 工具層拆成 14+ 模組,用 mutable registry pattern 解 cross-module 引用;資料路徑統一、scheduler / alert-engine 各自獨立。

實際截圖

實際執行畫面(非概念圖)。

K-line + Institutional Flow

K 線 + 三大法人 sub-pane

台股場內法人視覺化,跟主圖游標同步

Portfolio Sunburst

Sunburst 持倉穿透圖

市場 → 產業 → 個股 3 層 Canvas 視覺化

MC Significance Test

MC 顯著性檢定

1000 次隨機 portfolios,histogram 顯示 percentile

Factor Mining Scatter

因子挖掘 (Factor Mining)

6 因子 vs Sharpe 散點 + 迴歸線 + Pearson r

Market Heatmap (Treemap)

市場熱力圖(Treemap)

依產業分區、面積按成交金額、顏色顯示漲跌幅

AI Hub

AI Hub

Claude / GPT / Gemini / 本地 Ollama 任一驅動

🧱 技術棧

刻意維持輕量 —— 沒有重型前端框架、沒有 ORM、沒有雲端後端。

Electron · desktop shell
Node.js · main process
Express · embedded server
better-sqlite3 · local DB
Vanilla JS + Canvas · renderer
MCP SDK · @modelcontextprotocol/sdk
vitest · test runner
electron-builder · packaging
electron-updater · delta updates
node-cron · scheduler
winston · logging
pdfjs-dist · PDF statement parsing
Cloudflare · Pages / R2 / Workers
Ed25519 · license signing

關於這個專案

Stock Analyzer 由一位台灣獨立開發者自 2026 年 3 月開始密集開發,至今完成 47 個版本迭代。它的起點是一個個人需求:想要一套同時涵蓋台股場內籌碼與美股、又能跑量化研究方法的桌面工具 —— 介於入門圖表平台與機構級終端機之間的空缺。

對開發者來說,這個專案同時是一個工程命題:如何在 local-first 的限制下做出有深度的分析工具?如何把 LLM 接成「帶脈絡但不附和」的助理?如何讓一個人維護的 codebase 保持可測試、可演進?本頁記錄的就是這些問題的目前答案。

⚠️ 重要聲明

本軟體為研究與分析工具不構成任何投資建議、推薦、或諮詢。所有研究結果僅供使用者自行參考;使用者依本軟體做出之任何決策所產生之盈虧由使用者自行承擔。本軟體不保證資料即時性、完整性或準確性。LLM 生成內容可能含幻覺,使用者應自行驗證。如需投資建議,請諮詢合格的財務顧問。

想看更多技術細節?

MCP server 的公開文件 —— 安裝指南、81 個工具清單、使用範例 —— 以 MIT 授權開源於 GitHub。

↗ 前往 GitHub repo