每年六月是台股的股東會旺季,股東會最主要的功能就是董監改選與投票決定公司重大經營事項。
根據《公司法》規定,在董監改選前二個月為最後過戶日,故通常四月就會停止過戶,確定具有投票權的股東名冊。因此有志於參選董監的人士,往往會在最後過戶日前數月進行佈局,並持有到最後過戶日,換句話說,由於參選董監的人都是大戶居多,大戶賣壓在這時段理論上會減輕。
近日比特幣飆漲,特性在於流通籌碼有限,股票也是同樣的道理,大戶買進鎖住籌碼,只進不出,籌碼集中的趨勢讓股價上漲更無壓力,若能事先知道哪些標的容易吸引董監改選的佈局買盤,就有機會跟上“籌碼無極”的好處。
另外越接近截止日(常是每年二月後),財經媒體也會開始放送董監改選行情的訊息,此時散戶見利多後會有跟進衝動,有機會再度推升買盤。內行人當然要在這之前佈局。
每家公司的董監改選每3年大選一次,如何設計董監改選的選股策略?把握事件交易的行情,將在接下來使用籌碼與財務資訊做分析。
台股籌碼策略策略設計
資料範圍
股東會資訊明細、董監整體持股變化、董監持股低於法定數量、董監質押設定、財務數據。以上資料皆可由公開資訊觀測站獲得。
策略回測資料前處理
開啟股東會資訊明細,篩選股東會類別為“常會”並有舉辦董監改選的企業與年度,因為“臨時會“就算有改選,也是小規模(經常是原董監有人離任或身故),最後過戶日為股東會前1月,佈局比較不及。
接著設定股東會日期(date)前兩個月為最後過戶日(exit_date)”,最後過戶日前3個月設為“進場日(entry_date)”,持有期間為90天,會這樣設定是因為設太近,買盤近尾聲,設太遠,又脫離事件交易的相關性,且在報酬追求上不一定有效率,因此設定該策略為短打型策略。掐指一算entry_date剛好落在1月左右,實有必要研究下該策略。
有了entry_date和exit_date後就可以來做還原股價的mapping,並加入加權報酬指數同期的報酬率來做比較。進場日若遇到假日則以下個交易日資料為計算,報酬率已考慮0.5%交易成本因素。接著使用pandas reindex來mapping想回測的指標,以董監持股相關的籌碼資訊為主。
資料處理好之後,就可以回測每一筆董監行情的歷史佈局績效。
策略撰寫
雙因子策略
- 股本小於200000張
- 全體董事不包含獨立董事不足法定股數
效果不太好,雖然平均有獲利,但勝率不影響,也輸大盤。從MAE_MFE分佈圖來看,許多交易的dropdown過大,需要近一步優化。
回測分析
多因子策略
- 股本小於200000張:小股本,籌碼集中輕盈,易拉抬
- 董監持有股數占比5~15%:低於5%常有財務問題,回測報酬有差,內部人持股太低還是要注意地雷風險。中小型公司持股15%以下是偏低水準,很容易被市場派超越。若40%以上,公司派股權就十分穩固,外人介入機會降低。
- 股價淨值比<1.3 & 負債比率<50 & 營業利益率>0:無論是市場派想搶權、公司派維護經營權,都要基於公司的本質不能太差,至少也要如去年火熱的“大同電鍋”,有龐大的資產吸引人。低股價淨值比就有公司股價便宜、資產可能較豐厚的意義,非金融業的負債比率最好低於50,沒人想買拖油瓶,買來幫忙還債?營業利益率>0,最好本業還有一定能力可賺錢,財務指標設太嚴格,標的會少上許多。
- 董監增加股數近6個月至少有出現兩次董監買進:篩選內部人看好強度、維護股權的企圖心。
cond1=df['發行股數']<200000000
cond2= (df['董監持有股數占比']<15) & (df['董監持有股數占比']>5)
cond3=(df['股價淨值比']<1.3 ) & (df['負債比率']<50) & (df['營業利益率']>0)
cond4=df['董監增加股數']>0
回測分析
近10年回測共出現46次符合篩選要件,勝率高達82%,持有3個月有平均15%獲利,中位數也有11%,平均也能打敗大盤同時表現。從MAE_MFE分佈圖來看,許多交易的dropdown過大,需要近一步優化。多數獲利交易集中在左方區塊,MAE小,虧損交易(橘點)MAE大,集中在右下方區塊,若設10%為stop loss,能過濾掉多數虧損,幾乎保留所有獲利情況,算是不錯的策略體質。
近期選股
這個策略要注意的是,今年股東會的舉辦日期和是否改選,都不會那麼早公布,但等3月公告後,行情早就結束,技巧在法律規定上市櫃公司每3年要改選,今年是2021年,所以可以拿2018年股東常會有舉辦董監改選的公司當作篩選標的。
有篩到5檔標的,篩選程式如下。
董監持有股數占比=internal_equity_changes['董監持有股數占比']
發行股數=internal_equity_changes['發行股數']
董監增加股數=(internal_equity_changes['董監增加股數']>0).rolling(6).sum()>1
全體董事不包含獨立董事不足股數=internal_equity_insufficient['全體董事(不包含獨立董事)不足股數']
股價淨值比=price_earning_ratio['股價淨值比']
負債比率=tej_fundamental['負債比率']
營業利益率=tej_fundamental['營業利益率']
董監設質股數占比=internal_equity_pledge['董監設質股數占比']
# 2021股東會董監改選預期
sm_df=shareholders_meeting.copy()#[['stock_id','date']].set_index('stock_id')
sm_df=sm_df[sm_df['是否改選董監'].isin(['是'])]
sm_df=sm_df[sm_df['股東會類別'].isin(['常會'])].set_index('stock_id')
sm_df=(sm_df['date']>'2018') & (sm_df['date']<'2019')
cond1=發行股數.iloc[-1]<200000000
cond2= (董監持有股數占比.iloc[-1]<15) & (董監持有股數占比.iloc[-1]>5)
cond3=(股價淨值比.iloc[-1]<1.3 ) & (負債比率.iloc[-1]<50) & (營業利益率.iloc[-1]>0)
cond4=董監增加股數.iloc[-1]>0
cond5=sm_df[sm_df]
cond_all=cond1 & cond2 & cond3 & cond4 & cond5
select_list=cond_all[cond_all]
select_list
結語
這個策略比較麻煩的是初期資料的建置比較繁雜,資料的判讀與使用要注意細節處理。篩選出的這5檔標的有沒有用?能不能有優化空間?目前想到的是搭配最後過戶日前”強制回補“的規定,去分析融券回補的短線買盤,延伸做雙事件策略的結合。
台股的籌碼資訊相較其他市場透明,台股籌碼策略值得好好開發!