程式交易是什麼
程式交易(Program Trading)是把買賣規則寫成可重複執行的程式,由電腦依照固定條件選股、進出場,取代人工盯盤與手動下單。它的核心不是「預測明天漲跌」,而是把一套可回測、可驗證、可自動執行的規則固定下來,讓紀律取代情緒。
程式交易:用程式把交易規則自動化執行,從選股、回測到券商下單一條龍,不靠當下情緒臨時改主意。
下面這張表先把三個常被混用的詞拆開——這也是 Google 搜尋「程式交易」最常見的疑問:
| 名詞 | 重點在哪 | 一句話區分 |
|---|---|---|
| 程式交易 | 用程式「自動執行」一套規則 | 強調自動化與下單實作(本文主軸) |
| 量化交易 | 用數據與統計模型「找出」規則 | 強調研究與因子設計 |
| 演算法交易 | 拆解大單、控制衝擊成本的執行演算法 | 強調「怎麼把單買進去」 |
| 技術分析 | 看 K 線、均線、指標做判斷 | 可以是程式交易的訊號來源之一 |
簡單記:量化交易負責「想出策略」,程式交易負責「把策略自動跑起來」,演算法交易負責「把單漂亮地送進市場」。三者重疊但不等價,本文聚焦的是從一套選股規則,到真的能在券商實單跑起來的這條路。
先看這篇給你的東西(資料都跑得出來)
這份指南不是把定義抄一遍。我們用 pip install finlab 在台股實跑了一個可自動化的多因子策略,回測區間 2013-05 至 2026-06(約 13 年),結果如下:
| 指標 | 三因子複合策略 ⭐ | 含息 0050 | 單因子(只看營收) |
|---|---|---|---|
| 年化報酬 CAGR | 24.5% | 19.6% | 6.6% |
| 累積報酬 | +1648% | +936% | +約 230% |
| Sharpe | 1.22 | 1.09 | 0.32 |
| Sortino | 1.85 | — | 0.47 |
| 最大回撤 | -34.0% | -34.0% | -68.2% |
| Alpha / Beta | +11.3% / 0.74 | — | -5.1% / 0.88 |
| 近 12 個月勝率 | 89.8% | — | 62.6% |
在本文設定下、2013–2026 這段期間,三因子複合策略不只年化報酬高於含息 0050(24.5% vs 19.6%),風險調整後(Sharpe 1.22 vs 1.09)也勝出,且最大回撤和 0050 相當(都約 -34%)。完整程式碼、互動式回測報告都在文末,可以自己重跑。

