文章來源:TEJ專家觀點
TQuant Lab 存股族的福音?高股息 ETF 的回測表現
![高股息 ETF](http://i2.wp.com/www.tejwin.com/wp-content/uploads/Assorted-Coins-Close-up.jpg?resize=669%2C502&ssl=1)
內容目錄
本文重點摘要
- 文章難度:★☆☆☆☆
- 探討高股息 ETF 與加權報酬之間的關係,並計算獲取股息總和。
- 以 TQuant Lab 回測平台撰寫買入持有高股息 ETF 並回測風險與績效。
前言
什麼是高股息?
高股息顧名思義是指企業將較高的獲利以現金股利的方式配發給投資人,沒有具體的定義發多少股利才算高股息。高股息乍聽之下很誘人,但其實任何投資都有利有弊,在進場高股息 ETF 前,務必留意以下兩個思考點,評估最適合的投資方式:
- 留意企業獲利程度:高配息不等於高報酬,若企業沒賺錢或虧損,即使配發再高的股利也無意義。
- 企業未來的投資發展:企業獲利時可以將資金做更多的投資,提升更多企業價值;然而提供高配息給投資人,企業投資金額也會減少,企業的成長幅度可能有限。
高股息 ETF
本文將選擇市場前5大熱門高股息 ETF 作為投資標的:
- 0056 全名為「元大臺灣高股息基金」,追蹤指數為「臺灣高股息指數」。
- 00713 全名是「元大臺灣 ESG 永續ETF證券投資信託基金」,追蹤指數為「臺灣永續指數」。
- 00878 全名為「國泰台灣ESG永續高股息ETF基金」,追蹤指數是「MSCI臺灣ESG永續高股息精選30指數」,MSCI是指摩根士丹利資本國際公司的縮寫,是全球三大重要指數公司之一。
- 00919 全名是「群益台灣精選高息」,追蹤指數為「台灣精選高息指數」。
- 00929 全名是「復華台灣科技優息」,追蹤指數為「台灣指數公司特選台灣上市上櫃科技優惠指數」。
編輯環境與模組需求
本文使用 MacOS 並以 VS Code 作為編輯器。
資料導入
import os
import pandas as pd
tej_key = 'your key'
api_base = 'https://api.tej.com.tw'
os.environ['TEJAPI_KEY'] = tej_key
os.environ['TEJAPI_BASE'] = api_base
start = '2018-01-01'
end = '2023-12-31'
stock_list = ['0056', '00713', '00878', '00919', '00929', 'IR0001']
calendar_name = 'TEJ'
os.environ['mdate'] = start + ' ' + end
os.environ['ticker'] = ' '.join(stock_list)
!zipline ingest -b tquant
建立 Logbook 紀錄獲得股息資訊
from logbook import Logger, FileHandler, INFO
log_handler = FileHandler('log.txt',
format_string='[{record.time:%Y-%m-%d %H:%M:%S.%f}]: ' +
'{record.level_name}: {record.func_name}: {record.message}',
level=INFO)
log_handler.push_application()
log = Logger('Algorithm')
建立回測函式
建立 Pipeline 函式
Pipeline()
提供使用者快速處理多檔標的的量化指標與價量資料的功能,於本次案例我們用以取得五檔高股息 ETF 的資料,可避免處理還未上市之股票。
![高股息 ETF](http://i2.wp.com/www.tejwin.com/wp-content/uploads/pipeline-1.png?resize=669%2C515&ssl=1)
建立 initialize 函式
initialize()
函式用於定義交易開始前的每日交易環境,與此例中我們設置:
- 流動性滑價
- 交易手續費
- 買入持有加權股價報酬指數 ( IR0001 ) 的報酬作為基準
- 將上述計算的 Pipeline 導入交易流程中
def initialize(context):
set_slippage(slippage.VolumeShareSlippage(volume_limit = 0.025, price_impact = 0.1))
set_commission(commission.Custom_TW_Commission(min_trade_cost = 20, discount = 1.0, tax = 0.003))
set_benchmark(symbol('IR0001'))
attach_pipeline(make_pipeline(), 'mystrats')
建立 handle_data 函式
handle_data()
為構建交易策略的重要函式,會在回測開始後每天被呼叫,本文主要任務為設定下單,量為投資組合當前價值的 25%
def handle_data(context, data):
out_dir = pipeline_output('mystrats')
for asset in out_dir.index:
stock_position = context.portfolio.positions[asset].amount
if stock_position == 0:
order_percent(asset, 0.25)
執行交易策略
使用 run_algorithm()
執行上述設定的買入持有 ESG ETF,設置交易期間為 start_date ( 2018-01-01 ) 到 end_date ( 2023-12-31 ),所使用資料集為 tquant,初始資金為 1,000,000 元。其中輸出的 results
就是每日績效與交易的明細表。
results = run_algorithm(
start = pd.Timestamp(start, tz='UTC'),
end = pd.Timestamp(end, tz ='UTC'),
initialize=initialize,
handle_data=handle_data,
bundle='tquant',
data_frequency='daily',
capital_base=1e6,
trading_calendar=get_calendar(calendar_name))
![高股息 ETF](http://i0.wp.com/www.tejwin.com/wp-content/uploads/result-1.png?resize=669%2C379&ssl=1)
查看回測期間獲取股息資訊
log.txt 紀錄每次獲取股息的資訊:
- Equity:ETF 代號
- cash_dividend amount:現金每股股息
- pay_date:配息日
- div_owed:獲取股息(現金每股股息 * 持股數)
透過正規表達法抓出以上資訊,並計算其配息次數、天數與獲取股息總和。
![高股息 ETF](http://i2.wp.com/www.tejwin.com/wp-content/uploads/CleanShot-2024-05-28-at-16.36.20@2x.png?resize=669%2C161&ssl=1)
利用 Pyfolio 進行績效評估
returns, positions, transactions = pf.utils.extract_rets_pos_txn_from_zipline(results)
benchmark_rets = results.benchmark_return
# Creating a Full Tear Sheet
pf.create_full_tear_sheet(returns, positions = positions, transactions = transactions,
benchmark_rets = benchmark_rets,
round_trips=False)
![高股息 ETF](http://i0.wp.com/www.tejwin.com/wp-content/uploads/%E7%B7%9A%E4%B8%8A%E7%85%A7%E7%89%87%E5%90%88%E4%BD%B5-May-28-CleanShot-2.jpg?resize=669%2C342&ssl=1)
透過上圖可以發現大盤在這 5 年內有 2 倍的報酬,而買入持有高股息 ETF 的報酬是略遜一籌,但也是有將近 2 倍的累積報酬。另外我們也看到高股息 ETF 投組的波動情況與大盤幾乎一致,但是這波動幅度是相對大盤來說比較小的幅度,投資風險較低,從年化波動度與最大回撤則分別為 9.114% 和 -16.382% 可以看出來。而且從 Beta 值 0.43 ,表示投組對總體市場之變動不敏感。
比較高股息 ETF 與市值型 ETF 股息獲利表現
![高股息 ETF](http://i1.wp.com/www.tejwin.com/wp-content/uploads/%E7%B7%9A%E4%B8%8A%E7%85%A7%E7%89%87%E5%90%88%E4%BD%B5-May-28-Screenshot.jpg?resize=669%2C318&ssl=1)
從上圖可以看出,在回測期間一樣的情況下,高股息 ETF 所獲得的股息多於市值型 ETF。值得注意的是,市值型 ETF 有四檔持有超過 1000 天,高股息 ETF 只有三個,而在這樣的情況下高股息 ETF 的股息還是優於市值型 ETF,由此可見高股息 ETF 確實有實現它所標榜的特色。對於投資者來說,高股息 ETF 能夠在持有期間內提供更豐厚的股息回報。這不僅有助於提高投資組合的現金流,還能在市場波動較大時提供一定的穩定性。這反應高股息 ETF 通常包括了那些財務狀況穩健且能夠定期支付股息的公司。這些公司往往具有較強的盈利能力和現金流,這使得高股息 ETF 能夠在市場逆風時期保持較穩定的表現,對於存股族或是無暇盯盤、主動投資的投資人來說確實是相當合適的投資標的。
結論
本次實作我們選擇五檔高股息 ETF 當作投資標的,利用 TQuant Lab 進行買入持有標的的回測績效分析。該五檔高股息 ETF 的回測結果在累積報酬率和年化報酬率方面表現不錯,分別達到 94.373% 和 12.129%,年化波動度與最大回撤則分別為 9.114% 和 -16.382%。這表明高股息 ETF 取得了穩健的回報並控制了風險,從 Beta 值可以更明顯的看出相對於大盤的表現較為穩健,較少受到市場波動的影響。但是在 Sharpe Ratio 和 Alpha 可以看出高股息 ETF 較沒有超額報酬。股息方面,高股息 ETF 在提供穩定現金流和較高股息收益方面具有顯著優勢,特別是在持有期間相似的情況下。反映發放高股息的企業之所以能配發豐厚股息,大多是發展相對成熟的企業,未來發展空間較小,在長期表現上較缺乏成長力。
總體而言,高股息 ETF 適合對投資較為保守、不想承擔高度風險、也不追求短期創造高獲利的投資人;如果你想長期穩定的領到股息,持續累積小小的被動收入,那麼高股息 ETF 或許是個不錯的選擇。
溫馨提醒,本次策略與標的僅供參考,不代表任何商品或投資上的建議。之後也會持續使用 TEJ 資料庫及 TQuant Lab 來建構各式指標,並回測指標績效,所以歡迎對各種交易回測有興趣的讀者,選購 TQuant Lab 的相關方案,用高品質的資料庫,建構出適合自己的交易策略。