跳轉到

MSMP.list 股池

所屬章節:MSMP 歷史資料 以 2026-08-20 實際執行結果為準

Overview

api.MSMP.list 是股票分群的 dict,value 是股票代號 list。 api.Block.screener_tw(pool=...) 的股池名稱就是這裡的 key。

api.MSMP.list['tse']
api.MSMP.get('list', 'tse')   # 等價

Manual Sample Input/Output

Example 1:所有股池與檔數

input

{k: len(v) for k, v in api.MSMP.list.items()}

output

{'all': 2873, 'tse': 1125, 'otc': 923, 'esm': 412,
 'etf': 382, 'KY': 143, 'DR': 14, 'delist': 145}
key 說明
all 全市場(含已下市)
tse 上市
otc 上櫃
esm 興櫃
etf ETF
KY KY 股(外國企業來台上市)
DR 存託憑證
delist 已下市

Example 2:成員內容

input

api.MSMP.list['etf'][:5]

output

['00400A', '00401A', '00402A', '00403A', '00404A']

Example 3:搭配矩陣做篩選

list 的值可以直接拿去切矩陣的 columns:

close = api.MSMP.日_K.adj_Close
tse_only = close.loc[:, close.columns.isin(api.MSMP.list['tse'])]

要「全市場排除 ETF」:

mask = ~close.columns.isin(api.MSMP.list['etf'])
no_etf = close.loc[:, mask]

積木的 pool=['all', '~etf'] 做的就是這件事,見 Block 股池。


注意

all 目前含一個重複代號:2873 筆但只有 2872 個不同代號,'7834' 出現兩次。

input

lst = api.MSMP.list['all']
len(lst), len(set(lst))

output

(2873, 2872)

用 isin() 篩選不受影響(重複不改變集合語意),但不要直接拿它當 DataFrame 的 columns,否則後續任何 reindex 都會拋錯:

InvalidIndexError: Reindexing only valid with uniquely valued Index objects

需要當 columns 用時先去重(保持原順序):

symbols = list(dict.fromkeys(api.MSMP.list['all']))

美股沒有 list:

input

hasattr(api.USMSMP, 'list')

output

False