
10 個 Python AI 庫完整指南:量化交易工作流嘅每一個環節
一文掌握 10 個核心 Python AI 庫喺量化交易入面嘅定位:NumPy 數值運算、pandas 金融時序、scikit-learn 傳統 ML、XGBoost/LightGBM tabular 主力、PyTorch 研究 DL、TensorFlow/Keras 生產部署、Jupyter 研究環境,再加 statsmodels、spaCy、Transformers、backtrader、vectorbt、ccxt、MetaTrader5、TA-Lib 嘅實戰場景。附典型安裝組合同決策樹。
點解要寫呢篇文?
踏入量化交易,Python 係默認語言 — 但「Python」呢個答案太空泛。一個完整嘅 ML / 量化工作流,會用到 最少 5 個截然不同嘅 library:
- 數值計算 → NumPy
- 數據清洗 → pandas
- 傳統 ML → scikit-learn
- 時間序列 / 統計模型 → statsmodels
- Gradient Boosting(特徵工程後嘅王者)→ XGBoost / LightGBM / CatBoost
- 深度學習 → PyTorch 或 TensorFlow + Keras
- NLP / 情緒分析 → HuggingFace Transformers / spaCy
- 回測 → backtrader / vectorbt / 自寫
- 實盤交易 → ccxt / 券商 API / MetaTrader5
- 研究環境 → Jupyter / VSCode
呢篇文嘅目標係 一文掌握呢 10 個 library 嘅定位、適用場景、量化交易實戰用法。讀完之後你應該識揀:「呢一刻我應該 import 咩?」
本文配套速查表(封面圖)會喺最後再出現一次。
1. 整體工作流:每個 library 喺邊個位置
一條典型嘅量化策略 pipeline:
原始數據 (CSV / Parquet / DB)
↓
[ pandas ] 清洗、resample、特徵工程
↓
[ NumPy ] 向量化計算、rolling 統計
↓
[ scikit-learn ] baseline ML、特徵選擇、pipeline
↓ (optional)
[ XGBoost / LightGBM / CatBoost ] tabular ML 主力
↓ (optional)
[ PyTorch / TF-Keras ] 時序模型、CNN、Transformer
↓
[ 自寫 backtest / backtrader / vectorbt ] 回測
↓
[ 券商 SDK / MT5 ] 實盤
↓
[ Jupyter / VSCode ] 探索 + 記錄核心心法:80% 嘅時間都喺 pandas + NumPy 入面。其他 library 係「最終決策者」,但前 80% 嘅代碼都係 ETL。
1.1 揀 library 嘅兩個維度
| 維度 | 揀標準 |
|---|---|
| 數據類型 | 數值/向量 → NumPy;表格 → pandas;時序 → pandas + statsmodels;文本 → spaCy/Transformers;圖像 → PyTorch/TF |
| 任務類型 | 線性模型 → sklearn;樹模型 → XGBoost/LightGBM;DL 模型 → PyTorch/TF;NLP → Transformers;回測 → backtrader/vectorbt |
呢兩個維度決定咗 90% 嘅 import 選擇。
2. NumPy — 數值運算嘅根

用途:N 維陣列、向量化數學、線性代數、隨機數、布林遮罩。
喺量化交易入面點用:
- ATR、EMA、RSI 全部用 NumPy 寫會比 pandas 快 10-100 倍
- 任何「rolling 計算」如果嫌 pandas 慢,可以喺 NumPy level 用
np.lib.stride_tricks.sliding_window_view實現 - 自訂指標、特徵函數嘅底層
典型安裝:
pip install numpy量化範例:用 NumPy 計算 ATR:
import numpy as np
def atr_numpy(high, low, close, period=14):
prev_close = np.concatenate([[close[0]], close[:-1]])
tr = np.maximum.reduce([
high - low,
np.abs(high - prev_close),
np.abs(low - prev_close)
])
return np.convolve(tr, np.ones(period) / period, mode='valid')量化提醒:pandas 內部就係 NumPy,多數情況你唔使刻意 import numpy。但寫底層信號引擎時直接用 NumPy 可以避免 pandas index 帶來嘅效能同 bug。
3. pandas — 金融時序嘅標準容器

用途:表格清洗、resample(5min → 1H)、rolling、groupby、merge。
喺量化交易入面點用:
- 讀 CSV / Parquet
- 計算 OHLCV 衍生欄位
- Resample 到唔同時間框架
- 多標的 join、做 cross-sectional features
典型安裝:
pip install pandas pyarrow量化範例:
import pandas as pd
df = pd.read_parquet('XAUUSD_M5.parquet')
df['returns'] = df['close'].pct_change()
df['atr'] = df['high'] - df['low'] # 簡化版
df_hour = df.resample('1H').agg({
'open': 'first', 'high': 'max', 'low': 'min', 'close': 'last', 'volume': 'sum'
})量化提醒:pandas 2.x 嘅pyarrowbackend 處理大數據快 5-10 倍。500MB+ 嘅時序數據,記得dtype_backend='pyarrow'。
4. scikit-learn — 傳統 ML 嘅入場券

