Michael Hwang
2 min readMay 26, 2019

--

Note: Python package - bt

寫了三篇才鴿,算是不錯了...?

這篇是前陣子為了準備面試所使用的Python package,因為蠻方便的這邊紀錄一下。這只是個簡單筆記,由於text的example寫得很好,更建議直接看那邊。

bt 是一個交易回測的package,基於ffn library。老樣子,請用pip安裝。
https://pmorissette.github.io/bt/index.html

首先,先準備股票/標的資料。
可以用 bt.get("symbol", start=”yyyy-mm-dd”) 從yahoo下載DataFrame格式的資料(Index = Date, Column = symbol)。

接著,準備"策略"。策略便是這個package的核心,各種條件和訊號都是在這裡設置。
EX:
strategy = bt.Strategy(“name”, [bt.algos.RunMonthly(), bt.algos.SelectAll(), bt.algos.WeighEqually(), bt.algos.Rebalance()])
這個策略代表"全部股票每月運算,並且已全均等的方式的進行再平衡。

策略裡面便包含了許多公式,對應實際建立策略時的各種條件,像是執行平率,篩選對象,標的權重,再平衡等。實際上策略可被理解為一組 和資料同架構的Bloolean的DateFrame. (同架構意味著時序和標的相同,或說index和column相同)

最後,把資料和策略組裝到Backtest功能然後運行即可。
test = bt.Backtest(strategy, data)
res = bt.run(test) # 可以同時跑數個回測
res.plot() # 回測圖表
res.dsiplay() #回測績效細項
res.stats #具體數據儲存於此表格

目前回測功能並沒放入參數最佳化,所以要的話可能得自己跑。

--

--