![]()
先看結論:程式交易是什麼(30 秒版)
程式交易(Program Trading),是把你的交易規則寫成程式,讓電腦自動、紀律地完成「選股 → 回測 → 下單」的整條流程,取代人工盯盤與情緒化決策。它的核心價值不是「更會預測」,而是速度 + 紀律 + 可驗證——同一套規則,程式每月幾秒掃完全市場,而且標準完全一致,不會今天心情好就多買兩檔。
這篇文章用一個月頻動能輪動策略當主軸,實際在台股(2018–2026)跑回測,讓你親眼看到「程式交易 = 自動執行 + 紀律」帶來的差別。先把最重要的數字攤開來(數據來源:finlab 實測,完整程式碼可下載):
| 策略(2018–2026,月頻再平衡) | 年化報酬 | 夏普 | 索提諾 | 最大回撤 |
|---|---|---|---|---|
| 動能輪動(動能+低波動+品質) ⭐ | 29.06% | 1.14 | 1.87 | -42.0% |
| 純動能(只追漲,無紀律過濾) | 29.59% | 0.98 | 1.59 | -44.3% |
| 0050 買入持有(含息) | 25.18% | 1.23 | — | -34.0% |
夏普值(Sharpe):每承擔 1 單位總波動換到多少超額報酬,越高越好。索提諾值(Sortino):只罰「下跌波動」(賺錢的波動不算風險),更貼近投資人的真實痛感,我們策略的索提諾達 1.87。
重點先講白:加上「低波動 + 品質」這兩道紀律過濾後,報酬幾乎沒掉(29.59%→29.06%),但夏普從 0.98 升到 1.14、索提諾從 1.59 升到 1.87——這就是程式交易的價值:它讓你能用一致的標準,系統化地把風險調整後報酬做上去,而不是靠盤感。
本篇屬於 程式交易 主題支柱。想先搞懂上層概念,看 量化交易是什麼;想深入選股因子,看 股票選股。
目錄:這篇會講什麼
| 章節 | 你會得到 |
|---|---|
| 1. 程式交易是什麼 | 定義、運作流程、和「手動照表操作」的差別 |
| 2. 程式交易 vs 量化交易 vs 主觀交易 | 一張表分清楚三者 |
| 3. 常見策略類型 | 趨勢/動能/均值回歸/統計套利/基本面/籌碼 + 台股例子 |
| 4. 優點與缺點 | 各 4 點,誠實揭露 |
| 5. 適合哪些商品 | 台股/期貨/加密 |
| 6. 風險與防過擬合 | 交易成本、滑價、MDD、樣本外驗證 |
| 7. 要會 Python 嗎 | AI 對話 + 可跑的完整 finlab 範例 + 自動下單 |
| 8. 學術背書 | 動能效應等經典論文 |
| 9. 多少錢 / 合法嗎 / 軟體比較 | 門檻、台股規範、平台對比 |
1. 程式交易是什麼?它怎麼運作
程式交易把一筆交易拆成四個可以被程式接管的步驟。下表是人工 vs 程式的對照——差別不在「誰比較聰明」,而在一致性與規模:
| 步驟 | 人工操作 | 程式交易 |
|---|---|---|
| 選股 | 翻財報、看新聞,一次盯不了幾十檔 | 幾秒掃完全市場 2,000+ 檔,標準完全一致 |
| 回測 | 憑印象「感覺這招有用」 | 用歷史資料量化驗證:報酬、回撤、勝率 |
| 下單 | 手動敲價、可能忘記、可能猶豫 | 串接券商 API 自動送單,不漏單、不情緒化 |
| 再平衡 | 常常拖延、標準飄移 | 每月固定日期執行,紀律 100% |
用我們的動能輪動策略當例子,程式每個月做的「自動篩選漏斗」長這樣(數據來源:finlab 實測,僅計數):

