目录
三大法人是台股市场中重要的参与者,个股的三大法人每日买卖超、累积买卖超与持股比例资讯,都是投资人参考的依据。故本文透过分析三大法人在整体股市与各产业的持股市值变化,来梳理三大法人从2015年至今的产业偏好与投资策略差异,期待能为读者带来交易上的灵感。
三大法人详细的说明如下:
本文使用 Windows OS 并以 Jupyter Notebook 作为编辑器
# 功能模组
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] # 解决 plot中文问题
plt.rcParams['axes.unicode_minus'] = False
#TEJ API
import tejapi
tejapi.ApiConfig.api_key = "your key"
Step 1. 资料捞取
捞取上市上柜公司代码,并排除金融业、存托凭证。
industry = tejapi.get("TWN/AIND",
paginate=True,
opts={'columns':['coid','mdate','mkt','tejinm4_c','tejinm3_c']},
chinese_column_name=True)
industry = industry[~industry['TSE新产业_名称'].isin(['金融业','','存托凭证']) &
(industry['上市别'].isin(['TSE']))]
security_list = industry['公司简称'].tolist()
捞取上市上柜公司的市值、三大法人持股市值。
# TEJ为维持主机运行的稳定,总笔数单次最多为1,000,000笔。故我们可以将公司以50家分一组,以便回圈分次捞取资料
groups = []
while True:
if len(security_list) >= 50:
groups.append(security_list[:50])
security_list = security_list[50:]
elif 0 <= len(security_list) < 50:
groups.append(security_list)
break
market_value = pd.DataFrame()
for group in groups:
market_value = market_value.append(tejapi.get('TWN/APRCD',
coid = group,
mdate= {'gte': '2015-01-01','lte':'2021-01-19'},
opts={'columns':['coid','mdate','mv']},
chinese_column_name=True,paginate=True)).reset_index(drop=True)
data = pd.DataFrame()
for group in groups:
data = data.append(tejapi.get('TWN/ATINST1',
coid = group,
mdate= {'gte': '2015-01-01','lte':'2021-01-19'},
opts={'columns':['coid','mdate','qfiimv','fundmv','dlrmv']},
chinese_column_name=True,paginate=True)).reset_index(drop=True)
Step 2. 合并资料
合并上述公司资料与相对应的产业名称。
data = pd.merge(data,industry, how='left', left_on='证券名称', right_on='公司简称')
data = pd.merge(data,market_value, how='left', left_on=['证券名称','年月日'], right_on=['证券代码','年月日'])
data.head(10)
Step 3. 计算筹码持股市值
我们直接从 TEJ获得的三大法人持股市值,然后去计算其他
持股市值,其他 = 市值-(外资+投信+自营)
,如散户、董监事持股、公司法人、寿险业与私募基金的持股市值。
# 计算筹码持股市值
data['其他(百万元)'] = data['市值(百万元)'] - data['外资总投资市值(百万)'] - data['投信持股数市值(百万)']
- data['自营持股数市值(百万)']
data = data[['证券代码','TSE新产业_名称', 'TEJ子产业_名称', '年月日', '外资总投资市值(百万)',
'投信持股数市值(百万)', '自营持股数市值(百万)','其他(百万元)']]
# 改栏位名称
data = data.rename(columns={'外资总投资市值(百万)':'外资',
'投信持股数市值(百万)':'投信',
'自营持股数市值(百万)':'自营',
'其他(百万元)':'其他'})
Step 1. 筹码持股市值百分比
透过groupby
功能能轻松将资料分组,以便分析不同分组下的叙述性统计,如下方程式码,便是将日期分组,然后加总不同日期下整体上市柜公司的持股市值比例。
从下图发现2015年开始外资在台股的持股市值比例稳定上升,即使外资从2021年初至今买卖超-4,470亿,但外资的持股市值仍将近4成,相较于投信与自营则只有较少的持股市值比例。
# 绘制筹码持股市值百分比
figure_table1 = data.groupby(['年月日'])[['外资','投信','自营','其他']].sum()
figure_table1 = figure_table1.divide(figure_table1.sum(axis=1), axis=0)
fig, ax = plt.subplots(figsize = (14,8))
ax.set_title('筹码持股市值百分比', fontsize=16, fontweight='bold')
ax.set_ylabel('Percentage', fontsize=12,rotation=0)
ax = ax.stackplot(figure_table1.index, figure_table1.T)
plt.legend(figure_table1.columns,loc=2, prop={'size': 12})
plt.show()
# 要反过来看图例去对照图形
Step 2. 三大法人在不同产业的持股市值百分比
下图由左到右依序是外资、投信与自营,可以发现外资与投信有较相近的产业持有市值趋势,半导体产业的部位都持续放大,而外资又比投信更集中于半导体产业。自营则有相当波动的产业持股市值,反映自营有较灵活且短线的投资策略,不同产业的持股市值比较为相近。
Step 3. 外资在半导体产业链的持股市值百分比
外资在半导体产业的持股市值比例从2015年至今,持股市值比例从40%上升至70%,故我们想透过 TEJ资料库分类的子产业别,进一步分析外资在半导体产业链的持股市值分配比例。发现在23个半导体子产业别中,晶圆代工占80%,而 2330台积电又在晶圆代工中占95%以上。
外资与投信在台湾有60%的持有市值比例在半导体产业,自营虽然也有较高的持有市值比例在半导体产业,但整体产业持有市值比例有剧烈的波动,反映自营灵活的投资策略与短线操作。另外我们也进一步分析外资在半导体产业链的持有市值比例,发现外资的产业选股布局体现80/20法则,外资持股市值比例主要由 2330台积电贡献。
最后若读者对筹码面与产业别分组的分析感兴趣,欢迎读者至 TEJ E-Shop选购符合自身需求的资料包组合。