用途:train/test split、StandardScaler、linear/ridge/lasso/elasticnet、RandomForest、SVM、PCA、KMeans、cross_val_score、GridSearchCV、Pipeline。
喺量化交易入面點用:
- 特徵標準化(
StandardScaler) - 交叉驗證(
TimeSeriesSplit— 唔好用普通 KFold) - 簡單嘅分類 / 回歸 baseline
- 特徵選擇(
SelectKBest、Lasso) - Pipeline 串起多步處理
典型安裝:
pip install scikit-learn量化範例 — Time-series cross-validation:
from sklearn.model_selection import TimeSeriesSplit
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
tscv = TimeSeriesSplit(n_splits=5)
pipe = Pipeline([
('scaler', StandardScaler()),
('clf', RandomForestClassifier(n_estimators=200, max_depth=5))
])
for fold, (train_idx, test_idx) in enumerate(tscv.split(X)):
pipe.fit(X.iloc[train_idx], y.iloc[train_idx])
score = pipe.score(X.iloc[test_idx], y.iloc[test_idx])
print(f"Fold {fold}: {score:.3f}")量化提醒:永遠唔好用train_test_split(random_state=...)— 會 leak future data。一定要用TimeSeriesSplit。
5. TensorFlow + Keras — 生產部署嘅首選

用途:Deep learning 模型、production serving(TFX、TF Serving)、多 GPU / TPU 訓練。
喺量化交易入面點用:
- LSTM / GRU 時序模型
- Transformer encoder for sequence-to-sequence prediction
- 跨資產特徵學習
- 大規模訓練(如果唔係 laptop 嘅話)
典型安裝:
pip install tensorflow量化範例 — 用 Keras 搭 LSTM:
import tensorflow as tf
from tensorflow.keras import layers, Model
inputs = layers.Input(shape=(60, 5)) # 60 根 K 線,5 個特徵
x = layers.LSTM(64, return_sequences=True)(inputs)
x = layers.LSTM(32)(x)
x = layers.Dense(16, activation='relu')(x)
out = layers.Dense(1, activation='sigmoid')(x) # 漲 / 跌
model = Model(inputs, out)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])量化提醒:TF 2.x 喺小型研究項目入面其實 比 PyTorch 慢(eager mode 開銷大)。如果只係做研究、唔做 production serving,直接揀 PyTorch。
6. PyTorch — 研究同快速實驗

用途:Deep learning 研究、自訂模型架構、reinforcement learning、dynamic graphs。
喺量化交易入面點用:
- 自訂 loss function(e.g. Sharpe ratio loss)
- Reinforcement learning 策略
- GAN / VAE for 合成金融數據
- 跨頻率 attention 模型
典型安裝:
pip install torch torchvision torchaudio # CPU
# GPU:去官網揀對應 CUDA 版本量化範例 — Sharpe-ratio loss function:
import torch
import torch.nn as nn
class SharpeLoss(nn.Module):
# Negative Sharpe ratio as loss. Minimize = maximize Sharpe.
def forward(self, returns):
# returns: shape (batch, time)
mean = returns.mean(dim=-1)
std = returns.std(dim=-1) + 1e-8
sharpe = mean / std
return -sharpe.mean()量化提醒:PyTorch 嘅 dynamic graph 令 debug 超方便 — 任何 print(model(x)) 都可以直接攞到中間 tensor 嘅 shape 同 value。7. Jupyter Notebook — 研究嘅 playground

用途:互動式 Python、Markdown 筆記、inline 圖表、分享研究結果。
喺量化交易入面點用:
- 探索性數據分析(EDA)
- 快速 prototype
- 寫研究日誌、畀自己睇返
典型安裝:
pip install jupyterlab ipywidgets量化範例 — 將 backtest plot inline:
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_parquet('XAUUSD_H1.parquet')
df['close'].plot(figsize=(14, 5), title='XAUUSD H1')
plt.show()量化提醒:Jupyter 好用,但 production code 唔可以擺喺 notebook 入面。Notebook 嘅隱藏狀態(variable 殘留、cell 順序依賴)係 production 嘅噩夢。
8. XGBoost — Tabular 數據嘅殺手鐧

用途:Gradient boosting、表格數據、Kaggle 競賽級表現。
喺量化交易入面點用:
- 結構化特徵(OHLCV + indicators + macro)嘅主力模型
- 跨標的橫截面預測(cross-sectional alpha)
- 中頻信號(5min-1D)
典型安裝:
pip install xgboost量化範例:
import xgboost as xgb
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
params = {
'objective': 'binary:logistic',
'max_depth': 5,
'learning_rate': 0.05,
'subsample': 0.8,
'colsample_bytree': 0.8,
'eval_metric': 'auc',
'tree_method': 'hist', # 快
}
model = xgb.train(params, dtrain, num_boost_round=200,
evals=[(dtest, 'test')], early_stopping_rounds=20, verbose_eval=10)量化提醒:XGBoost 處理 NaN 自動、跑得快、解釋性高(plot_importance)。金融時序嘅 tabular baseline 一定由佢開始。9. LightGBM — 大數據 + 低延遲

