我不是什麼投資高手,也不做短線。但作為一個有一些持股的普通人,我發現自己花在盯盤和研究個股的時間實在太多了,而且更糟的是——盯盤的時候特別容易被情緒影響。漲了就想追,跌了就想砍,完全沒有紀律可言。
所以我決定做一個實驗:用 AI 幫我建立一套紀律化的投資分析流程。不是讓 AI 幫我做買賣決策,而是讓它每天自動整理我需要的資訊,用數據說話,減少情緒干擾。
設計理念:角色分工,各司其職
一開始我也想過讓一個 AI Agent 把所有事情做完——抓數據、分析技術指標、追蹤產業動態、檢查風險——全部塞在一個 prompt 裡。
很快就發現這行不通。原因有二:
- Context 太長:把所有資料和指令塞在一起,LLM 的注意力會被稀釋,分析品質明顯下降
- 時間點不同:有些資訊要在開盤前看(持倉概況),有些要在收盤後看(技術分析),硬要在同一時間跑完,資料要嘛不完整要嘛太舊
所以我借用了軟體開發的角色分工概念,把投資分析拆成四個獨立的角色,各有各的職責和排程:
1. 股市動態日報員(每日 08:30)
開盤前的第一份報告。它的工作是:
- 抓取持倉個股的最新股價與漲跌幅
- 查詢三大法人(外資、投信、自營商)的買賣超資料
- 整理融資融券變化
- 產出一份持倉概況分析
這份報告的價值在於:讓你在開盤前就知道昨天法人的動向。比如某檔股票連續三天被外資賣超,融資餘額卻在增加,這種「散戶接刀」的訊號就很值得注意。
2. 技術分析師(每日 14:30)
收盤後的技術面分析。它會計算:
- 移動平均線(MA):5 日、10 日、20 日、60 日
- KD 指標:超買超賣判斷
- MACD:趨勢方向和動能
- RSI:相對強弱
- 布林通道:波動率和價格位置
原始的技術指標數據其實到處都查得到,但我希望 AI 做的不是列出數字,而是用人話告訴我這些數字代表什麼意思。比如「KD 在 80 以上且死亡交叉,RSI 也在高檔鈍化,短期注意回檔風險」,這種自然語言的分析對我來說比一堆數字有用多了。
3. 產業情報員(每日 12:00)
追蹤特定產業的動態。我目前關注的產業包括面板、鋼鐵、航運等景氣循環股為主的板塊。它會整理:
- 產業指數的走勢
- 產業內主要個股的表現
- 月營收數據的年增率變化
- 產業面的重要消息
這個角色目前是四個裡面最需要持續調整的,因為產業資訊的來源和重要性會隨市場環境變化。但基本的數據面追蹤已經很穩定了。
4. 風控官(每週一、四)
這個角色不是每天跑,而是一週兩次。它負責的是更宏觀的風險管理:
- 持倉比例:單一個股的部位是否過重?
- 產業集中度:是不是太集中在某個產業?
- 停損條件:有沒有個股已經觸及預設的停損線?
- 整體曝險:考量大盤走勢,目前的持倉水位是否合理?
這份報告的設計初衷是強迫自己面對風險。人在賺錢的時候很容易忽略風險,AI 不會。
資料來源:FinMind API
台灣金融資料的取得,我使用的是 FinMind——台灣金融資料開放平台。它提供了相當完整的 RESTful API,而且有免費方案可以用。
主要用到的 dataset:
TaiwanStockPrice:歷史日 K 線(開高低收量)TaiwanStockInstitutionalInvestorsBuySell:三大法人買賣超TaiwanStockMarginPurchaseShortSale:融資融券餘額TaiwanStockMonthRevenue:月營收
API 的使用方式很直覺:
1 | import requests |
免費版的限制是每分鐘 30 次呼叫。對個人使用來說非常夠用了。我目前追蹤大概十幾檔個股,加上產業指數,每個角色跑一次大概呼叫 15-20 次,完全在限制內。
唯一要注意的是,有些 dataset 的資料更新有延遲。比如三大法人買賣超通常要到下午 3 點多才完整,融資融券更晚。所以排程的時間點要配合資料的可用性來設計。
排程架構
四個角色各自獨立執行,用 cron job 觸發:
1 | 30 8 * * 1-5 /path/to/run_agent.sh daily_reporter |
每個角色在獨立的 session 裡執行,這樣 context 不會互相干擾。每個 session 有自己的 system prompt,定義了角色的職責、分析框架和輸出格式。
這個設計的好處是:
- 互不影響:技術分析師掛了不會影響日報員
- 容易調整:想修改某個角色的分析邏輯,改它的 prompt 就好
- 靈活擴充:想加新角色,新增一個 cron entry 和 prompt 就搞定
LLM 在這裡的角色
我要特別強調一下:這套系統裡,LLM 不是在做量化交易。它不做預測、不做回測、不給買賣訊號。
LLM 做的是「資料 → 人話」的翻譯層。
原始的金融資料就是一堆數字和表格,三大法人買賣超、技術指標、融資融券變化……這些數據本身不難取得,但要消化這些數據、理解它們之間的關聯、把它們轉換成可以快速決策的資訊,這就需要花時間和精力。
LLM 最擅長的就是這件事。它可以把「外資連續賣超 5 日共 -12,345 張,但融資增加 2,000 張,股價卻只跌 1.5%」這樣的原始數據,轉換成「外資持續出貨但股價跌幅有限,留意是否有其他買盤承接。融資增加顯示散戶在逢低接,需觀察後續是否有止穩訊號」這樣的分析。
這不是什麼高深的分析,有經驗的投資人自己看數據也能得出類似結論。但重點是:AI 可以每天穩定地做這件事,不會忘記、不會偷懶、不會因為心情不好就跳過某些指標。
實測效果
跑了一段時間,幾個心得:
法人動向追蹤很好用:以前都是收盤後自己去查,常常忘記或懶得查。現在每天早上報告就在那裡,一目瞭然。
融資融券變化是預警燈:這個數據以前我很少關注,但 AI 每天追蹤之後,發現它其實是很好的散戶情緒指標。融資快速增加的時候通常要小心。
技術分析需要搭配脈絡:單純的技術指標判讀,LLM 做得還行,但如果能結合基本面和產業面的資訊會更好。這也是我後續想改善的方向。
風控報告讓人冷靜:每週被提醒一次「你的某某持股已經佔總部位 30%」,確實會讓人重新檢視自己的配置。
未來構想
目前的系統是追蹤已知的持倉個股,屬於「防守型」的。下一步想做的是「進攻型」——全市場掃描。
構想是:
- 用 Python 從全市場幾千檔股票中,先做基本面篩選(營收成長、本益比區間、股利殖利率等),縮小到 30-50 檔
- 再把這 30-50 檔丟給 LLM,做題材分析和產業歸類
- 產出一份「值得關注的個股週報」
這個做法的核心思路是:量化篩選用程式,質化分析用 LLM。兩者各司其職,發揮各自的優勢。
不過這個構想還在規劃階段,實際做起來最大的挑戰是:全市場資料量很大,API 的呼叫次數限制會是瓶頸。可能需要升級到付費方案,或是用本地資料庫做快取。
重要提醒
最後,也是最重要的一點:AI 不做投資決策。
這套系統的定位是「資訊助理」而不是「投資顧問」。它幫你整理資訊、追蹤數據、分析趨勢,但最終的買賣決策——什麼時候買、什麼時候賣、買多少——這些都是你自己要負責的。
LLM 對金融資料的理解是基於語言模式的,不是基於金融模型的。它可能會產出看起來很有道理但實際上有偏差的分析。所以永遠要用自己的判斷力去驗證 AI 的輸出,而不是盲目相信。
話說回來,這也是我這套系統的設計初衷。我不要 AI 幫我做決策,我要的是 AI 幫我更有效率地掌握做決策所需的資訊。一個有紀律的資訊整理流程,比任何神奇的預測模型都有價值。
投資有風險,用 AI 分析也有風險。但至少,紀律化的分析流程比情緒化的盯盤要好得多。