跳至主要內容
台股研究 約 11 分鐘閱讀

程式交易是什麼?教學、優缺點、策略一次看懂(附可跑的 Python 回測 finlab 範例)|2026 最新

程式交易是把交易規則寫成程式,讓電腦自動完成「選股→回測→下單」。這篇用台股實例講清楚程式交易是什麼、和量化交易差在哪、常見策略類型與優缺點,並附一段可直接複製執行、月頻再平衡、年化 29% 的 finlab Python 回測程式碼(不會寫?也能用 AI 對話操作)。

電腦自動執行+紀律 CAGR 29.1% Sharpe 1.87

程式交易示範:動能輪動策略月頻自動再平衡,2018–2026 台股回測權益曲線,年化 29%,優於 0050 含息

先看結論:程式交易是什麼(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 檔,再用複合動能排名選出實際持有的 20 檔

階段 檔數 篩選邏輯
全市場可交易股票 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 大優點

  1. 零情緒、零猶豫:程式不會因為昨天虧錢就不敢進場,也不會因為貪心而追高。紀律是寫死的。
  2. 規模與速度:幾秒掃完全市場,同時監控數千檔——人力做不到。
  3. 可回測、可驗證:任何規則上線前都能先用歷史資料量化檢驗,不是「我覺得有用」。
  4. 可自動化下單:回測通過的策略能直接串券商 API 自動執行,連「換股」這一步都不用手動。

4 大缺點

  1. 無法應變突發:程式只執行寫好的規則。遇到規則沒涵蓋的黑天鵝(政策突變、系統當機),它不會臨機應變。
  2. 過度擬合風險:歷史回測漂亮,很可能是「事後諸葛」式地把參數調到剛好貼合過去——未來未必有效(見第 6 節)。
  3. 需要持續維護:資料源、券商 API、市場結構都會變,策略需要定期重測與更新,不是寫完就一勞永逸。
  4. 回撤照樣痛:即使是優化過的策略,本篇主角的最大回撤仍達 -42%(見下圖)。程式不會幫你少痛,只會幫你紀律地撐過去。

動能輪動策略最大回撤曲線,2018–2026 區間最大回撤約 -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」三條權益曲線疊在一起。注意紅線(純動能)雖然終點報酬接近藍線,但一路波動更大、回撤更深——這就是為什麼我們選風險調整後更好的優化組:

權益曲線對照:優化組(動能+低波動+品質,藍)vs 純動能(只追漲,紅)vs 0050 含息(灰),月頻再平衡 2018–2026

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

逐年報酬對照:動能輪動策略 vs 0050 含息,策略約 5/9 年勝出,弱年仍同步回檔


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,讓選股→換股→下單自動化

接下來

本篇屬於 程式交易 主題支柱。延伸閱讀:

常見問題(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 自動驗證、回測、給你答案

免費開始

更多技術指標研究

查看全部