
目录
三大法人是台股市场中重要的参与者,个股的三大法人每日买卖超、累积买卖超与持股比例资讯,都是投资人参考的依据。故本文透过分析三大法人在整体股市与各产业的持股市值变化,来梳理三大法人从2015年至今的产业偏好与投资策略差异,期待能为读者带来交易上的灵感。
三大法人详细的说明如下:
本文使用 Windows OS 并以 Jupyter Notebook 作为编辑器
# 功能模组import pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] # 解决 plot中文问题plt.rcParams['axes.unicode_minus'] = False#TEJ APIimport tejapitejapi.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)breakmarket_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选购符合自身需求的资料包组合。
电子报订阅