Table of Contents
ESG是聯合國全球契約在2004年提出的一個概念,ESG中文分別是「環境保護」、「社會責任」以及「公司治理」,而這3大支柱是作為評估企業永續經營的重要指標,以下就針對ESG意思分別做解釋:
E-環境保護(Environmental):
代表企業需重視在經營和發展過程對環境永續議題的影響與責任,包含減少碳排放、氣候變遷、節約能源、污染管理等,用於衡量企業在發展時是否有兼顧環境的維護。
S-社會責任(Social):
指企業在經營和發展過程中須重視社會面向的相關議題,並且善盡對社會的責任。包括企業如何管理與員工、消費者或員工權益、企業工作環境、支持慈善公益、勞工人權、社會參與等,推動企業建立一個良好的職場環境,落實企業社會責任。
G-公司治理(Governance):
指公司管理和運營過程中各事項的透明度、責任、效率和公正度。包括公司管理高層、主管薪酬、股東權利、資訊透明、風險管理、董事會治理、供應鏈管理等議題,用來評估一間企業的管理者和公司的營運。
將這3個ESG概念結合後,便可以用來評估一間企業如何能在營利的同時為永續發展盡一份心力。
ESG 是評估企業永續發展的重要指標,也是投資人關注的重要議題之一。在金融危機爆發時,因為長期投資社會資產,ESG 評分愈高的公司受到金融風暴波及的程度愈低,使得 ESG 又更加受到重視。雖然企業經營須要重視財務數據,但是若為了營收成果而做出傷害環境或是侵害消費者權益的行為,必定會影響公司的名譽。而且隨著氣候變遷問題加劇,環境風險是全球都必須重視的議題,因此無論是投資人還是社會團體,都開始監督企業或政府對環境風險的因應措施。
也就是說,ESG 風險已成為影響企業財務和聲譽的關鍵因素之一,例如環境和社會方面違規行為導致公司遭到罰款或面臨訴訟等法律風險,或因營運方式存在道德瑕疪爭議,遭媒體報導而導致的品牌聲譽損失。因此企業落實 ESG 好處有以下5點:
本文將選擇市場前4大熱門 ESG ETF 作為投資標的:
本文使用 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()
提供使用者快速處理多檔標的的量化指標與價量資料的功能,於本次案例我們用以取得四檔 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'))
initialize()
函式用於定義交易開始前的每日交易環境,與此例中我們設置:
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()
為構建交易策略的重要函式,會在回測開始後每天被呼叫,本文主要任務為設定下單,量為投資組合當前價值的 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))
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)
透過上圖可以發現大盤在這 5 年內有 2 倍的報酬,而買入持有 ESG ETF 的報酬是略遜一籌,但也是有超過 1.6 倍的累積報酬。另外我們也看到 ESG ETF 投組的波動情況與大盤幾乎一致,但是年化波動度與最大回撤則分別為 11.57% 和 -27.08%,這種波動幅度是相對大盤來說比較小的幅度,而且從 Beta 值 < 1 ,表示投組對總體市場之變動不敏感,種種指標顯示 ESG ETF 是在較低風險下穩定的在獲利,反應 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 的相關方案,用高品質的資料庫,建構出適合自己的交易策略。
電子報訂閱