
金融 Python 入門:庫、資料與你的第一個指令碼
量化金融中最流行的語言——從這裡開始
Python 是一種工作流語言,而不只是一套語法
量化金融團隊很少僅僅因為某種語言抽象上優雅就選它。他們選的是能讓研究員每週不必把一切重寫一遍、就從一份雜亂的 CSV 走到一個經過驗證的訊號的語言。Python 之所以勝出,是因為它可讀、可指令碼化,並且處於一個龐大的數值生態系統的中心:資料攝取、清洗、特徵工程、視覺化,以及(在謹慎處理後)生產服務。
幾乎每個交易臺都會遇到三個約束:
- 出第一張圖的時間——你能在幾分鐘內載入一段歷史資料並看到其中的異常值嗎?
- 互操作性——你能在同一個程序裡呼叫交易所 API、資料庫和機器學習庫嗎?
- 可復現性——別人能重建你的環境並得到完全相同的數字嗎?
論每個 CPU 週期的速度,Python 並不是最快的語言。但它往往是從問題到證據最快的路徑——而這才是真正的瓶頸所在。
可以重建的環境
每個正經專案都要從一個隔離的環境開始,這樣 pip install 的各種實驗才不會汙染無關的工作。經典做法是 python -m venv .venv,啟用它,然後在 requirements.txt 裡、或用 Poetry、pip-tools 生成的鎖檔案裡固定依賴版本。
對金融場景來說,凡是模擬結果敏感的地方還要固定隨機種子,並在結果旁邊記錄資料快照(哪怕只是輸入檔案的一個雜湊)。當風控委員會追問到底改了什麼時,可復現性勝過那些一次性的炫技圖表。
python -m venv .venv
source .venv/bin/activate
pip install pandas numpy matplotlib值得爛熟於心的庫
NumPy 給你連續記憶體的陣列和快速的逐元素運算。pandas 在其之上疊加了帶標籤的表格、時間索引、合併(merge)和分組(groupby)。Matplotlib(或 Plotly)把序列變成你能在會議上拿來論證的圖表。
在加密貨幣連線方面,ccxt 把許多交易所 API 統一到一個介面之下——但仍要逐家檢視各交易場所的精度和速率限制。對傳統股票來說,訓練資料常用廠商 SDK 或 Yahoo 風格的載入器,而不是用於對延遲敏感的實盤交易。
一個最小化的收益率與波動率示例
大多數工作流都可以歸結為:載入價格 → 計算收益率 → 推導滾動統計量。下面是一個使用每日收盤價的緊湊寫法:
import pandas as pd
import numpy as np
df = pd.read_csv("prices.csv", parse_dates=["date"]).set_index("date")
df["ret"] = df["close"].pct_change()
df["vol_20d"] = df["ret"].rolling(20).std() * np.sqrt(252)
把每日標準差乘以 √252 得到年化波動率,只有在你對日曆日的處理保持一致時才成立——日內 K 線需要不同的縮放方式。在你交付的任何數字旁邊,都要寫明你用的 K 線週期。
從回測到 API 呼叫
研究程式碼和生產程式碼會分道揚鑣:前者能容忍慢迴圈;後者需要超時、帶退避的重試、冪等的訂單 ID 以及結構化日誌。如果你要在 Hyperliquid 上對接 GaiaEx 這類交易場所做自動化,就要把錢包私鑰、nonce 紀律和鏈上最終性當作系統的一部分——而不是事後才硬塞進 notebook 的東西。
Python 仍然是一個很好的編排層:呼叫交易 API,把成交推入 pandas 做分析,並在風險限額被觸發時在 Slack 上告警。把關鍵路徑保持得足夠簡單,這樣當市場跳空時你還能理清它的邏輯。