指標
支援 TA-Lib 與 pandas_ta 上百種技術指標,一行即可計算數千檔、長年期資料,可用於個股分析與機器學習。
安裝 TA-Lib
- 本地端:參考 官方安裝教學,支援 Windows、MacOS、Linux。
- Google Colab:
更多參數與函式請參考 TA-Lib 官方文件。
計算所有股票的 RSI 數值
使用 data.indicator() 計算 RSI(timeperiod=14):

前 14 天因資料不足可能為 NaN。
兩個時間序列的技術指標(KD值)
使用 data.indicator('STOCH') 計算 KD 值,會回傳兩個 DataFrame(K、D)。

利用 KD 值來選股
列出最近一日 K > D 的股票:
0015 False
0050 True
0051 False
0052 True
0053 True
...
9951 True
9955 False
9958 False
9960 True
9962 True
Name: 2021-07-13 00:00:00, Length: 2269, dtype: bool
計算 Pandas_ta 技術指標
pandas_ta 亦可計算多種技術指標;安裝與指標列表請見官方文件。
data.indicator() 使用,例如 supertrend:
若 TA-Lib 無對應函式,將改用 pandas_ta(可能較慢)。
自製指標(Pandas 運算)
不依賴 TA-Lib,直接用 Pandas 運算建立自訂指標:
價量指標
from finlab import data
close = data.get('price:收盤價')
volume = data.get('price:成交股數')
rev = data.get('monthly_revenue:當月營收')
# 動能指標:N 日報酬率
momentum_20 = close / close.shift(20) - 1
# 均線乖離率
ma60 = close.average(60)
bias = (close - ma60) / ma60
# 量價背離:股價創高但成交量萎縮
price_high = close == close.rolling(60).max()
volume_low = volume < volume.average(20)
divergence = price_high & volume_low
# 月營收成長率
rev_yoy = rev / rev.shift(12) - 1 # 年增率
rev_mom = rev / rev.shift(1) - 1 # 月增率
rev_3m = rev.average(3) / rev.average(12) - 1 # 3 月均值 vs 12 月均值
搭配 .cs 做因子標準化
pe = data.get('price_earning_ratio:本益比')
roe = data.get('fundamental_features:股東權益報酬率')
# 多因子合成:先標準化再等權加總
score = roe.cs.zscore() + (-pe).cs.zscore() # ROE 越高越好,PE 越低越好
# 選出綜合評分前 10%
position = score.cs.rank() > 0.9
搭配 .sector 做產業中性化
# 問題:直接用 ROE 選股會偏重高 ROE 產業(如半導體)
# 解法:產業內標準化,選出「在各自產業中表現突出」的股票
roe_neutral = roe.sector.zscore() # 產業中性化
rev_neutral = rev_yoy.sector.zscore() # 營收成長也做中性化
# 合成因子
score = roe_neutral + rev_neutral
position = score.cs.rank() > 0.8
# 也可以直接用產業內排名
position = roe.sector.rank() > 0.7 # 各產業 ROE 前 30%
搭配 .weight 建構權重
from finlab.backtest import sim
position = score.cs.rank() > 0.8
# 精細權重:反波動率 + 產業上限 + 換手率限制
weights = (
position
.weight.inverse_volatility(window=60)
.weight.cap_industry(max_weight=0.3)
.weight.limit_turnover(max_turnover=0.3)
)
report = sim(weights, resample='Q')
完整 accessor 文件
.cs、.sector、.weight 的所有方法詳見 finlab.dataframe 參考文件。