美债殖利率与台股关系

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中的方案,相信读者具有完整的资料库后,就能轻易地把握市场动向。

完整程式码

延伸阅读

相关连结

返回总览页