【實戰應用(十四)】美債殖利率與台股關係

分析美國公債與台股不同類股的關係

Photo by Alina on Unsplash

本文重點概要

  • 文章難度:★☆☆☆☆
  • 以迴歸模型討論美國公債殖利率變動與台股大盤、電子類股、金融股與高股息類股的關係
  • 閱讀建議:本文在模型方面,並不會深入探討架構組成,僅會分析模型結果讓我們了解的資訊,因此需要讀者對統計模型有基本的觀念;此外,本文提及之基金標的僅供說明使用,不代表任何金融商品之推薦或建議。

前言

原物料價格飆漲、通膨以及升息是今年金融市場的主要議題,新聞媒體也時常報導台灣股市近期的走跌與國際資金流動有關,因此本文便將以此為出發點,透過統計方法分析台灣股市與美債殖利率的關係。

編輯環境及模組需求

本文使用MacOS 並以 Jupyter Notebook 作為編輯器。

# 基本功能
import numpy as np
import pandas as pd
# TEJ API
import tejapi
tejapi.ApiConfig.api_key = 'Your Key'
tejapi.ApiConfig.ignoretz = True

資料庫使用

總體經濟說明表:針對總體經濟表的科目所使用的說明表,資料代碼為(GLOBAL/ABMAR)。

總體經濟表:政府部門發布的總體經濟指標,來源包含IMF與OECD,以及相關專業刊物。資料代碼為(GLOBAL/ANMAR)。

上市(櫃)調整股價(月)-除權息調整:以上市的證券及指數之月資料為收錄對象(TSE及OTC)。資料代碼為(TWN/AAPRCM1)。

美債殖利率

Step 1. 讀取總經資料名稱&代碼

factor_macro = tejapi.get('GLOBAL/ABMAR',
opts={'columns': ['coid','mdate', 'cname', 'freq']},
chinese_column_name=True,
paginate=True)
select_1 = list(factor_macro['中文全稱'][i] for i in range(0,6214) if '殖利率' in factor_macro.iloc[i,2])

上述過程首先,讀取所有總經資料庫數據的名稱;隨後,透過設定條件中文名稱內含有“殖利率”三個字,篩選出“美國十年期公債殖利率”。

factor_macro[factor_macro['中文全稱'] == '美國十年期公債殖利率']

藉由中文全稱的條件,找到該筆數據的總經代碼 — CA15。

Step 2. 讀取美債殖利率數據

yield_10yr = tejapi.get('GLOBAL/ANMAR',
mdate={'gte': '2020-01-01', 'lte':'2022-03-01'},
opts={'columns': ['mdate', 'val']},
coid = 'CA15',
chinese_column_name=True,
paginate=True)
yield_10yr = yield_10yr.rename(columns = {'數值':'yield_10yr'})
yield_10yr.head()

台股數據

Step 1. 讀取指數、基金報酬數據

index_list = ['Y9997', '0053', '0055', '0056']index_data = tejapi.get('TWN/APRCM',
coid = index_list,
mdate= {'gte': '2020-01-01', 'lte': '2022-03-01'},
opts={'columns': ['coid', 'mdate', 'roi']},
paginate = True,
chinese_column_name = True)

本文選擇以Y9997報酬指數作為台股大盤的代表;0053是電子類股的基金;0055為金融股基金;0056則是高股息類型的基金。

Note:0056並非純傳產類型的基金,其主要成分股亦包含電子股中的高殖利率標的。

Step 2. 資料表整理

index_data = index_data.set_index('年月')roi = {}for i in index_list:
r = index_data[index_data['證券代碼'] == i]
r = r['報酬率%_月']
roi.setdefault(i, r)
roi = pd.concat(roi, axis = 1).reset_index()
roi.head()

模型適配過程

Step 1. 資料整合

final = pd.merge(roi, yield_10yr, how = 'inner', on = ['年月'])
final = final.rename(columns = {'Y9997':'台灣大盤', '0053':'電子股', '0055':'金融股', '0056':'高股息'})
final.head()

Step 2. 模型適配

import statsmodels.formula.api as smf
from statsmodels.stats.anova import anova_lm
for i in list(final.columns)[1:5]:
data = pd.DataFrame(final[[i, 'yield_10yr']])
mdl = smf.ols(i + ' ~ yield_10yr', data=data).fit()
print(i)
print()
print(mdl.summary())
print()

首先藉由“list(final.columns)[1:5]”取得final表中各類型指數或基金的名稱,接著套入迴圈中,各別與美國10年期公債殖利率做適配,以下將逐一說明模型結果。

模型結果說明

首先看到10年期債殖利率的解釋變數欄位(紅色匡格),在係數欄位可以知道兩項數據為負相關;而透過P值為0.169可以很有信心地判斷其對台股大盤的作用並沒有顯著性;此外,R²(藍色匡格)為0.074也說明解釋能力相當的不足。

在解釋變數欄位(紅色匡格),可以了解兩項數據亦為負相關,透過P值為0.042可以判斷美債殖利率對台灣電子股的表現具有顯著性,然而並未達到最高標準的0.01,因此綜合考量R²(藍色匡格)為0.156,則推論該解釋變數具有些微的解釋強度。

在解釋變數欄位(紅色匡格),可以了解兩項數據為正相關;而透過P值為0.357可以很有信心地判斷其對台股大盤的作用並沒有顯著性;此外,R²(藍色匡格)為0.034也說明解釋能力相當的不足。

在解釋變數欄位(紅色匡格),可以了解兩項數據為負相關;而透過P值為0.622可以很有信心地判斷其對台股大盤的作用並沒有顯著性;此外,R²(藍色匡格)為0.010也說明解釋能力相當的不足。

結論

透過上述模型結果,相信讀者可以知道,除了電子相關類股以外,美債殖利率對於台灣大盤、金融股以及高股息標的解釋能力並沒有達到一定的程度;然而這並非說明台股投資者可以輕忽美國的總體經濟或聯準會的貨幣政策,畢竟作為世界經濟龍頭,其總經現況及央行態度還是會影響國際資金的流動,並且台灣當然也不例外,因為台灣產業發展主軸是科技電子股,從報表中也可以觀察到美債殖利率對此族群的影響,這提醒我們在今年通膨與升息議題的環境下,作為台股投資者,更需要注意美國的產經動向;因此,歡迎持續關注本平台,後續會有更多文章說明總體經濟對股票市場的影響;此外,也歡迎讀者選購 TEJ E Shop中的方案,相信讀者具有完整的資料庫後,就能輕易地把握市場動向。

完整程式碼

延伸閱讀

相關連結

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

--

--

--

新手上路|Rookie / 資料科學|Data Analysis / 量化分析|Quant / 實戰手冊|Application

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
台灣經濟新報(TEJ)

台灣經濟新報(TEJ)

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

More from Medium

【TEJ Dictionary】Margin Trading (2)

Football WorldCup Predictive Model

Network Scanner Built with Python

BIPES, Part Two, or adding the Maker Pi RP2040 based OptumBot to BIPES

OptumBot with BIPES