如果你只記一句話:Hugging Face 是「開源 AI 模型的 GitHub 加 Docker Hub 加 App Store」三合一;而 FinBERT 是其中一個專門讀懂財經情緒的模型,幾行程式碼就能接進你的交易流程。
這篇手記分兩段:先用 5W1H 把 Hugging Face 講到人話;再以 FinBERT 為例,說明它怎麼落到你自己的交易裡——重點不在寫多少程式,而在想清楚「它解決什麼問題」。
一、Hugging Face 是什麼?5W1H 一次說清
What(是什麼)
把三個你已經懂的東西疊起來,就懂 Hugging Face 了:
- 像 GitHub:每個模型都有作者、版本、討論區,你可以下載、提 issue、看別人怎麼用。
- 像 Docker Hub:以前復現一篇論文要自己 clone repo、配環境、下權重,動輒兩三天;現在
from_pretrained("模型名")一行,權重、分詞器、設定檔全幫你拉好。 - 像 App Store 的 Spaces:任何人都能免費部署一個互動 demo,打開網頁就能試模型,不用裝任何東西。
它本質上是一個**「讓模型從論文變成可用工具」的基礎設施**。
Who(誰在用)
不是只有工程師。研究者在上面發表最新模型、Kaggle 選手拿現成模型打比賽、公司(從新創到 Apple、Microsoft 這類大廠)把自家模型開源上去。平台上託管著數百萬個模型與十幾萬筆資料集,背後是上千萬名開發者與研究者組成的社群。
When(何時興起)
2016 年成立於法國巴黎,一開始做的是聊天機器人。真正的轉捩點是 2018–2020 年:BERT、GPT 這類 Transformer 模型爆紅,大家都需要一個地方「分享權重」,Hugging Face 就從一個工具公司,變成了整個開源 AI 生態的廣場。
Where(在哪用)
- 雲端:直接上 huggingface.co 搜模型、用 Spaces 試玩。
- 本地:
pip install transformers後,筆電就能跑小模型。 - 更輕:模型可以量化壓到幾 MB,甚至塞進手機。
對交易者來說,重點是「本地、可批次、可自動化」——這意味著你能每天讓它掃幾千條新聞標題,而不用一條條手動看。
Why(為什麼你該知道它)
因為它把「門檻」拆掉了。十年前做情緒分析要自己標註語料、訓練模型;今天你只是站在別人肩膀上,把一個已經讀懂財經語言的模型請下來用。省下的時間,拿去想「這信號怎麼跟我原本的盤勢判讀結合」更有價值。
How(怎麼開始)
三個核心入口:
- Model Hub:找模型(搜
finbert就有一堆金融情緒模型)。 - Datasets:找訓練與測試資料。
- Spaces:免費部署 demo,先試再決定要不要接。
最小起步只要:
pip install transformers torch
下一節就會用。
二、用 FinBERT 幫交易裝上「情緒天線」
先搞清楚:FinBERT 是什麼
BERT 是 Google 提出的語言模型,讀得懂句子上下文。FinBERT 則是拿 BERT 在金融語料(財經新聞、分析師報告、財報電話會議逐字稿)上繼續預訓練的版本——它特別擅長一件事:判斷一段金融文字是正面、負面,還是中性。
對交易者而言,這解決一個老問題:市場情緒往往是價格的先行指標之一。新聞標題裡藏著「市場在恐慌還是貪婪」的線索,而人眼一天看不了幾百條,模型可以。
一句話定位:FinBERT 不是來替你下單的,是來替你把「情緒」這筆雜訊變成可量化分數的。
落地的邏輯(先想清楚,再寫 code)
把 FinBERT 接進交易,核心不是模型本身,而是這條鏈:
- 抓標題:某檔個股的新聞標題、或是大盤相關的財經快訊(來源可以是 RSS、券商 API、財經社群)。
- 打情緒分:每條標題丟進 FinBERT,拿到 positive / negative / neutral 的機率。
- 聚合成序列:把一段時間內所有相關標題的分數加權平均,得到一條「情緒分數」時間序列。
- 疊回盤面:把情緒分數和股價 / K 線疊在一起看——它當輔助訊號,不當主訊號。
實務上怎麼用?舉兩個合乎你既有框架的例子(注意:這裡講的是現股 / ETF,不涉及任何高槓桿商品):
- 極度負面情緒 + 技術面超賣(如跌破 20MA 且乖離過大):留意是否「錯殺」——市場情緒比基本面更慌,可能給你一張便宜的進場券。
- 過度樂觀 + 股價乖離 20MA 過大:留意獲利了結的節奏,情緒過熱往往是短期高點的伴隨特徵。
這和你既有的「折價承接有債底標的、波動率目標化保留攻擊權」思路是同一件事的不同切面:都是在別人情緒失控時,保持自己的判讀力。
最小代碼:幾行就跑起來
FinBERT 對英文金融文本最準(它本來就是在英文財經語料上訓的)。中文新聞的話,要改用中文金融情緒模型,或先翻譯再打分——這點要誠實說在前頭,別拿英文模型硬套中文標題。
下面是用英文財經標題的最小示範:
from transformers import pipeline
# 載入金融情緒分析管線(第一次會自動下載權重)
sentiment = pipeline(
"sentiment-analysis",
model="ProsusAI/finbert", # 專精金融文本的 FinBERT
)
# 丟一條財經標題進去
text = "The chipmaker's earnings beat expectations, shares surge."
print(sentiment(text))
# 輸出形如 [{'label': 'positive', 'score': 0.98}]
就這樣。你拿到 label(positive / negative / neutral)和 score(信心度),剩下的只是把它們聚合、畫圖、和你既有的指標疊在一起。
如果要批次掃一大堆標題,把 text 換成串列即可,pipeline 會自動批次處理,比一條條呼叫快很多。
誠實的邊界(這部分比代碼重要)
- 它是微弱信號,不是聖杯。 財經標題裡有大量標題農場、反向指標、以及「利多出盡」這類反直覺情況。單看情緒分數下單,很快就會被市場教訓。
- 要當輔助,不當主訊號。 它最適合和你既有的技術面、籌碼面、市場寬度一起看,作為「市場情緒溫度計」。
- 小心過擬合與數據洩漏。 用歷史新聞回測時,絕對不能讓未來的新聞跑進模型——時間順序錯了,回測績效全是假的。
- 語言與來源偏差。 英文模型讀中文會失真;不同媒體的立場也會帶入偏誤,最好多來源交叉驗證。
小結
Hugging Face 把「用 AI 模型」的門檻降到了幾行程式;FinBERT 則是其中一個能直接服務交易者的零件——它把財經情緒這筆雜訊,變成你可以畫在盤面上的分數。
但記住這篇手記一直沒變的底色:工具再強,也只是放大你原本的判讀力,不會替你做決定。 把情緒天線裝上,是為了在別人恐慌時你還看得清,而不是為了多一個讓自己更慌的儀表。
延伸閱讀:我把這套情緒天線落成了每天自動執行的小工具(Google News RSS 抓新聞 → FinBERT 評分 → 每日快報),完整使用說明在這篇——把 FinBERT 接上每日流程:一份台美股市場新聞情緒快報的工具說明。