量化交易真相:先潑冷水再上路
你決定學量化交易,心裡大概有個畫面:寫好策略、讓電腦自動下單,每天起床看帳戶多了幾個百分比。這個畫面並不完全是謊言——量化交易確實存在,也確實有人靠它穩定獲利。但那個「有人」,指的通常是頂尖對沖基金配置了整層 IT 基礎設施的量化團隊,而不是在個人筆電上跑 Python 腳本的散戶。
2025 年 8 月的調查顯示,84% 的加密幣散戶在第一年虧損,其中 58% 幾乎賠光本金。量化策略不是解藥——它多了一層「過擬合」的風險,讓你在回測時信心滿滿,一上實盤就原形畢露。這堂課就是那杯冷水:把真相搞清楚、把期待校正好,你才能帶著正確的姿勢進入後面七堂課。
這堂學什麼
- 量化交易是什麼、不是什麼——把「自動賺錢機器」的幻覺打掉
- 散戶對機構的結構性劣勢:你輸在哪裡、能彌補哪些
- 統計現實:大多數人虧錢,而且原因通常不是「策略不夠聰明」
- 用 Python 計算手續費對打平勝率的真實影響,看完會讓你重新審視所有漂亮的回測數字
- AI(LLM)在量化系統的正確位置,以及業界共識的禁區
- 本課程路線圖:八堂課從觀念到模擬盤上線的完整脈絡
量化交易是什麼?先拆穿三個常見誤解
「量化交易」這四個字被過度浪漫化了。先下一個工程定義:量化交易是把投資決策轉換成可測試、可回測、可自動執行的規則集合。注意這個定義裡沒有「賺錢」這兩個字——它描述的是方法論,不是結果保證。
誤解一:量化 = 自動印鈔
真相是,大多數散戶量化策略在交易成本面前就已經虧損了。手續費、滑價(slippage)、點差加在一起,很輕易就把紙面上的正期望值策略吃掉。後面實戰步驟會直接用 Python 算給你看。
誤解二:AI 可以預測市場
市場是對手盤的博弈場——每一個可以被 AI 發現的規律,一旦足夠多人知道,套利行為就會讓這個規律消失。LLM 在量化的角色是輔助:情緒分析、市場環境(regime)分類、策略研發加速,而不是「預測下一分鐘漲跌」的神器。讓 LLM 直接下單,是業界的共識禁區。
誤解三:好的策略只要找到就能一直用
市場環境不斷演化。一個在 2021 年牛市有效的動量策略,2022 年熊市可能直接讓你爆倉。量化交易需要持續監控、定期重新評估,比起「找到聖杯」,更接近「維護一台需要定期保養的機器」。

散戶對機構:誠實的劣勢分析
先說好消息:散戶做量化不是完全沒有勝算。壞消息是,你必須知道自己輸在哪裡才能繞開。
| 維度 | 頂尖機構量化 | 散戶量化現實 |
|---|---|---|
| 延遲 | 共置伺服器,微秒級 | 家用網路 / 雲端,毫秒~秒 |
| 資料 | 自購 Level 2 訂單簿、另類資料 | 交易所公開 API(免費但有限制) |
| 算力 | GPU 叢集、專屬 FPGA | 個人電腦 / 便宜雲端 |
| 手續費 | 月交易量 VIP 費率(往往低於 0.02%) | 散戶費率(0.05%~0.1%+) |
| 監管 | 合法持牌、有法律護城河 | 台灣現行法規灰色地帶 |
| 人力 | 數十人研究團隊輪班 | 下班後兼差、週末 debug |

這張表的重點不是要你放棄——而是要你避開機構必然碾壓你的戰場。高頻交易?別想了,這是延遲的遊戲,散戶沒有勝算。中低頻策略(每天幾筆到幾十筆)?有機會。長線趨勢跟隨?有機會。利用機構顧忌的小流動性幣種?有機會,但也帶著相應的流動性風險。
找到散戶能贏的戰場,比試圖全面競爭更實際。這整個課程的策略設計都圍繞著這個原則。
統計現實:大多數人都虧錢
數字先說清楚:84% 的加密幣散戶第一年虧損;長期來看,7090% 的散戶交易者最終虧損;只有 14% 的日內交易者能長期獲利。這些數字在量化策略使用者身上不會更好看。

