跳轉到

FinLab 快速上手:3 分鐘完成第一個回測

最快的路徑是先選擇執行環境,下載收盤價資料,寫出第一個選股條件,再用 backtest.sim() 回測。若你只想用 AI 協助寫策略,可以直接從 studio.finlab.tw 開始。

使用情境 建議入口 接下來
不想安裝,只想立刻測策略 studio.finlab.tw 用自然語言描述策略
第一次學 FinLab Google Colab 執行本頁範例
已有 Python 環境 本機 pip install finlab 下載資料並回測
套件相依較複雜 Docker 開啟 JupyterLab

延伸閱讀:資料下載教學歷史回測常見問題

安裝

支援 Windows、macOS、Linux 與 Colab;也可用 Docker。

前往 studio.finlab.tw 直接與 AI 對話撰寫策略,無需安裝任何套件。

# Colab 新增 Notebook 後執行
!pip install finlab
pip install finlab

相容性提示

若遇到套件相依問題,建議改用 Docker 版本。

docker pull finlab/jupyter-finlab
docker run -p 8888:8888 finlab/jupyter-finlab
# 依終端顯示的 URL 開啟 JupyterLab

下載資料

輸入以下程式碼,即可下載資料。可以查詢有哪些歷史資料可以下載。

from finlab import data
close = data.get('price:收盤價')
close.tail()
from finlab import data
data.set_market('us')
close = data.get('price:adj_close')
close.tail()
date 0015 0050 0051 0052 0053
2007-04-23 9.54 57.85 32.83 38.4 nan
2007-04-24 9.54 58.1 32.99 38.65 nan
2007-04-25 9.52 57.6 32.8 38.59 nan
2007-04-26 9.59 57.7 32.8 38.6 nan
2007-04-27 9.55 57.5 32.72 38.4 nan

撰寫策略

可以用非常簡單的 Pandas 語法來撰寫策略邏輯,以創新高的策略來說,可以用以下的寫法:

from finlab import data

close = data.get('price:收盤價')

# 創三百個交易日新高
position = close >= close.rolling(300).max()
position
from finlab import data

data.set_market('us')
close = data.get('price:adj_close')
close = close[close.index.dayofweek < 5]  # 移除週末

# 創三百個交易日新高
position = close >= close.rolling(300).max()
position
date 0015 0050 0051 0052 0053
2007-04-23 00:00:00 False False False False False
2007-04-24 00:00:00 False False False False False
2007-04-25 00:00:00 False False False False False
2007-04-26 00:00:00 False False False True False
2007-04-27 00:00:00 False False False False False

假設我們希望每個月底,搜尋上表中數值為 True 的股票並且買入持有一個月,可以用以下的語法:

回測績效

from finlab import backtest

report = backtest.sim(position, resample='M')
report.display()