TEJ API 財金筆記—公司財報與股價的合併觀察

作者:台灣經濟新報(TEJ)   |   2019 / 03 / 28

文章來源:台灣經濟新報(TEJ)   |   圖片來源:Hana


不管是在做學術研究或個人投資時,股價變動與公司財報揭露的關係,都是大家考慮的一個重點,例如當公司發布超出市場預期的每股盈餘時,股價隔天往往會有上漲的反應。因此為了研究兩者之間的關係,就需要一組時間序列資料,也就是當時間軸日期變動時,要能同時紀錄股價與財務資料的變化。

這邊就會有一些值得注意的地方,財報的編製必定需要時間,因此我們不會在當下就看到即時的數據,證交所會公告不同季度的財報發佈期限,目前台灣一般公司(金融業較特殊)的規範是每年的 5/15、8/14、11/14 前要發布第一、二、三季的財報,而隔年的 3/31 前則要發布整年的年度財報。

因此如果我們想比對每天的股價變化,是否有受到財報揭露的影響,就要正確地把以「日」為頻率的股價,跟以「季」為頻率的財報做結合,以鴻海(2317-TW)為例,2018 年 Q3 的財報是等到 11/14 時才公布,此時我們才能取得鴻海 Q3 的財務資料。

而這件事可以利用 TEJ 的以下三個資料表結合完成。

  • 上市(櫃)未調整股價(日)
  • IFRS 以合併為主簡表(累計)— 全產業
  • IFRS 以合併為主簡表(累計)— 全產業 報表封面資料

首先我們可以用下列語法查詢這三個資料表的資料。

在財報資料庫「IFRS 以合併為主簡表(累計)-全產業」中雖然有 mdate 這個日期欄位,但 mdate 代表的是財報的「季」別,如 2018/9/1 代表的是 Q3 的財報、2018/12/1 代表的是 Q4 的,如果直接用財報的 mdate 來跟股價資料合併,就會出現 2018/9/1 可以觀察到 Q3 財報數據的不合理現象,正確的作法是應該先將各季的財報資料給予額外欄位,用來記錄揭露日的資訊,如下面的程式碼處理。

如此一來,就可以在股價資料中併入財務資料了,只要依序根據不同的財報揭露日,把財務資料換成最新的數據即可,像下圖這樣。

執行的程式碼就如同下面的範例。

註:’a0003’就是財報揭露日的資料欄位

由於 TEJ 的財務資料庫中,欄位的值是用代碼 acc_code 來查詢,而不是名稱。

如上圖一般,欄位名稱會是代碼而不是一般熟知的會計科目,用 pandas 指令查詢欄位名稱果然都是代碼如下。

因此我們可以用「財務科目代碼名稱對照表」,來把原本的 acc_code 都替換為中文名稱 cname,也可以把下面語法中標示說明可以替換的地方更換成 ename,換成英文名稱。

再看一次 price_data 中的欄位名稱,果然都換成中文了。

最後我們來畫圖看看合併後的結果,當我們把鴻海股價跟 EPS 放在一起時,看 EPS 是不是真的隨著公告日出現變化。

果然 EPS 在 8/14、11/13 這兩個日期出現變化,財報資料跟股價正確地按照時間結合了。

註:此地方之 EPS 是 TEJ 所計算之近四季常續性 EPS

本篇文章所展示之內容係由 TEJ API 工具撈取。

台灣經濟新報》授權轉載 程式連結

【延伸閱讀】

分享
台灣經濟新報(TEJ)
台灣經濟新報(TEJ)為台灣本土第一大財金資訊公司,成立於 1990 年,專門提供金融市場基本分析所需資訊,以及信用風險、市場風險、資產評價、投資分析及公司治理分析等解決方案及顧問服務。 鑒於財務金融領域日趨多元與複雜,TEJ 結合實務與學術界的精英人才,致力於開發機器學習(ML)、人工智慧(AI)及自然語言處理(NLP)等新技術,持續提供金融創新服務。目前客戶包括國內所有大專院校、銀行、投信、九成綜合券商及外資券商。
關注