程式交易有哪些策略類型
程式交易本身只是「自動執行」的框架,真正決定績效的是裡面那套規則。台股實務上常見的有這幾類:
| 策略類型 | 訊號來源 | 台股適用性 | 自動化難度 |
|---|---|---|---|
| 趨勢/動能 | 創新高、突破、相對強弱 | 高,多頭段表現好 | 低(規則明確) |
| 均值回歸 | 超跌反彈、配對交易 | 中,需嚴控停損 | 中 |
| 多因子選股 | 營收、ROE、PB、籌碼排名 | 高,本文主打 | 低 |
| 事件驅動 | 財報、月營收、除權息、現增 | 中高,需對齊公布日 | 中 |
| 籌碼面 | 投信/外資買賣超、融資券 | 高,台股籌碼資料齊 | 低 |
| 高頻/造市 | 盤中微結構、報價價差 | 低,散戶硬體與延遲打不過法人 | 極高 |
對一般投資人來說,月頻或週頻換股的多因子、動能、籌碼策略最務實——規則清楚、不需要極低延遲的設備、用免費的台股資料就能回測與自動下單。高頻交易屬於法人與專業造市商的戰場,需要 FPGA、主機共置與毫秒級基礎設施,散戶不必往那裡擠。
本文示範的是「多因子選股」:把三個有學術根據的因子排名加權,組成一個分散、可月頻自動換股的策略。
為什麼用「排名加權」而不是條件 AND
新手最常踩的坑,是把「營收年增大於 30% 而且 ROE 大於 15% 而且 本益比小於 15」這種條件用 AND 串起來——結果某些月份只剩 2、3 檔股票,回測曲線好看但完全沒有分散性,實單一遇到買不到就破功。
排名加權的做法不同:每個因子先換算成「在所有股票裡的百分位」,再把三個百分位相加當總分,最後固定取前 20 名。這樣不管市場狀況怎麼變,永遠有 20 檔分散持股,也避免了因子門檻被人為調到「剛好漂亮」的過擬合風險。
Sharpe / Sortino:每承受一單位風險換到多少報酬。Sharpe 用總波動當分母,Sortino 只算「下跌」波動(成長股策略上漲也會被 Sharpe 當成風險扣分,所以 Sortino 通常較高、也更貼近投資人真正在意的「賠錢風險」)。
程式交易新手入門:pip install finlab 五步驟
程式交易聽起來門檻高,但用對工具其實是「把規則寫清楚」而已。FinLab 的定位是讓你用接近白話的條件描述策略,底層由套件處理台股資料對齊、除權息、交易成本與回測,你不用從零造輪子。
入門路徑只有五步:
- 安裝套件:
pip install finlab,首次執行用免費帳號登入。 - 取台股資料:
data.get('price:收盤價')、data.get('monthly_revenue:去年同月增減(%)'),回傳的是已對齊好的 DataFrame。 - 寫選股條件:用排名、比較把因子組成分數,再取前 N 名。
- 回測:
sim()一行跑完整回測,自動扣手續費與證交稅,產出 CAGR、Sharpe、最大回撤與互動式報告。 - 自動下單:把同一份 position 接到券商 API(永豐 / 富果 / 富邦),或部署到雲端排程每月自動換股。
下面是這個三因子策略的完整核心程式碼——不是片段,整段貼進去就能跑(完整檔案見文末 strategy.py 下載):
顯示程式碼
from finlab import data
from finlab.backtest import sim
# Step 1. 取台股資料
close = data.get('price:收盤價')
vol = data.get('price:成交股數')
rev_yoy = data.get('monthly_revenue:去年同月增減(%)') # 成長
roe = data.get('fundamental_features:ROE稅後') # 品質
pb = data.get('price_earning_ratio:股價淨值比') # 價值(低 PB)
# Step 2. 流動性過濾:近 20 日均量 > 200 張,避免買得到回測、買不到實單
liquidity = vol.average(20) > 200_000
# Step 3. 三因子 rank-weighted 複合(各因子轉百分位再相加)
score = (
rev_yoy.rank(axis=1, pct=True)
+ roe.rank(axis=1, pct=True)
+ (1 - pb.rank(axis=1, pct=True)) # PB 越低越好,所以用 1 減
)
# Step 4. 在流動性足夠的股票池內取分數前 20 名
position = score[liquidity].is_largest(20)
# Step 5. 月頻換股,延後 14 天對齊月營收公布日
report = sim(position, resample='M', resample_offset='14D',
fee_ratio=1.425/1000/3, name='程式交易三因子複合策略')
report.display()FinLab 的設計哲學是讓你「描述策略」而不是「背語法」。同樣這套條件,你也可以直接用對話方式請 AI 幫你產出:
💬 你對 AI 說:
幫我在台股做一個月頻換股的策略:先用近 20 日均量大於 200 張過濾流動性,再把「月營收年增、ROE、低本益比淨值比」三個因子各自排名、加總,挑分數最高的 20 檔,延後 14 天對齊月營收公布日後回測。
🤖 AI 回覆:
已用 finlab 套件完成回測。2013-05 至 2026-06,年化報酬 24.5%、Sharpe 1.22、Sortino 1.85、最大回撤 -34.0%,同期間優於含息 0050(年化 19.6%、Sharpe 1.09)。已產出可下載的
strategy.py與互動式回測報告。
這就是 FinLab 的差異:你面對的是 Prompt 與白話條件,底層卻是用 pip install finlab 真的在台股跑得出來、文末可下載自行重跑的回測,而不是憑空寫出來的漂亮數字。
對照組 vs 優化組:單因子為什麼不夠
很多人第一次寫程式交易,會只用「一個很直覺的因子」——例如只挑營收年增最高的 30 檔。我們把它當對照組跑了一遍,差距非常明顯:
| 指標 | 對照組(單因子營收) | 三因子複合 ⭐ | 改進 |
|---|---|---|---|
| 年化報酬 CAGR | 6.6% | 24.5% | +17.9 個百分點 |
| 最大回撤 | -68.2% | -34.0% | 砍半 |
| Sharpe | 0.32 | 1.22 | ×3.8 |
| Sortino | 0.47 | 1.85 | ×3.9 |
| 近 12 月勝率 | 62.6% | 89.8% | +27 個百分點 |
單因子的問題在於沒有制衡:營收爆發的股票常常本益比已經很貴、品質參差,一遇到成長熄火就大幅回檔(-68% 的回撤幾乎讓人抱不住)。加入「品質(ROE)」與「價值(低 PB)」兩個因子互相牽制後,不只報酬提高,回撤直接砍半——這正是多因子的價值:不是單純疊報酬,而是用因子互補降低脆弱性。
下面是優化策略的完整互動式回測——月報酬熱力圖、權益曲線、年度績效都在裡面,可直接在文章中操作:
三個因子的學術根據
這三個因子不是隨手挑的,各自對應實證金融的經典發現:
- 價值(低 PB):Fama & French(1992)發現帳面市值比(B/M)對橫斷面報酬有顯著解釋力,是後來三因子模型的基石。
- 品質(ROE):Novy-Marx(2013)指出獲利能力(profitability)是被長期低估的因子,高品質公司有持續的超額報酬。
- 成長動能(月營收年增):台股月營收每月 10 日前公布、頻率高且即時,是領先財報的成長訊號;我們用
resample_offset='14D'把換股日延後到公布之後,確保用的是「當下真的拿得到」的資料,避免前視偏差。
需要說明的是:學術上的盈餘公告後漂移(PEAD, Bernard & Thomas 1989)談的是「季度盈餘公告」後的價格漂移,與「月營收公布」並非同一件事。我們這裡用月營收,是看中它的即時性與領先性,而非直接套用 PEAD 的結論——這點值得誠實區分,而不是把相似概念硬接。
回測方法揭露(這些數字是怎麼算出來的)
漂亮的數字如果沒有方法支撐,就只是行銷話術。這個策略的回測設定全部攤開:
| 項目 | 本文設定 |
|---|---|
| 交易成本 | 手續費 0.1425% × 6 折(fee_ratio=1.425/1000/3);證交稅 0.3%(finlab sim() 賣出時預設已扣) |
| 滑價 | 未額外假設滑價;實際衝擊取決於資金規模與成交量 |
| 股票池 | 全上市櫃,未排除金融股 / KY 股 / ETF(屬已知限制,見下) |
| 流動性過濾 | 近 20 日均量 > 200 張(20 萬股),避免回測買得到、實單買不到 |
| 前視偏差 | 月營收用 resample_offset='14D' 延後對齊公布日;財報資料 finlab 已用發布日對齊 |
| 權重 | 等權,固定持股 20 檔,無單檔上限以外的額外限制 |
| 周轉率 | 平均每月換股約 58%(換手不算極端,但成本已內含在上表) |
| 樣本內外 | 本文為全段 in-sample(2013–2026),未做嚴格樣本外切分;下節用分段與參數敏感度做穩健性檢查 |
誠實地說:這是一個全段 in-sample 的研究,沒有保留獨立的樣本外測試集,也沒有排除金融股與 KY 股(生存者偏誤的潛在來源)。把這些限制寫清楚,比假裝嚴謹重要。
穩健性檢查:不是挑到一段漂亮行情
一個策略只有單一數字,沒辦法判斷它是真的有效,還是剛好賭中某段多頭。我們做兩項檢查。
1. 分段期間: 把 13 年切成三段,和含息 0050 同口徑比較年化報酬。

