willbillionquant

量化交易者, 數學愛好者, 歷史閱讀者, 籃球觀摩者 Medium: https://medium.com/@willbillionquant Patreon: https://www.patreon.com/willbillionquantsight FB: https://www.facebook.com/willbillionquant

美股業績日曆: 資料蒐集與初步統計 (Willbillion FB 2020-04-17)

發布於

前言

本文轉載自筆者今年的Facebook page 有關美股業績日曆的文章, 並稍作修改, 以免費文章形式公布首先公布在 2020-04-17 之自家 Facebook Page:

https://www.facebook.com/willbillionquant/posts/710820809657178

而本文章相關之程式碼 (Source Code) 已經上載到筆者之 GitHub:

https://github.com/willbillionquant/python-r-qtrade/tree/master/earning

歡迎各位網友下載並多多交流切磋~~~


背景與流程

這篇文章以及日後接續, 我想介紹一下如何整合不同的數據科學實務技巧, 去研究基於非純粹個股價 (non-OHLC data) 資訊的可行操作策略.

一般的美股公司, 每年四個季度會各有一次業績報告日 (Earning report date), 公布上一個季度的公司業績, 而公司業績當然是公司基礎分析資訊的公眾可接觸之最重要來源.

個股的業績日曆 (以蘋果公司AAPL為例)有以下幾個網站可以免費獲取:

https://finance.yahoo.com/calendar/earnings?symbol=AAPL

https://www.streetinsider.com/dr/eps-ticker.php?q=AAPL

https://markets.businessinsider.com/stocks/aapl/events

各位朋友寫網絡爬蟲 (Web scraper) 可以抓取上述網頁, 而小弟傾向抓取 Streetinsder的資訊, 可以回溯過去十年的業績日期, 還有囊括每次業績的每股盈利 (Earning per share, EPS) 以及實際EPS比起市場預期的差異值 (EPS Surprise, 正數為超出預期, 負數則為遜於預期). Fig. 1 就是AAPL的streetinsider earning 的layout.

Fig 1. AAPL past earning events from streetinsider.com

聚焦於S&P 500指數成分股的每季度業績日期, S&P 500 成分股可以從維基百科獲取:

https://en.wikipedia.org/wiki/List_of_S%26P_500_companies

從Fig. 1 中 “Normal Earnings Time” 這個data field 發現, AAPL以及大部分科技股都是After Close, 意味著當天16:00 EST (美國東部時間, 夏令時相當於香港時間04:00 HKT) 美股收市後才公布業期, 但是銀行股 e.g. BAC, JPM, 則是Before Open在9:30 EST (夏令時對應21:30 HKT) 之前公布業績, 參見Fig.2.

Fig 2. 業績公布時間風格 (Before Open vs After Close)

由於小弟生活在香港, 我運用了自己的生活習慣經驗去把文字轉化為日期object. 做例如JPM本季度剛在4月14日 Before Open公布, 那麼我就把JPM earning datetime 寫成 2020-04-14 18:00, 而AAPL 本季度4月30日After Close公布, 我就寫成 2020-05-01 08:00. 這樣的寫法, 是為了提醒自己, 季度業績公布 *之後* 的第一個交易日是甚麼.

然後我們可以將每隻股份在當今季度 (1-3月為Q1, 4-6月為Q2, etc) 的業績日, 黏合起來形成一個自製的業績日曆 (Earning Calendar) , 參見Fig 3. 

Fig.3 自製earning calendar

我把業績日曆export 到excel file, 這個可以運用python pandas 裡面 一個叫ExcelWriter的project. Excel 檔案顯示的視覺效果不會很好, 不過部分是小弟習慣了看文字與表格, 部分是可以另外寫程式, 每天send alert (email, Telegram bot message, IFTTT, …) 給自己作為提醒哪些公司當天公布業績以及其他資訊.

500 隻個股可能是太多了, 那麼我們可以自行篩選, 假設重點關注成交金額top 100的個股. 那麼可以從yahoo finance 等API download個股價格與成交量data , 成交金額 = 價格 * 成交股數, 然後可以計算一段時期的成交金額 (e.g. 過去一個月, 一個季度), 整合在上面自製的earning calendar table裡面, 做一下簡單的sort / filter就可以了. 我就把top 100 price * volume的大盤股filter出來, 按日子排列, 就成了Fig 4 !

Fig.4 頭100大成交金額之美股業績日曆

然後我們又從中發現, 每個季度都有一個業績日最密集期, 這個密集期我界定為1, 4, 7, 10 月8日之後的星期一開始, 直到2, 5, 8, 11月的第一個星期五, 延續三個星期, 總共只佔全年不到四分之一的日子. 根據小弟手上的統計, top 100 成交金額的個股, 在這個季度裡面, 有69隻會在這三個星期公布, 包括了大家最熟悉的MSFT, AMZN, FB, NFLX, GOOG, AAPL這些巨無霸, 而S&P 500 成分股也有超過300隻會在這三個星期公布, 換言之, 超過六成的大型股份.

那麼知道了業績日期, 這麼多個股密集在兩三個星期公布業績, 又有甚麼策略能夠從之獲利呢? 根據小弟之前看過某些研究的經驗, 似乎直接以正股投注單一正股earning之後的走向是比較高風險的行為, 因為不是這麼容易 “有路捉”. 我操作美股的經驗並不算豐富, 不過對於個股業績與價格表現統計也已經有了初步的研究. 

最後, 上面的業績日曆爬蟲程式, 以及 2020 Q2 的業績日曆, 都已經上載到筆者的GitHub:

https://github.com/willbillionquant/python-r-qtrade/tree/master/earning

歡迎各位網友下載並多多交流切磋~~~

喜歡我的文章嗎?
別忘了給點支持與讚賞,讓我知道創作的路上有你陪伴。

CC BY-NC-ND 2.0 版權聲明

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區