量化交易基礎概念與環境安裝

什麼是量化交易?

量化交易 (Quantitative Trading / Algorithmic Trading) 是指用數學模型和電腦程式來做出交易決策,而不是依靠人類的直覺或情緒。

人類交易 vs 量化交易

| 人類交易 | 量化交易 | |---------|---------| | 憑感覺判斷 | 根據歷史資料統計 | | 會被情緒影響(恐慌/貪婪) | 嚴格執行策略,沒有情緒 | | 一次只能盯少量股票 | 同時分析數百檔股票 | | 需要長時間盯盤 | 24 小時自動執行 | | 決策不一致 | 策略完全可複製 |

量化交易的標準流程

1. 形成假設(策略想法)
    ↓
2. 收集歷史資料
    ↓
3. 實作策略(寫程式)
    ↓
4. 回測(用歷史資料測試)
    ↓
5. 評估績效(報酬率、風險指標)
    ↓
6. 最佳化(調整參數)
    ↓
7. 紙上交易(模擬交易)
    ↓
8. 實單交易(投入真實資金)

本課程將涵蓋步驟 1-6。在你用真錢交易之前,強烈建議先做步驟 7(紙上交易)至少 3 個月。

三個最重要的量化交易概念

1. 移動平均線 (Moving Average)

移動平均線是最基礎也最實用的技術指標。它平滑了價格的短期波動,讓你可以看清長期趨勢。

  • MA5:過去 5 天的平均收盤價(短天期)
  • MA20:過去 20 天的平均收盤價(中天期)
  • MA60:過去 60 天的平均收盤價(長天期)

黃金交叉 vs 死亡交叉

  • 黃金交叉:MA5 向上突破 MA20 → 看漲信號 📈
  • 死亡交叉:MA5 向下跌破 MA20 → 看跌信號 📉

2. 報酬率計算

單期報酬率: $$R_t = \frac{P_t - P_{t-1}}{P_{t-1}}$$

累積報酬率: $$\text{Cumulative Return} = \prod_{t=1}^{T}(1 + R_t) - 1$$

年化報酬率: $$\text{Annual Return} = (1 + \text{Total Return})^{\frac{252}{T}} - 1$$ (252 是一年交易日的數量)

3. 風險指標

夏普比率 (Sharpe Ratio):每承擔一單位風險可以獲得多少超額報酬 $$\text{Sharpe} = \frac{R_p - R_f}{\sigma_p}$$

  • 大於 1:不錯
  • 大於 2:很好
  • 大於 3:極好

最大回撤 (Max Drawdown):從歷史高點跌到最低點的幅度 $$\text{Max DD} = \min\left(\frac{\text{Valley} - \text{Peak}}{\text{Peak}}\right)$$

  • 小於 20%:風險可控
  • 20-40%:風險較高
  • 大於 40%:非常高風險

安裝量化交易環境

# 建立專屬環境
conda create -n quant-trading python=3.11
conda activate quant-trading

# 安裝必要套件
pip install pandas numpy matplotlib seaborn yfinance ta prophet plotly

測試安裝

import pandas as pd
import yfinance as yf
import ta

print("所有套件載入成功!")

第一次抓取股價資料

import yfinance as yf
import pandas as pd

# 下載台積電股票資料
ticker = "2330.TW"
data = yf.download(ticker, start="2023-01-01", end="2024-12-31")

# 顯示前 5 筆
print(data.head())

# 資料集的欄位
print(data.columns)
# ['Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']

yFinance 常用功能

# 下載多檔股票
tickers = ["2330.TW", "2317.TW", "TSLA", "AAPL"]
data = yf.download(tickers, start="2024-01-01", end="2024-12-31")

# 只取收盤價
close_prices = data['Close']
print(close_prices.head())

# 取得股票基本資訊
stock = yf.Ticker("2330.TW")
info = stock.info
print(f"公司名稱: {info['longName']}")
print(f"產業: {info['sector']}")
print(f"本益比: {info.get('trailingPE', 'N/A')}")

本日總結

在本章中,你學到了:

  1. 量化交易的本質:用程式和數據做出交易決策
  2. 三大核心概念:移動平均線、報酬率計算、風險指標
  3. 環境安裝:Python 量化交易套件安裝
  4. 第一次抓取股價資料:使用 yFinance 取得台美股歷史資料

下一章,我們將學習如何計算技術指標!

會員專屬免費教學

本章節為註冊會員專屬的免費開放內容!請先登入或註冊會員,即可立即解鎖閱讀。

立即登入 / 註冊