| 期間 | 三因子策略 | 含息 0050 | 誰勝 |
|---|---|---|---|
| 2018–2020 | 21.7% | 18.3% | 策略 |
| 2021–2023 | 39.7% | 6.4% | 策略(大幅) |
| 2024–2026 | 15.9% | 61.1% | 0050(大幅) |
這裡有個必須誠實面對的事實:2024–2026 這段 0050 大贏——這段台積電與權值股一路噴出,市值加權的 0050 直接受惠,而我們這種「分散、低估值偏好」的策略在權值集中行情中相對吃虧。它不是每段都贏,這正是為什麼要看完整週期與風險調整後指標,而不是只盯單一年度。
2. 參數敏感度: 把持股檔數從 20 改成 10 / 30 / 50,看結論會不會崩。

| 持股數 | CAGR | Sharpe | Sortino |
|---|---|---|---|
| 10 檔 | 25.8% | 1.18 | 1.84 |
| 20 檔 ⭐ | 24.5% | 1.22 | 1.85 |
| 30 檔 | 22.1% | 1.14 | 1.69 |
| 50 檔 | 22.4% | 1.17 | 1.71 |
四種設定的 Sortino 都落在 1.69–1.85,CAGR 都在 22–26% 之間——結論對「挑幾檔」這個參數不敏感,代表它不是靠精挑某個甜蜜點撐出來的。我們選 20 檔,是在分散度與單檔可投入金額之間取平衡。
從回測到實單:把程式交易自動跑起來
回測過了只是第一步。程式交易的價值在於整條鏈自動化:選股 → 下單 → 排程。FinLab 的 position 可以直接接到台股券商 API,或部署到雲端定時執行:
| 環節 | 工具 / 路徑 | 延伸閱讀 |
|---|---|---|
| 取台股資料 | data.get(...),免自己爬 |
Python 取得台股資料 |
| 選股回測 | sim() 一行回測 |
5 分鐘選股與回測 |
| 參數最佳化 | 暴力法掃參數 | 策略參數最佳化 |
| 券商自動下單 | Fugle / 永豐 API | Fugle API 自動交易 |
| 雲端排程 | GCP Cloud Function | GCP 全自動交易(上)、(下) |
整套做下來,你每個月只要讓雲端在固定日期自動跑一次選股與下單,不必盯盤。這也是程式交易相對主觀交易最大的優勢:紀律是寫死的,不會因為當天心情而毀約。
程式交易平台怎麼選
| 平台 / 做法 | 台股資料 | 回測 | 自動下單 | 上手難度 |
|---|---|---|---|---|
| FinLab(pip install finlab) | 內建、已對齊除權息 | sim() 一行 |
串券商 API + 雲端排程 | 低(會基本 Python / 用 AI 對話即可) |
| 自寫 Python(backtrader 等) | 要自己爬與清洗 | 要自己寫框架 | 要自己接 | 高 |
| TradingView | 偏國際、台股個股有限 | Pine Script | 透過第三方 | 中 |
| MultiCharts / XQ | 完整但偏付費軟體 | 內建 | 內建 | 中,且封閉 |
FinLab 的差異在於:台股資料齊、用 Python 套件而非封閉軟體、可以用 AI 對話描述策略。對手能寫教學文,但做不出一個 pip install 就有完整台股資料與回測的套件——這是結構性的差異,不是行銷話術。如果你已經會一點 Python,或願意用 AI 幫你產生條件,這條路的學習曲線最平緩。
適合誰、不適合誰
| 適合程式交易 | 不適合 / 要三思 |
|---|---|
| 想用紀律取代情緒、受不了盯盤的人 | 期待「穩賺不賠明牌」的人(不存在) |
| 願意接受策略有回撤、看長期的人 | 無法承受 -34% 帳面回撤的人 |
| 想把選股流程自動化、省時間的人 | 完全不想碰任何程式或 AI 工具的人 |
| 重視「數字能自己重跑驗證」的人 | 只想要結論、不在意方法的人 |
程式交易不是聖杯,它把人的弱點(追高殺低、抱不住)換成另一組需要紀律的事(相信回測、撐過回撤、定期換股)。值得與否,取決於你是不是那種「寧可慢慢複利,也不想每天被市場情緒綁架」的人。
常見問題 FAQ
Q1. 程式交易和量化交易差在哪? 量化交易強調「用數據與模型找出策略」,程式交易強調「把策略用程式自動執行」。實務上兩者高度重疊:量化研究出的策略,最後通常用程式交易的方式自動下單。延伸看量化交易完整指南與量化交易是什麼。
Q2. 不會寫程式可以做程式交易嗎? 可以。FinLab 的設計是讓你用接近白話的條件或 AI 對話描述策略,不必從頭背語法。但建議至少看得懂上面那段核心程式碼在做什麼,才知道策略真正的邏輯。
Q3. 這個 24.5% 年化是真的還是假設?
真的,用 pip install finlab 在台股實跑出來的,回測區間 2013-05 至 2026-06,已扣手續費與證交稅。完整 strategy.py 與互動式報告在文末,可以自己重跑驗證。
Q4. 程式交易需要很貴的設備嗎? 月頻、週頻的選股策略不需要。只有高頻交易才需要主機共置與超低延遲設備。本文這套策略用一般電腦或免費雲端排程就能跑。
Q5. 回測賺錢,實單一定賺嗎? 不一定。回測是 in-sample 的歷史模擬,未來市況可能改變;還有滑價、資金容量、流動性等實單因素。所以我們才強調穩健性檢查與誠實揭露方法,而不是只給你一個漂亮數字。
Q6. 要多少錢才能開始? 策略持股 20 檔、等權,所以資金最好能讓每檔都買得到一個基本單位(視個股股價,數十萬量級較舒適)。資金太小會因為無法均勻分散而偏離回測表現。
下一步:開始你的第一個程式交易策略
把這篇的程式碼下載下來、pip install finlab 跑一次,你就完成了從「看懂定義」到「親手重現一個年化 24.5% 策略」的全程。接著可以調整因子、換成你相信的訊號,再用參數最佳化微調,最後接上券商自動下單讓它每月自動運轉。
本文是 FinLab「程式交易」主題的總綱。想深入特定環節,往下看這些輻條:
- 定義與優缺點:程式交易是什麼
- 演算法與均值回歸:演算法交易是什麼
- 取台股資料:Python 取得台股資料
- 選股回測入門:5 分鐘選股與回測
- 多因子打敗 0050:多因子選股 beat 0050
- 自動下單:Fugle API 自動交易、GCP 雲端排程
- AI 自動化:AI Agent 量化交易指南
- 更多名詞定義:術語表 /glossary
想自己跑回測、改因子?免費試用 FinLab 取得台股資料與回測環境,或加入社群和其他量化研究者討論。
📎 完整互動式回測報告(附件下載)
| 回測 | 互動式 HTML | 程式碼 |
|---|---|---|
| 最終策略 ⭐ | report_strategy.html | strategy.py |
最後更新:2026-06|回測區間:2013-05 ~ 2026-06(約 13 年,台股全上市櫃)|作者:FinLab 量化研究團隊(經量化研究員審閱)
投資有風險,過去績效不代表未來表現。本內容僅供教學參考,不構成投資建議,請依個人風險承受度審慎評估。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始