選股回測系統豆知識 (1)|報酬率計算

  • Post author:
  • Reading time:3 mins read

新來的朋友可能會對 FinLab 量化平台 的回測報酬率計算不了解,此文會針對幾個常見疑惑點做解析,讓大家了解目前回測系統的規則與限制,更能上手平台的使用。

回測報價

目前支援的資料為「日週期」級別「盤後」資料,尚不支援「當沖」、「隔日沖」等極短線操作,選擇回測之還原股價以 close (收盤價) 或 open (開盤價) 計算,還原股價選用可用回測程式 sim 中的參數 trade_at_price 來設定。
還原股價預設以 close 來計算進出場價格,目前不支援開收盤價「混用」,故無法回測今日尾盤買近,隔日開盤賣出的情況。若使用開盤價為序列,須留意目前儀表板上的報酬率數據會以「近日開盤價」來計算,而非收盤價,未來會規劃無論用開盤價還是收盤價進出,都使用「近日收盤價」顯示網頁上的報酬率數據,以避免與一般概念混淆。

還原股價

回測的價格數據為還原股價,將「除權息」、「增減資」、「票面分割」納入考量,你可能會疑惑 FinLab 資料庫的還原股將和外面不同?
那是因為 FinLab 資料庫是向後還原,這邊的「前後」是指時間上。FinLab 資料庫使用的方式,歷史資料不會被改動,適合用來回測。「一般資料」假如是指 yfinance 那個資料是有問題的,另外任何「向前還原」的計算方式,回測皆有機率用到未來資訊,所以不會採用喔。

報酬率計算

訊號產生日與實際進出場日

個別策略的統計清單儀表板有當前統計與近期統計資料,「當前統計」是模擬當前持股的狀況,「近期統計」則是模擬近期換股的動作。
清單新增的日期為盤後進場訊號產生日期,如下例圖中 00632R 在「2022-09-19」產生進場訊號,由於是盤後訊號,所以「實際進場日」會是下一個交易日「2022-09-20」,預設以「2022-09-20」的收盤價為持有成本價格。
清單移除的日期為盤後出場訊號產生日期,如下例圖中 00632R 在「2022-11-15」產生出場訊號,由於是盤後訊號,所以「實際出場日」會是下一個交易日「2022-11-16」,預設以「2022-11-16」的收盤價為出場結算價格。

截圖 2022 11 24 上午9.50.33
策略回測近期統計示意圖

交易成本設定與計算

回測預設皆包含交易成本。回測程式 sim 中的參數 fee_ratio 與 tax_ratio 可用來設定手續費率與交易稅率。
手續費率預設為台灣無打折費率 0.001425。可視個人使用的券商優惠調整費率。
交易稅率預設為台灣普通股一般稅率 0.003。若交易策略的標的皆為ETF,記得設成 0.001。

策略權益曲線

回測策略權益曲線
策略回測權益曲線示意圖

上圖藍線為策略權益曲線,報酬率包含「已實現與未實現損益」,並使用「複利」計算,回測模擬獲利部位全部持續投入。
如果想得知當前未實現損益,可以在當前統計旁的數字顯示得知,如下圖範例得知當前未實現損益為「+0.3%」,當前未實現損益由標的漲跌與權重相乘計算加總而來。

回測當前清單未實現損益
當前清單未實現損益示意圖

小結

以上是針對 FinLab 量化平台 報酬率回測規則與當前限制做解析,未來會再增加開收盤價混用、分k經的回測,讓系統支援更加全面。如果你還有任何不了解的地方或是優化的建議,歡迎到 Discord 與我們討論。
若你想要了解平台上更多應用範例,可以參考此連結裡的應用介紹,或考慮進階的付費功能

Ben

Python 軟體工程師與量化策略研究員。 鑽研資料工程、網頁後端、資料視覺化、量化交易策略開發。 投資主力在台股市場,量化策略為主、質化分析為輔,追求人機攜做最佳化。逐步將觸角延伸到總經、美股、加密貨幣,朝更全方位的交易人邁進。