在上一個文章中,我們利用 finlab_crypto 模組成功製作雙均線買賣策略,這一次,我們要使用在 Github 上獲得超過一千四百顆星的開源模組「vectorbt」來針對這個策略進行回測。
a. 什麼是回測
在量化投資領域,我們將製作好的策略放入過往的行情波動中執行,並根據其成果來優化策略,然而這一切的前提是,我們假定歷史等於未來。
b. vectorbt
首先先 Google「vectorbt」並選取箭頭指向位置:
進入官網後,可以使用瀏覽器的頁面尋找功能輸入「Document」並點選箭頭指向位置:
進入官網介紹後,在左方的搜尋引擎裡面搜尋「portfolio」並點選箭頭指向位置:
之後,在左邊寫著「index」的地方不斷往下滑到箭頭指向位置,這裡有「vectorbt」的各種功能使用介紹,包含顯示每年的年化報酬率、最大風險等等,有興趣的話歡迎到裡面自行探索。
而在本章中,我們會使用裡面較為常用的功能「總體的報酬率」跟「每一次交易的詳情」來進行回測。
c. 開始回測
首先導入「vectorbt」:
import vectorbt as vbt
然後製作回測數據:
portfolio = vbt.Portfolio.from_signals(close, entries, exits, freq = '4h')
上例程式碼的思考模式:用 vbt 建構一個 portfolio,從 signals 獲取訊號,在括號裡面輸入收盤價格、進場點、出場點、交易頻率,並將製作好的數據傳到「portfolio」這個變數裡面。
製作好回測數據以後,利用 vectorbt 裡的一個方法「cumulative_returns()」來顯示總體報酬率,並以視覺化圖表呈現:
再來,我們使用下列程式碼,檢視每次交易的詳細情況:
portfolio.positions().records
如下圖:
於是,我們已完成一次最簡單的回測技巧。
今天先到這邊。
下一節,我們來將策略進行打包。