| 階段 | 檔數 | 篩選邏輯 |
|---|---|---|
| 全市場可交易股票 | 2,351 | 起點 |
| 市值前 200 + ROE>0 + 營收年增>0 | 200 | 過濾沒基本面的飆股 |
| 複合動能排名前 20(實際持有) | 20 | 近 3 月 + 近 6 月動能加權選股 |
一個人很難每月把 2,351 檔重篩一次、還每次標準一模一樣;程式可以。這個「每月一次、標準零飄移」就是程式交易和手動照表操作最本質的差別。
再平衡(Rebalance):每隔固定週期(本策略為每月)依最新數據重新計算該持有哪些股票、各佔多少比重,並把投組調整到目標。月頻再平衡讓策略持續汰弱換強,又不會頻繁到被交易成本吃光。
2. 程式交易 vs 量化交易 vs 主觀交易,差在哪?
這是最多人混淆的地方。一句話分清楚:量化交易是「想法/大腦」,程式交易是「手腳/執行」,而主觀交易兩者都靠人。三者常常一起出現——你先用量化想清楚規則,再用程式交易自動跑。
| 量化交易 | 程式交易 | 主觀交易 | |
|---|---|---|---|
| 重點 | 用數據與統計做決策(選什麼、何時買賣) | 用程式自動執行那些決策 | 靠經驗、盤感、消息面判斷 |
| 角色 | 「想法」 | 「手腳」 | 人從頭做到尾 |
| 紀律來源 | 規則本身可量化 | 程式強制執行,零情緒 | 全憑自律,易動搖 |
| 可回測性 | 高(規則明確) | 高 | 低(難以複製) |
| 台股例子 | 「選複合動能 + 低波動的前 20 檔」這個策略 | 把它寫成程式、每月自動換股、自動下單 | 「最近台積電很強,進場試試」 |
可以這樣記:量化交易回答「買什麼」,程式交易回答「怎麼自動買」。 一個量化策略如果用手動執行,它還是量化交易、只是沒自動化;一個程式如果只是無腦定時定額,它有程式、但談不上量化。兩者的交集——量化 + 程式自動執行——才是本篇示範的主場。想深入概念層,看 量化交易是什麼。
3. 程式交易常見策略類型(附台股例子)
程式交易能執行的策略五花八門,但學術與業界常見的可歸成六大類。下表每類給一句白話定義 + 一個台股化的例子:
| 策略類型 | 一句話定義 | 台股例子 |
|---|---|---|
| 趨勢追蹤 | 順著既有方向買,漲破壓力就進、跌破支撐就出 | 突破 60 日新高才買進,跌破 20 日均線出場 |
| 動能輪動 | 買「過去一段時間最強」的股票,定期換成新的強者 | 每月選複合動能前 20 檔(本篇主角) |
| 均值回歸 | 賭「過度漲跌會回到平均」,超跌買、超漲賣 | RSI < 30 的超賣股分批承接,回到均線出場 |
| 統計套利 | 找出長期同步的兩檔,價差拉開時做多弱、做空強 | 台積電 vs 聯電價差發散時建立中性部位 |
| 基本面選股 | 用財報指標(ROE、營收、EPS)系統化選好公司 | 連 3 月營收年增 + ROE>15% 加權持有 |
| 籌碼/事件 | 跟著法人、融資、董監等籌碼或事件訊號進出 | 投信連續買超 + 月營收公布後的 PEAD 漂移 |
本篇示範的是「動能輪動」——因為它最能凸顯程式交易「自動執行 + 紀律」的價值:選股邏輯不複雜(誰最強就買誰),但人類最難做到的就是「紀律地每月汰弱換強、不被情緒綁架」,這正是程式最擅長的事。
動能效應有學術根據。 1993 年 Jegadeesh 與 Titman 在《Journal of Finance》發表的經典研究發現:過去 3–12 個月表現好的股票,未來 3–12 個月傾向繼續領先(白話:強者恆強)。這個「動能效應」後來成為金融學三大異象之一,也是本篇策略的理論基礎。不過下面你會看到,純追漲在台股要付出慘痛回撤,所以我們得加上紀律過濾。
4. 程式交易的優點與缺點(誠實版)
不誇大。程式交易不是印鈔機,它把人的弱點換成另一組(不同的)弱點。
4 大優點
- 零情緒、零猶豫:程式不會因為昨天虧錢就不敢進場,也不會因為貪心而追高。紀律是寫死的。
- 規模與速度:幾秒掃完全市場,同時監控數千檔——人力做不到。
- 可回測、可驗證:任何規則上線前都能先用歷史資料量化檢驗,不是「我覺得有用」。
- 可自動化下單:回測通過的策略能直接串券商 API 自動執行,連「換股」這一步都不用手動。
4 大缺點
- 無法應變突發:程式只執行寫好的規則。遇到規則沒涵蓋的黑天鵝(政策突變、系統當機),它不會臨機應變。
- 過度擬合風險:歷史回測漂亮,很可能是「事後諸葛」式地把參數調到剛好貼合過去——未來未必有效(見第 6 節)。
- 需要持續維護:資料源、券商 API、市場結構都會變,策略需要定期重測與更新,不是寫完就一勞永逸。
- 回撤照樣痛:即使是優化過的策略,本篇主角的最大回撤仍達 -42%(見下圖)。程式不會幫你少痛,只會幫你紀律地撐過去。