原因通常不是「策略不夠聰明」:
- 交易成本侵蝕:手續費加滑價,往往讓策略的真實損益比回測差一個等級。後面實戰部分會直接算出你需要多少勝率才能打平
- 過擬合(overfitting):策略其實是「記住了歷史資料的雜訊」而非學到真實規律,在新資料上直接崩潰。第 3 課深入討論
- 人工干預實盤:策略說賣,人說「再等等」;策略連虧三筆,人把電腦關掉——量化的紀律優勢被自己手動破壞
- 市場環境切換:趨勢策略在震盪市大虧,均值回歸策略在趨勢市大虧。很多人在環境切換後很久才意識到策略已經失效
AI 在量化的正確位置
這個課程叫「AI 量化交易」,所以必須說清楚 AI 能做什麼、不能做什麼。業界 2026 年的共識是:LLM 放在訊號層,絕對不放執行層。

LLM 能做的事(訊號層):
- 情緒分析:掃描社群媒體、財經新聞,生成情緒分數作為策略的一個輸入特徵
- 市場環境分類(Regime Detection):請 LLM 描述當前市場狀態(趨勢 / 震盪 / 高波動),作為策略切換的條件判斷
- 策略研發輔助:用 LLM 幫你寫 freqtrade 策略程式碼草稿、解釋回測報告的指標意義、提供調參建議
LLM 絕對不能碰(執行層):
- 直接呼叫交易所 API 下單
- 決定實際倉位大小
- 任何會產生真實財務後果的動作
為什麼這麼嚴格?因為 LLM 會產生幻覺(hallucination)、輸出不穩定、沒有一致的風控框架。一個有幻覺的 LLM 如果被允許下單,可能在幾分鐘內做出讓你爆倉的決定。多 agent 交易系統目前屬於學術實驗階段,不適合有真實資金的環境。第 5 課會展示 LLM 訊號整合的正確做法。
法律與稅務:你必須意識到的基本線
台灣對加密幣交易的稅務規範持續演進,以下是幾個必須知道的基本事實:
- 所得稅:加密幣交易獲利目前適用財產交易所得,計入個人綜合所得稅。自動化策略不改變稅務義務——系統幫你賺的錢一樣要申報
- 外匯申報:使用境外交易所(如 Binance 全球版)涉及外匯申報規定,大額資金進出須注意申報門檻
- 法律灰色地帶:在台灣以量化策略為他人管理資產,可能涉及未經許可從事投資顧問業務,即使免費也一樣
- 本課程立場:所有實作均在個人模擬帳戶進行。稅務與法律問題請諮詢專業律師或會計師,本課程不在此範疇提供建議
課程路線圖
這八堂課的邏輯是:先搞懂資料 → 建策略 → 回測 → 加 AI 訊號 → 上模擬盤。每一堂都是下一堂的前置,不建議跳著學。
| 課 | 主題 | 核心產出 |
|---|---|---|
| 1(本課) | 真相與期待校正 | 認知框架 + 開發環境 |
| 2 | 行情資料的取得與清洗 | 乾淨的 OHLCV 資料集 |
| 3 | 均線、動量與過擬合陷阱 | 第一個有自我批判意識的策略 |
| 4 | freqtrade 回測實戰 | 跑得起來的完整回測報告 |
| 5 | AI 的正確位置:訊號層 | LLM 情緒分數整合進策略 |
| 6 | 風控:活下來比賺錢重要 | 倉位計算與停損機制 |
| 7 | 模擬盤到實盤的最小可行上線 | 完整模擬盤部署 |
| 8 | 綜合實戰覆盤 | 從想法到模擬盤的完整 pipeline |
手把手實戰
這堂課的實戰目標有兩個:把 freqtrade 環境裝好(後面七堂課都要用),以及用 Python 算出「你的策略要贏幾成才能打平交易成本」。第二個計算的結果,會讓你重新審視所有看起來很漂亮的回測報告。
確認並設定 Python 環境
開終端機確認版本:
python --version
# 需要 3.11 以上,freqtrade 對更舊版本的支援有限
pip --version
# 確認 pip 存在
建議用 venv 建立獨立環境,避免和其他專案的套件衝突:
# 建立並啟用 venv
python -m venv freqtrade-env
source freqtrade-env/bin/activate # macOS / Linux
# Windows: freqtrade-env\Scripts\activate
# 確認進入 venv(提示符前面會出現 (freqtrade-env))
which python # 應該指向 venv 內的路徑,不是系統路徑
安裝 freqtrade
freqtrade 是本課程的核心工具:免費開源、支援主要交易所、內建回測 / 繪圖 / 資金管理 / Telegram 控制。目前版本為 2026.x(每月發行新版)。
pip install freqtrade
# 會拉 TA-Lib、pandas、numpy 等相依套件,需要幾分鐘
freqtrade --version
# 確認安裝成功,應顯示 2026.x
如果看到 error: command 'gcc' failed,代表缺少 C 編譯器:
# macOS
xcode-select --install
# Ubuntu / Debian
sudo apt-get install build-essential
安裝好後初始化工作目錄:
freqtrade create-userdir --userdir user_data
# 建立 user_data/strategies/、user_data/data/、user_data/logs/ 等資料夾結構
用 Python 計算手續費的真實影響
這是這堂課最重要的一段程式碼。複製到你的 Python 環境跑一遍,數字會讓你印象深刻:
def breakeven_winrate(profit_pct: float, loss_pct: float, fee_rate: float) -> float:
"""
計算策略打平所需的最低勝率。
假設:每筆獲利 profit_pct,每筆虧損 loss_pct,
手續費雙邊(買入 + 賣出)合計 fee_rate * 2。
推導:
win * (profit - 2*fee) - (1 - win) * (loss + 2*fee) = 0
→ win = (loss + 2*fee) / (profit + loss)
"""
total_fee = fee_rate * 2 # 一買一賣,兩次手續費
net_profit = profit_pct - total_fee
net_loss = loss_pct + total_fee
if net_profit <= 0:
return float('inf') # 費用比獲利還高,無論如何都虧
return net_loss / (net_profit + net_loss)
# 常見交易場景(假設:每筆預期獲利 2%,每筆預期虧損 1%)
scenarios = [
("幣安合約 maker (0.02%)", 0.02, 0.01, 0.0002),
("幣安合約 taker (0.05%)", 0.02, 0.01, 0.0005),
("幣安現貨 (0.10%)", 0.02, 0.01, 0.001),
("台灣期貨(估算 0.20%)", 0.02, 0.01, 0.002),
("現貨 + 0.1% 滑價", 0.02, 0.01, 0.002),
]
print(f"{'場景':<32} {'打平需勝率':>10}")
print("-" * 44)
for name, profit, loss, fee in scenarios:
wr = breakeven_winrate(profit, loss, fee)
print(f"{name:<32} {wr:>10.1%}")
預期輸出:
場景 打平需勝率
--------------------------------------------
幣安合約 maker (0.02%) 34.7%
幣安合約 taker (0.05%) 36.7%
幣安現貨 (0.10%) 40.0%
台灣期貨(估算 0.20%) 46.7%
現貨 + 0.1% 滑價 46.7%

