【實戰應用】模組化回測系統

使用TEJ API架構自己的回測系統

TEJ 台灣經濟新報
TEJ-API 金融資料分析
10 min readJul 27, 2021

--

Photo Creds: Unsplash

前言

股票回測是目前相較之下較具科學精神的方法,雖然說過去歷史資料並不能代表未來,但回測結果至少讓我們可以檢驗自己的策略於過往的績效表現如何,藉以提供此策略或許有效的證據。而如果每次要嘗試新的策略就得把相同的架構再重寫一遍,相當費時且修改上會相當麻煩,於是今天我們嘗試把回測固定的流程模組化,這樣未來只需要專注在思考新策略即可!

編輯環境及模組需求

本文章使用 Mac OS 並以 Jupyter Notebook 作為編輯器

Note: tejapi 安裝以命令提示字元 (Windows)/終端機 (Mac),輸入 pip install tejapi

本文重點概要

  • 架構的事前規劃
  • 系統模組化

架構系統

Step 1. 思考回測時會用到哪些儲存變數

  • 欲投資之股票池
  • 產生原始資料
  • 訂定交易策略
  • 產生交易訊號表
  • 執行回測
  • 儲存賣出金額
  • 儲存買入成本

構想大致流程所需的欄位

Step 2. 點首先設定一個類別classbacktest

Step 3. 以下的def都是在這class底下創建

當然資料庫也要放在初始值裡面,證券名稱是我們要找的target_list

Step 4. 策略制定,這裡我們挑選兩個常見策略,以下針對重點介紹,完整程式碼請見此連結

  • 價量策略

突破近20日最高價和最高量進行買進,突破近10日最低價和最低量則賣出

股票池裡每一檔股票都要產生交易訊號

計算近10、20天最高最低價量

產生交易訊號

  • 買入
  • 賣出
  • 最後一天平倉
  • 持有策略

第一天持有至最後一天賣出

股票池裡每一檔股票都要產生交易訊號

第一天買入,最後一天賣出

Step 5. 執行回測計算

計算獲利

計算成本

Step 6. 計算最終報酬率

檢視大盤績效

策略的優劣通常和大盤來做比較,如果忙了老半天獲利輸給單純持有大盤,則代表策略或許有進步的空間

Step 1. 設定marketbacktest類別,這裡我們使用調整後指數 Y9997

Step 2. 選擇策略

Step 2. 進行回測

Step 3. 檢視報酬率

自訂投資組合

這裡我們想試試 MSCI 做為自己的投資組合,MSCI 指數是指摩根士丹利資本國際公司所編製的股價股數,也稱摩根指數、大摩指數,我們可以查到2020 MSCI 持有的股票名單,這裡使用 TWN/AIDXS交易資料庫來搜尋指數成分股。

篩選出成分股,並把獨有的證券代號提出轉為list

最後把中文刪除只留下代碼

由於模組化的效果,我們不用再寫一遍回測流程,只需要輕鬆的改變target_list就可以馬上得到我們要的結果

Step 1. 設定mscibacktest類別,並選擇MSCI_list股票池

Step 2. 選擇策略

Step 3. 進行回測

Step 4. 檢視報酬率

結論

2020台股屬於大多頭,事後來看是這段期間的持有的策略報酬率較好,但時間只有一年也無法說明持有策略總是優於價量策略。本文章主要介紹如何架構一套簡易回測系統,讀者可在策略上自行調整,例如可以試著將價量的參數1020 天設為可調整的項目,用以比較日期變化對報酬率的影響。

量化分析是未來投資的趨勢,世界知名的避險基金都有採用此方法,將資料萃取成可用的參數作為策略制定,挖掘超額報酬,若讀者有興趣可以前往我們的官方網站,裡面有提供更多財務、交易等財金資料,來幫助您製作更好的交易策略!

完整程式碼

延伸閱讀

相關連結

給我們鼓勵
之後會持續分享更多財金資料庫的應用
如果你的覺得今天的文章不錯,可以幫我們在下面的 掌聲 icon 點 1下
如果覺得超讚,可以按住 掌聲 icon 不放直到 50 下
有任何想法歡迎點選 留言 icon和我們討論

--

--

TEJ 台灣經濟新報
TEJ-API 金融資料分析

TEJ 為台灣本土第一大財經資訊公司,成立於 1990 年,提供金融市場基本分析所需資訊,以及信用風險、法遵科技、資產評價、量化分析及 ESG 等解決方案及顧問服務。鑒於財務金融領域日趨多元與複雜,TEJ 結合實務與學術界的精英人才,致力於開發機器學習、人工智慧 AI 及自然語言處理 NLP 等新技術,持續提供創新服務