用途:同 XGBoost 類似,但訓練更快、記憶體更省、對大數據更友好。
喺量化交易入面點用:
- 幾百萬行 K 線 + 幾百個特徵
- 需要快速 retrain(e.g. 日內滾動訓練)
- 大規模 cross-sectional 訓練
典型安裝:
pip install lightgbm量化範例:
import lightgbm as lgb
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
params = {
'objective': 'binary',
'metric': 'auc',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.8,
'bagging_fraction': 0.8,
'bagging_freq': 5,
}
model = lgb.train(params, train_data, valid_sets=[test_data],
num_boost_round=500, callbacks=[lgb.early_stopping(20)])量化提醒:LightGBM 同 XGBoost 揀邊個?冇標準答案。一般嚟講 LightGBM 喺大數據更快,XGBoost 喺 Kaggle 勝率略高。建議兩個都試。
10. 其他必備(速覽)
呢啲 library 唔係十大,但係實戰必備:
| Library | 用途 | 量化用法 |
|---|---|---|
| statsmodels | ARIMA / GARCH / VAR | 經典時序模型、cointegration test |
| HuggingFace Transformers | Pretrained LLM / NLP | 財經新聞 sentiment、新聞分類 |
| spaCy | 快速 NLP pipeline | 命名實體識別(公司、人物)、文本預處理 |
| backtrader | 回測框架 | 多策略、多時間框架嘅 event-driven 回測 |
| vectorbt | 高速回測(向量化) | 大規模參數 sweep、組合回測 |
| ccxt | 加密貨幣統一 API | 100+ 交易所統一接口 |
| MetaTrader5 | MT5 Python SDK | 外匯 / CFD 實盤下單 |
| TA-Lib | 100+ 技術指標 C 實現 | RSI、MACD、Bollinger 等快速計算 |
揀 library 嘅 philosophy:用最熟嗰個解決 90% 嘅問題,唔好 chase 新嘅。新 library 嘅生產風險永遠高過佢嘅效能優勢。
11. 典型安裝組合
一個量化交易員 / researcher 嘅標準 requirements.txt:
# 核心
numpy>=1.24
pandas>=2.0
scipy>=1.10
# 傳統 ML
scikit-learn>=1.3
statsmodels>=0.14
# Gradient Boosting
xgboost>=2.0
lightgbm>=4.0
catboost>=1.2 # 處理 categorical 特徵
# Deep Learning
torch>=2.0 # 或 tensorflow>=2.13
# NLP
transformers>=4.30
spacy>=3.6
# 回測 / 交易
backtrader>=1.9
vectorbt>=0.25
ccxt>=4.0
MetaTrader5>=5.0 # 僅 Windows
# 研究工具
jupyterlab>=4.0
matplotlib>=3.7
seaborn>=0.12
plotly>=5.15安裝提示:用 pip install -r requirements.txt,唔好用 Anaconda(太多依賴衝突)。CUDA 用嘅就用官方 conda install pytorch cudatoolkit=11.8 -c pytorch。
12. 點樣決定 import 咩?
決策樹:
- 載入 + 清洗 → pandas
- 向量化計算 → NumPy
- Baseline ML → scikit-learn
- Tabular 強模型 → XGBoost / LightGBM
- 時序 / DL → PyTorch(或 TF + Keras)
- NLP → spaCy(快)/ Transformers(強)
- 回測 → backtrader(event-driven)/ vectorbt(快)
- 實盤 → 券商 SDK
- 探索 → Jupyter
- 生產 → VSCode + git + pytest
常見錯誤:用 PyTorch 跑 1 萬行 CSV。DL 喺小數據集(< 100K 行)上幾乎一定輸俾 XGBoost。先用 sklearn baseline,再用 XGBoost,最後先考慮 DL。
13. 結語
呢 10 個 library 唔係「必須全部精通」,但係「至少知道佢做咩、點解存在、邊個用」。量化交易嘅現實係:
- 80% 時間:pandas + NumPy
- 15% 時間:sklearn + XGBoost / LightGBM
- 4% 時間:PyTorch / TF
- 1% 時間:NLP、特殊 library
記住:library 係工具,唔係身份。識用越多 library 唔代表越強,識揀最啱嗰個先至係真功夫。
下一步可以做嘅事:
- 用
pip list --outdated升級現有環境 - 寫一個
requirements.txt鎖版本,避免「我電腦 work 喎」嘅悲劇 - 將 backtest 結果同 ML 信號用同一個 dict 結構傳遞,避免 type confusion
- 考慮用
poetry或uv取代pip,依賴管理更穩
本文封面圖速查表(10 大 library 定位):

⚠️ 免責聲明:本文章內容僅供學習參考,不構成任何投資建議。投資有風險,入市需謹慎。