重點在最後兩列:同樣是 0.1% 成本量級,現貨手續費對應 40% 打平勝率,一旦再疊上 0.1% 滑價,打平勝率就跳到將近 47%。實際上「流動性差的幣對」或「下單量較大時」,滑價遠不止 0.1%。把這個數字記起來——後面每次看到漂亮的回測報告,先問自己:「這份報告有沒有把滑價算進去?」
建立 freqtrade 設定檔,確認 dry-run 模式
dry-run 是 freqtrade 的「模擬交易」模式:策略照跑、訊號照產生、假帳戶照扣,但不碰真實資金。整個課程你都在這個模式下操作。
# 互動式建立設定檔
freqtrade new-config --config user_data/config.json
照提示回答,重點設定:
? Do you want to enable Dry-run (simulated trading)? → Yes ← 一定要 Yes
? Please insert your stake currency: → USDT
? Please insert your stake amount: → 100
? What is your exchange? → binance
? Do you want to enable Telegram? → No (第 7 課再設定)
完成後打開 user_data/config.json,確認這兩個欄位:
"dry_run": true,
"dry_run_wallet": 1000
dry_run_wallet 是假錢包的初始 USDT,設 1000 即可。在確認 "dry_run": true 之前,不要繼續任何涉及交易所連線的步驟。這不是客套話——後面課程如果你配置錯誤,dry_run: false 加上真實 API 金鑰會產生真實下單。
常見坑
坑 1:ModuleNotFoundError: No module named 'freqtrade'
安裝明明成功了,執行時卻找不到模組。九成是 venv 沒有啟動——你把 freqtrade 裝在 venv 裡,但執行時用的是系統 Python。確認提示符有 (freqtrade-env) 前綴;沒有就跑 source freqtrade-env/bin/activate 再試。在 VS Code 裡還有一個陷阱:右下角的 Python 直譯器要手動切換成 venv 路徑,否則終端機和編輯器用的是不同 Python 環境。
坑 2:安裝時 TA-Lib 編譯失敗
error: command 'gcc' failed: No such file or directory
RuntimeError: TA-Lib cannot be installed: No module named 'TA_Lib'
TA-Lib 是技術指標函式庫,需要 C 底層編譯。macOS 解法:
brew install ta-lib # 先裝 C library
pip install TA-Lib # 再裝 Python wrapper
Ubuntu/Debian:
sudo apt-get install -y libta-lib-dev
pip install TA-Lib
Windows 最麻煩,建議直接用 WSL2,或改用 Docker 版省去所有編譯問題:
docker run --rm freqtradeorg/freqtrade:stable freqtrade --version
坑 3:把回測的勝率當作實盤的勝率
回測結果顯示策略勝率 65%、年化報酬 80%——這個數字是在「以精確的歷史收盤價成交」的完美條件下計算的。實盤有三個成本回測預設忽略:滑價(你的下單不會剛好在 K 棒收盤價成交)、未成交率(限價單在快速行情中可能掛不到)、以及訊號到下單之間的時間延遲。
freqtrade 的 --slippage 回測參數可以修正部分問題,第 4 課會完整說明。今天先記住這個原則:看到漂亮回測數字,先對折。
坑 4:讓 LLM 直接控制下單
GitHub 上有不少「GPT 自動交易機器人」的 repo,其中 LLM 直接呼叫交易所 API 下單。請不要照做。LLM 的幻覺在生成文字時是小問題,在財務執行上是災難性的——它可能把「賣出 0.01 BTC」解讀成「賣出 0.1 BTC」,或在你沒有預期的條件下觸發交易。2025 年 10 月 10 日的加密幣史上最大單日強平事件,24 小時內超過 190 億美元的槓桿倉位被強制平倉、約 160 萬個交易帳戶遭清算,其中不乏跑著「測試中」自動策略的散戶。
正確做法:LLM 只生成「建議分數」或「市場標注」,最終進出場決策由你設計的規則引擎執行。第 5 課有完整的整合範例。
作業
- 安裝 freqtrade,跑完上面的「打平勝率計算」程式碼,把輸出截圖存下來。對照你預期策略的勝率目標,問自己:「我設定的目標勝率有沒有超過打平門檻?超過多少?」
- 思考題:你過去有沒有做過任何投資決策(不限量化、不限加密幣)?試著把其中一個決策拆解成三個部分——進場條件、出場條件、倉位大小——寫在筆記本上。如果某個部分你回答不出來,那就是你之前在憑直覺交易的地方。這個練習是第 3 課「把直覺轉換成可測試規則」的前置。
- 花 10 分鐘掃過 freqtrade.io 的主選單,對整體功能有個印象。不需要全懂,第 2 課會用到其中的資料下載指令。
- 選做:找一份你在網路上看過的「回測截圖」,嘗試辨別:它有沒有扣手續費?有沒有說明回測的時間區間?時間區間是牛市還是熊市?
下一課預告
你已經有了清醒的認知和乾淨的開發環境。第 2 課:行情資料的取得與清洗。
光是「拿到資料」就有很多坑:免費 API 的速率限制、不同交易所的 OHLCV 格式差異、缺漏蠟燭(missing candles)如何讓你的回測靜悄悄地出錯。第 2 課會用 freqtrade 內建的資料下載工具繞過大部分陷阱,讓你拿到一份回測可以信任的乾淨資料集——這是後面所有課程的地基。