10 個 Python AI 庫完整指南:量化交易工作流嘅每一個環節

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 嘅實戰場景。附典型安裝組合同決策樹。

LifeFinAI18/06/2026 下午10:4522 分鐘

點解要寫呢篇文?

踏入量化交易,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 — 數值運算嘅根

NumPy logo — ndarray 嘅 4 個小方塊代表向量化運算
NumPy logo — ndarray 嘅 4 個小方塊代表向量化運算

用途: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 — 金融時序嘅標準容器

Pandas logo — DataFrame 係金融時序嘅事實標準
Pandas logo — DataFrame 係金融時序嘅事實標準

用途:表格清洗、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 嘅 pyarrow backend 處理大數據快 5-10 倍。500MB+ 嘅時序數據,記得 dtype_backend='pyarrow'

4. scikit-learn — 傳統 ML 嘅入場券

scikit-learn logo — 經典 ML 嘅事實標準
scikit-learn logo — 經典 ML 嘅事實標準

用途:train/test split、StandardScaler、linear/ridge/lasso/elasticnet、RandomForest、SVM、PCA、KMeans、cross_val_score、GridSearchCV、Pipeline。

喺量化交易入面點用

  • 特徵標準化(StandardScaler
  • 交叉驗證(TimeSeriesSplit唔好用普通 KFold
  • 簡單嘅分類 / 回歸 baseline
  • 特徵選擇(SelectKBestLasso
  • 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 — 生產部署嘅首選

TensorFlow logo — 適合大規模 DL 生產部署
TensorFlow logo — 適合大規模 DL 生產部署

用途: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 — 研究同快速實驗

PyTorch logo — dynamic graph 適合研究
PyTorch logo — dynamic graph 適合研究

用途: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

Jupyter logo — 探索性數據分析嘅必備工具
Jupyter logo — 探索性數據分析嘅必備工具

用途:互動式 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 數據嘅殺手鐧

XGBoost logo — Kaggle 嘅霸者,量化一樣實用
XGBoost logo — Kaggle 嘅霸者,量化一樣實用

用途: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 — 大數據 + 低延遲

LightGBM logo — 微軟出品,量化同 XGBoost 並列首選
LightGBM logo — 微軟出品,量化同 XGBoost 並列首選

用途:同 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用途量化用法
statsmodelsARIMA / GARCH / VAR經典時序模型、cointegration test
HuggingFace TransformersPretrained LLM / NLP財經新聞 sentiment、新聞分類
spaCy快速 NLP pipeline命名實體識別(公司、人物)、文本預處理
backtrader回測框架多策略、多時間框架嘅 event-driven 回測
vectorbt高速回測(向量化)大規模參數 sweep、組合回測
ccxt加密貨幣統一 API100+ 交易所統一接口
MetaTrader5MT5 Python SDK外匯 / CFD 實盤下單
TA-Lib100+ 技術指標 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 咩?

決策樹

  1. 載入 + 清洗 → pandas
  2. 向量化計算 → NumPy
  3. Baseline ML → scikit-learn
  4. Tabular 強模型 → XGBoost / LightGBM
  5. 時序 / DL → PyTorch(或 TF + Keras)
  6. NLP → spaCy(快)/ Transformers(強)
  7. 回測 → backtrader(event-driven)/ vectorbt(快)
  8. 實盤 → 券商 SDK
  9. 探索 → Jupyter
  10. 生產 → 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
  • 考慮用 poetryuv 取代 pip,依賴管理更穩
本文封面圖速查表(10 大 library 定位):
10 大 Python AI 庫速查表 — 用例、適用場景、技能門檻一覽
10 大 Python AI 庫速查表 — 用例、適用場景、技能門檻一覽

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