這張回撤圖是這篇最重要的誠實揭露: 我們的策略年化 29%,但你必須有本事抱過一度資產縮水 42% 的時刻(主要落在 2022 年熊市與 2025 年初的回檔)。如果抱不住、在低點砍掉,再好的回測都跟你無關。程式交易的紀律價值,有一半就在「幫你在這種時刻不亂動」。
5. 程式交易適合哪些商品?
程式交易本身是「方法」,幾乎任何有報價、能下單的市場都能套用,但各市場特性不同:
| 商品 | 適合度 | 重點 |
|---|---|---|
| 台股(個股/ETF) | 高 | 資料完整、可長期回測;但證交稅 0.3% 高,頻繁交易吃報酬,適合月頻/季頻(本篇即是) |
| 台指期/股期 | 高 | 槓桿高、成本低、可做空,適合趨勢與當沖;但風險放大,需嚴格控倉 |
| 加密貨幣 | 中 | 24 小時、波動極大、API 成熟;但無漲跌幅、易插針,過擬合風險最高 |
| 海外股票/ETF | 中高 | 標的多、交易成本低(無證交稅),適合動能輪動;需處理時差與匯率 |
本篇選台股月頻示範,正因為它對「紀律」的要求最直接:台股 0.3% 證交稅讓你不能亂換股,逼你用程式精準控制再平衡頻率——這恰好是程式交易最能發揮的地方。
6. 風險與防過擬合:程式交易最該認真看的一段
回測漂亮不等於未來會賺。這一節是把上面那個 29% 拆開,看它扛不扛得住真實世界的摩擦。
6-1. 交易成本與滑價會吃掉多少?
台股每筆完整交易的成本約 0.585%(手續費買賣各 0.1425% + 賣出證交稅 0.3%)。本篇策略是月頻(一年換約 12 次),已經把成本控制在可接受範圍;若改成週頻、日頻,成本會成倍侵蝕報酬。我們的回測已內含手續費與證交稅,所以表中的 29.06% 是扣成本後的數字。
滑價(Slippage):你想用的價格和實際成交價的落差。流動性差的小型股滑價大,這也是本篇把選股池限定在「市值前 200 大」的原因之一——大型股才買得到、賣得掉。
6-2. 防過擬合的四道防線
| 防線 | 做法 | 本篇怎麼做 |
|---|---|---|
| 規則簡單 | 因子越少越穩健,避免「調出來」的假象 | 只用 4 個有學理的因子(雙動能 + 低波動 + 品質) |
| 樣本外驗證 | 用一段資料調策略,另一段沒看過的資料驗證 | 完整 2018–2026 不挑時段,含 2022 熊市 |
| 看風險調整報酬 | 不只看報酬,要看夏普/索提諾/回撤 | 索提諾 1.87,而非只秀年化 |
| 對照組比較 | 一定要和買入持有比,贏不過就別做 | 對照 0050 含息 + 純動能基準 |
下圖把「優化組 vs 純動能 vs 0050」三條權益曲線疊在一起。注意紅線(純動能)雖然終點報酬接近藍線,但一路波動更大、回撤更深——這就是為什麼我們選風險調整後更好的優化組:

逐年拆開看,策略並非年年贏 0050——在 2019、2024 等大盤強勢年它會落後,但在 2020、2021、2023、2025 等年份明顯拉開差距。長期勝出靠的是「贏的年份贏更多、輸的年份不致命」,不是每年都贏:

7. 程式交易要會 Python 嗎?(雙軌:AI 對話 + 完整可跑範例)
這是搜「程式交易 python」的人最關心的。答案是雙軌的:
- 不會寫程式 → 用講的請 AI 跑。 FinLab 教的是「跟 AI 對話」,底層由 finlab 套件實跑真數據。
- 想自己學/微調 → 給你完整可複製貼上、能獨立執行的 finlab 範例。
軌道一:用 AI 對話建立策略
💬 你對 AI 說:
幫我建立一個動能輪動策略:在市值前 200 大、ROE 大於 0、營收年增大於 0 的股票裡,用近 3 個月和近 6 個月的漲幅排名,加上低波動和高 ROE 一起評分,選前 20 檔每月換股,回測 2018 到現在,跟 0050 含息比報酬、夏普和回撤。
🤖 AI 回覆:
已完成。優化組年化 29.06%、夏普 1.14、索提諾 1.87、最大回撤 -42.0%,報酬與風險調整後表現皆優於 0050(年化 25.18%)。已附上權益曲線與回撤圖。
軌道二:完整可跑的 finlab Python 範例
下面這段是可以直接複製、完整獨立執行的程式碼(環境:pip install finlab,登入後即可跑)。它就是本篇所有數字的來源——你也能下載完整腳本:strategy.py。
顯示程式碼
import warnings; warnings.filterwarnings("ignore")
import numpy as np, pandas as pd
from finlab import data
from finlab.backtest import sim
close = data.get('price:收盤價')
adj = data.get('etl:adj_close') # 含息,benchmark 用
rev = data.get('monthly_revenue:去年同月增減(%)')
roe = data.get('fundamental_features:ROE稅後').index_str_to_date() # 對齊公布日,避免前視偏差
mktv = data.get('etl:market_value')
START = '2018-01-01'
def monthly(df):
return df.reindex(close.index, method='ffill').resample('M').last()
# 複合動能:近 3 個月 + 近 6 個月(扣最近 1 月,避免短期反轉)
mom3m = monthly(close.pct_change(60))
mom6m = monthly(close.pct_change(120).shift(20))
volm = monthly(close.pct_change().rolling(60).std()) # 近 60 日波動
roem = monthly(roe)
revm = monthly(rev)
mktvm = monthly(mktv)
# 選股池:市值前 200 大 + ROE>0 + 營收年增>0(避免動能抓到沒基本面的飆股)
pool = (mktvm.rank(axis=1, ascending=False) <= 200) & (roem > 0) & (revm > 0)
def rk(df, asc=True):
return df.where(pool).rank(axis=1, pct=True, ascending=asc).fillna(0)
# 四因子評分:雙動能 + 低波動 + 高 ROE,選前 20 檔、分數平方加權
score = rk(mom3m) + rk(mom6m) + rk(volm, asc=False) + rk(roem)
mask = score.where(pool).rank(axis=1, ascending=False) <= 20
masked = (score.where(mask, 0)) ** 2
w = masked.div(masked.sum(axis=1).replace(0, np.nan), axis=0).fillna(0)
w = w[w.index >= START]
report = sim(w, resample='M', resample_offset='14D', upload=False) # 月頻再平衡
print(report.get_stats())看不懂沒關係——重點是規則清楚,程式只是把規則自動化。你學的是「怎麼想策略」,不是背語法。
股號要用字串,例如close['2330']而非close[2330]。
下面是這支程式跑出來的互動式回測儀表板(可滑動查看每年績效、持股、回撤明細),完全不離開頁面就能驗證上面的數字:
軌道三:回測通過後,自動下單
回測站得住腳,才接自動下單。finlab 已串接永豐、富邦、國泰、玉山等券商。把回測的目標部位 position 交給帳戶物件,它會自動算出該買賣哪些股票、各多少張並送單:
顯示程式碼
from finlab.online.fugle_account import FugleAccount # 以富果為例,其他券商類似
from finlab.online.order_executor import OrderExecutor
acc = FugleAccount() # 載入券商憑證
# position = report.current_trades / 你的目標權重(對齊上面的 w 最後一期)
oe = OrderExecutor(position, account=acc)
oe.create_orders() # 依目標部位自動下單(可先 view 確認)這就是程式交易和「手動照表操作」最大的差別:選股 → 換股 → 下單整條鏈不用手動,每月按表執行,紀律 100%。
8. 學術背書:程式交易策略不是憑空亂湊
YMYL(理財)主題最該講清楚「為什麼這樣設計」。本篇四個因子各有經典文獻支撐:
| 因子 | 經典論文 | 白話說明 |
|---|---|---|
| 動能 | Jegadeesh & Titman (1993) | 過去 3–12 個月的贏家,未來傾向繼續領先(強者恆強) |
| 低波動 | Ang, Hodrick, Xing & Zhang (2006) | 低波動股的風險調整後報酬常優於高波動股(低波動異象) |
| 品質(ROE) | Novy-Marx (2013) | 高獲利能力(profitability)是穩定的報酬來源,品質股長期勝出 |
| 多因子組合 | Asness, Moskowitz & Pedersen (2013) | 動能與價值/品質在多市場同時有效,組合起來更穩健 |
把這些低相關的因子疊起來,正是第 4 節「規則簡單但有學理」的實踐:一個因子失靈時,其他能補,整體更穩。這也是為什麼純動能(夏普 0.98)加上低波動 + 品質後,夏普能升到 1.14。
9. 程式交易常見問題:門檻、合法性、軟體比較
9-1. 程式交易要花多少錢、門檻多高?
| 項目 | 說明 |
|---|---|
| 資料 | finlab 提供台股歷史與即時資料,有免費額度;進階數據走訂閱 |
| 程式環境 | Python 免費;pip install finlab 即可,不需自建資料庫 |
| 本金 | 回測零成本;實單建議從小額開始驗證,不用大資金起步 |
| 學習門檻 | 不會寫程式可用 AI 對話操作;想自己改再學語法 |
9-2. 程式交易在台股合法嗎?
合法。 透過合法券商提供的官方 API(永豐、富邦、國泰、富果等)進行程式下單是被允許的,但須遵守交易所規範:不得從事影響市場秩序的行為(如沖洗交易、連續委託拉抬),且高頻/大量委託可能受券商風控限制。一般月頻/週頻的程式交易策略完全在規範內。(來源:各券商 API 服務條款與證交所程式交易相關規定)
9-3. 常見軟體/平台比較
| 平台 | 適合 | 特點 |
|---|---|---|
| finlab | 台股量化選股 + 回測 + 自動下單 | Python 生態、可下載策略碼、AI 對話操作、串多家券商 |
| MultiCharts | 期貨/技術指標當沖 | 圖形化、適合趨勢與當沖,偏技術面 |
| TradingView | 跨市場畫線 + Pine Script 回測 | 視覺化強,但台股個股回測深度有限 |
| TQuant Lab | 台股機構級回測 | 功能完整,學習曲線較陡 |
9-4. 新手 0 基礎怎麼開始(更細的步驟)
| 步驟 | 做什麼 |
|---|---|
| 1. 想規則 | 用白話描述選股與進出場條件(例:選最強的 20 檔每月換) |
| 2. 請 AI 跑回測 | 用對話讓 finlab 驗證規則的報酬、夏普、回撤 |
| 3. 防過擬合檢查 | 看樣本外、扣成本、和 0050 比,贏不過就改 |
| 4. 小額實單 | 用小資金跑一段,確認實單與回測落差可接受 |
| 5. 接自動下單 | 串券商 API,讓選股→換股→下單自動化 |
接下來
本篇屬於 程式交易 主題支柱。延伸閱讀:
- 量化交易是什麼 — 先把上層概念搞懂(想法層)
- 台股 5 大選股因子實測 — 單因子為何全輸 0050、複合才贏
- 四因子選股實戰(可下載程式碼) — 把因子疊起來的完整拆解
- 追漲停真的能賺嗎?動能投資 18 年實測 — 純動能的失敗與優化
- 股票選股總覽 — 各類選股因子的方法地圖
常見問題(FAQ)
| 問題 | 回答 |
|---|---|
| 程式交易是什麼? | 把交易規則寫成程式,讓電腦自動完成選股、回測、下單,核心是速度、紀律與可驗證。 |
| 程式交易和量化交易差在哪? | 量化交易是「想法/做決策」,程式交易是「手腳/自動執行」,兩者常一起用。 |
| 一定要會 Python 嗎? | 不用。可用 AI 對話操作 finlab;想自己微調再學語法,本篇也附完整可跑範例。 |
| 程式交易一定賺嗎? | 不。程式只負責紀律執行,策略好不好要靠回測、防過擬合與成本檢驗。 |
| 月頻再平衡會不會被交易成本吃掉? | 月頻一年換約 12 次,本篇回測已扣手續費與證交稅,29% 是扣成本後的數字。 |
| 程式交易在台股合法嗎? | 合法,透過券商官方 API 下單即可,但須遵守交易所規範、不得擾亂市場。 |
投資有風險,過去績效不代表未來表現。本內容僅供教學參考,不構成投資建議,請依個人風險承受度審慎評估。本文所有 CAGR / 夏普 / 索提諾 / 回撤數字來源:finlab 實測(2018-01 ~ 2026-06,benchmark 用 etl:adj_close 含息),完整可重現程式碼見 strategy.py。作者:FinLab 量化研究團隊,經量化研究員審閱。最後更新:2026-06。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始