完整教學

從零學量化交易

這頁用你自己的回測數據當教材——夏普值不是抽象公式,而是「你的策略 1.23」。 從「什麼是量化」一路講到怎麼判斷一個策略好不好。

📊 尚無回測資料,下方以本專案實測的 AAPL 布林突破為範例。去「策略績效」頁跑一次回測,這裡就會換成你的數字。

1 · 量化交易在做什麼

量化交易就是用數據與固定規則做交易決策,而不是憑感覺。 把「我覺得會漲」換成「符合這些條件就買、達到這些條件就賣」,再用歷史資料驗證這套規則到底賺不賺。

資料指標訊號回測績效迭代

整條流程就是這頁的骨架:先有資料,算出指標,依指標產生買賣訊號, 用回測模擬歷史績效,用績效指標判斷好壞,再迭代改進。

2 · 資料:行情從哪來

最基本的單位是 OHLCV:每天的開盤(Open)、最高(High)、最低(Low)、收盤(Close)、成交量(Volume)。 本專案台股美股都用 FinMind 抓,統一成同一種格式,策略才不用管資料來自哪個市場。

⚠️ 還原價(Adjusted Close)——新手最常忽略的坑

除權息與股票分割會讓股價「跳空」。例如 AAPL 2024-05-01 收盤 169.30,但還原價是 167.62—— 差的 1.68 是配息造成的。回測一定要用還原價,否則除息那天會看到假跌、訊號和報酬全錯。 台股免費資料未還原,本專案先以 close 代替,要真實總報酬需接 FinMind 付費的還原股價資料集。

3 · 指標:把價格變成可判讀的訊號原料

指標是對價格序列做的數學計算,幫你「看出」單看 K 線看不出的東西:

  • 移動平均線 (MA):近 N 日收盤平均,撫平雜訊看趨勢。MA5 上穿 MA20 = 黃金交叉(短線轉強)。
  • 布林通道 (Bollinger Bands):以 20 日均線為中軸,上下各 2 個標準差。價格站上上軌代表突破近期波動區間。
  • MACD:快慢均線之差,判斷動能與多空轉折。
  • KD (KDJ):衡量收盤價在近期高低區間的相對位置,看超買超賣。

4 · 訊號 / 選股策略:何時進場

策略 = 一組「符合就進場」的規則。本專案內建三類選股策略:

  • 布林突破:收盤站上布林上軌 + 量能放大 + 中長均線多頭排列。抓「剛突破盤整、帶量上攻」的股票。
  • VCP(波動收縮):價格波動一段段收斂、量縮後突破。Minervini 的經典型態,抓「醞釀後爆發」。
  • 形態學:辨識特定價格型態(如底部、旗形)作為進場依據。

這些策略選擇性很高——任一天通常只有約 5% 的股票同時滿足條件。所以選股池看起來「沒幾檔」是正常的,寧缺勿濫。

5 · 回測:怎麼知道策略賺不賺

回測 = 拿歷史資料模擬「如果過去照這策略做,結果會怎樣」。 這是量化的心臟,也是最容易自我欺騙的地方。三個一定要懂的坑:

① 未來函數 (Look-ahead bias)

不能用「還沒發生的資料」做決策。本引擎在第 i 根收盤決策、第 i+1 根才成交——你不可能在看到今天收盤的同一刻用今天收盤價買進。少了這道防線,回測會漂亮到不真實。

② 交易成本

台股手續費 0.1425%(可打折)+ 賣出證交稅 0.3%;美股多為零手續費。不算成本的回測對短線策略尤其騙人——高週轉會被成本吃掉一大塊報酬。

③ 還原價

同上節,用未還原的價格回測,除權息日會出現假跳空,讓報酬與訊號全錯。

6 · 績效指標:怎麼判斷好壞(用你的數據)

教材:布林突破 20/2 · AAPL (US)(範例)

總報酬 / 年化 (CAGR)34.64% / 16.14%

總報酬是整段期間賺的%;年化(CAGR)是把它換算成「平均每年」幾%,不同長度的回測才能公平比。但只看報酬會被騙——下面才是重點。

夏普值 (Sharpe)1.23 不錯,風險換報酬划算

每承受一單位波動,換到多少報酬。公式:年化報酬 ÷ 年化波動。判讀慣例:<1 普通、1–2 不錯、>2 優秀。這就是為什麼「賺 6% 但夏普 0.27」其實很差——用大波動才換到一點點報酬。

索提諾值 (Sortino)1.89

夏普的改良版:只懲罰「下跌」的波動(上漲的波動不算風險)。所以索提諾通常 ≥ 夏普。分母是「下檔偏差」,標準算法是對低於目標的缺口平方、除以全部期數——除以「負報酬個數」是常見錯誤。

最大回撤 (Max Drawdown)-12.34% 中等,要撐得住

從歷史高點到谷底,最痛時跌多深。這是「你撐不撐得住」的指標。一個年化 7% 但中途回撤 -17%、且帳面虧損持續一年多的策略,多數人會在谷底受不了砍掉,根本領不到那 7%。深度 × 持續時間決定一個策略心理上能不能執行。

年化波動率12.79%

報酬的起伏程度(標準差年化)。波動越大,同樣的報酬「坐起來越晃」。它是夏普的分母。

高勝率 ≠ 好策略

勝率高(82%)但賺賠比 0.60<1 → 靠「常常小賺」累積,怕少數幾次大賠勝率與賺賠比是一組 trade-off,一定要一起看:常常小賺(高勝率、低賺賠比)怕大賠;少數大賺(低勝率、高賺賠比)要忍受常輸。再配「獲利因子」(總獲利÷總虧損,>1 才賺)一起判斷。

7 · 迭代與進階:別停在「跑出一個好看的數字」

量化真正的學習發生在循環裡:策略賠錢 → 想為什麼 → 改假設 → 再測。進階主題:

  • 過度擬合 (Overfitting):在歷史上調到完美的參數,實盤往往失靈。最危險的陷阱。
  • 樣本外 / Walk-forward 驗證:用一段資料調參、另一段沒看過的資料驗證,才知道是真本事還是背答案。
  • 參數最佳化 (Grid Search):系統化掃描參數組合,但要搭配上面的驗證,否則只是更精緻的過度擬合。
  • 投組與資金配置:多檔標的分散、決定每檔下多少,是把單一策略變成可長期執行系統的關鍵。

8 · 參考資料來源

想更深入,這些是值得收藏的入口:

  • FinMind台股與美股的開放金融資料 API,本專案的行情來源。免費版每日 600 次請求,付費版另有還原股價。
  • Investopedia金融名詞百科,夏普值、最大回撤、還原價等概念都有白話解釋,查術語的第一站。
  • backtrader 文件Python 回測框架官方文件,關於「次根成交、避免未來函數」的設計講得最清楚。
  • QuantStart量化交易入門文章庫,從回測、風險指標到策略開發循序漸進,適合自學。
  • Quant Stack Exchange量化金融問答社群,公式細節(如年化用 252、成交時點)有大量高品質討論。
  • 《Advances in Financial Machine Learning》López de Prado 著,進階必讀:講過度擬合、交叉驗證、避免回測陷阱,學完基礎後再讀。