TQuant Lab ESG ETF 該買嗎?ESG ETF 的回測表現

本文重點摘要

  • 文章難度:★☆☆☆☆
  • 探討 ESG ETF 與加權報酬之間的關係。
  • 以 TQuant Lab 回測平台撰寫買入持有 ESG ETF 並回測風險與績效。

前言

ESG 是什麼?

ESG是聯合國全球契約在2004年提出的一個概念,ESG中文分別是「環境保護」、「社會責任」以及「公司治理」,而這3大支柱是作為評估企業永續經營的重要指標,以下就針對ESG意思分別做解釋:

E-環境保護(Environmental):
代表企業需重視在經營和發展過程對環境永續議題的影響與責任,包含減少碳排放、氣候變遷、節約能源、污染管理等,用於衡量企業在發展時是否有兼顧環境的維護。

S-社會責任(Social):
指企業在經營和發展過程中須重視社會面向的相關議題,並且善盡對社會的責任。包括企業如何管理與員工、消費者或員工權益、企業工作環境、支持慈善公益、勞工人權、社會參與等,推動企業建立一個良好的職場環境,落實企業社會責任。

G-公司治理(Governance):
指公司管理和運營過程中各事項的透明度、責任、效率和公正度。包括公司管理高層、主管薪酬、股東權利、資訊透明、風險管理、董事會治理、供應鏈管理等議題,用來評估一間企業的管理者和公司的營運。
將這3個ESG概念結合後,便可以用來評估一間企業如何能在營利的同時為永續發展盡一份心力。

ESG 重要性

ESG 是評估企業永續發展的重要指標,也是投資人關注的重要議題之一。在金融危機爆發時,因為長期投資社會資產,ESG 評分愈高的公司受到金融風暴波及的程度愈低,使得 ESG 又更加受到重視。雖然企業經營須要重視財務數據,但是若為了營收成果而做出傷害環境或是侵害消費者權益的行為,必定會影響公司的名譽。而且隨著氣候變遷問題加劇,環境風險是全球都必須重視的議題,因此無論是投資人還是社會團體,都開始監督企業或政府對環境風險的因應措施。

也就是說,ESG 風險已成為影響企業財務和聲譽的關鍵因素之一,例如環境和社會方面違規行為導致公司遭到罰款或面臨訴訟等法律風險,或因營運方式存在道德瑕疪爭議,遭媒體報導而導致的品牌聲譽損失。因此企業落實 ESG 好處有以下5點:

  • 降低風險
  • 提高長期價值
  • 滿足投資者的期望
  • 良好的聲譽
  • 持續性發展

ESG ETF

本文將選擇市場前4大熱門 ESG ETF 作為投資標的:

  1. 00692 全名為「富邦臺灣公司治理100基金」,追蹤指數為「臺灣公司治理100指數」。
  2. 00850 全名是「元大臺灣 ESG 永續ETF證券投資信託基金」,追蹤指數為「臺灣永續指數」。
  3. 00878 全名為「國泰台灣ESG永續高股息ETF基金」,追蹤指數是「MSCI臺灣ESG永續高股息精選30指數」,MSCI是指摩根士丹利資本國際公司的縮寫,是全球三大重要指數公司之一。
  4. 00888 全名是「永豐台灣 ESG 永續優質 ETF 證券投資信託基金」,追蹤指數為「富時台灣 ESG 優質指數」,「富時台灣 ESG 優質指數」是從「富時全球股票指數」而來。

編輯環境與模組需求

本文使用 Windows 11 並以 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 = ['00692', '00850', '00878', '00888', 'IR0001']
calendar_name = 'TEJ'

os.environ['mdate'] = start + ' ' + end
os.environ['ticker'] = ' '.join(stock_list)

!zipline ingest -b tquant

建立回測函式

建立 Pipeline 函式

Pipeline() 提供使用者快速處理多檔標的的量化指標與價量資料的功能,於本次案例我們用以取得四檔 ESG ETF 的資料,可避免處理還未上市之股票。

bundle = bundles.load('tquant')
benchmark_asset = bundle.asset_finder.lookup_symbol('IR0001',as_of_date = None)

def make_pipeline():

    return Pipeline(
        columns = {
            "curr_price": TWEquityPricing.close.latest,
    },
        screen = ~StaticAssets([benchmark_asset])
    )
my_pipeline = run_pipeline(make_pipeline(), pd.Timestamp(start, tz='UTC'), pd.Timestamp(end, tz='UTC'))
ESG ETF
Pipeline 計算結果展示

建立 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('2018-01-01', tz='UTC'),
    end = pd.Timestamp('2023-12-31', tz ='UTC'),
    initialize=initialize,
    handle_data=handle_data,
    bundle='tquant',
    data_frequency='daily',
    capital_base=1e7,
    trading_calendar=get_calendar(calendar_name))
ESG ETF
交易明細表

利用 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)
ESG ETF
回測表現與大盤比較圖

透過上圖可以發現大盤在這 5 年內有 2 倍的報酬,而買入持有 ESG ETF 的報酬是略遜一籌,但也是有超過 1.6 倍的累積報酬。另外我們也看到 ESG ETF 投組的波動情況與大盤幾乎一致,但是年化波動度與最大回撤則分別為 11.57% 和 -27.08%,這種波動幅度是相對大盤來說比較小的幅度,而且從 Beta 值 < 1 ,表示投組對總體市場之變動不敏感,種種指標顯示 ESG ETF 是在較低風險下穩定的在獲利,反應 ESG 概念中三大方面:

  • 長期價值觀念: ESG 公司通常專注於長期價值創造,而不是短期利益追求。
  • 風險管理: ESG 公司通常更加重視風險管理,包括氣候變化風險、社會責任風險、治理風險等。這些風險管理措施可以減少公司面臨的未知風險,降低股票的波動性。
  • 穩定的盈利模式: 許多 ESG 公司採取可持續發展的經營模式,例如減少環境影響、建立穩健的供應鏈等等。這些實踐可以帶來穩定的盈利和現金流。

結論

本次實作我們選擇四檔 ESG ETF 當作投資標的,利用 TQuant Lab 進行買入持有標的的回測績效分析。該四檔 ESG ETF 的回測結果在累積報酬率和年化報酬率方面表現不錯,分別達到 67.95% 和 9.34%,年化波動度與最大回撤則分別為 11.57% 和 -27.08%。這表明 ESG ETF 取得了穩健的回報並控制了風險,從 Beta 值可以更明顯的看出相對於大盤的表現較為穩健,較少受到市場波動的影響。但是在 Sharpe Ratio 和 Alpha 可以看出 ESG ETF 較沒有超額報酬,反映 ESG 企業產業重視公司各項指標穩定性的特徵。

總體而言,這些因素使得 ESG ETF 表現穩健、波動較小,投資 ESG ETF 更能獲取長期穩健增長而非短期波段報酬。

溫馨提醒,本次策略與標的僅供參考,不代表任何商品或投資上的建議。之後也會持續使用 TEJ 資料庫及 TQuant Lab 來建構各式指標,並回測指標績效,所以歡迎對各種交易回測有興趣的讀者,選購 TQuant Lab 的相關方案,用高品質的資料庫,建構出適合自己的交易策略。

【TQuant Lab回測系統】解決你的量化金融痛點

全方位提供交易回測所需工具

原始碼

延伸閱讀

相關連結

想看更多內容?快來【登入會員】,享受更多閱讀文章的權限喔!
返回總覽頁