1. 程式人生 > >【邢不行|量化小講堂系列12-Python量化入門】法碼三因子選股模型,有多少人可以跑贏

【邢不行|量化小講堂系列12-Python量化入門】法碼三因子選股模型,有多少人可以跑贏

引言:

邢不行的系列帖子“量化小講堂”,通過實際案例教初學者使用python進行量化投資,瞭解行業研究方向,希望能對大家有幫助。

【歷史文章彙總】請點選此處

個人微信:coinquant,有問題歡迎交流。

文中用到的A股資料可在www.yucezhe.com下載,這裡可以下載到所有股票、從上市日起的交易資料、財務資料、分鐘資料、分筆資料、逐筆資料等。

法碼三因子選股模型,有多少人可以跑贏

 —策略介紹—

法碼三因子模型,是金融領域的著名模型,它由諾貝爾經濟學獎獲得者尤金法瑪開發。該模型主要通過總市值、市淨率等指標,選出小盤價值股。因為他通過美國股市長時間的資料發現,市值越小、市淨率越低的股票,往往會漲得更多。論文原文放在附件中,供免費下載。

本期文章嘗使用python、pandas來實現法碼三因子模型,並且使用中國市場的資料來驗證其有效性。我們沒有必要像法碼的論文原文中做的那麼嚴謹,所以對模型做出簡化。簡化後具體的規則是:在每個月的最後一個交易日,計算出每個股票的總市值 * 市淨率。在所有股票中選出該值最小的10只股票,並且計算這10只股票在下個月的平均漲幅,如此往復,得到每個月的收益,並計算總的選股收益,畫出資金曲線。

由於法碼三因子選股模型本質上是一個多因子選股模型,所以本期文章的程式碼已經構成了一個簡單的多因子模型框架。大家可以在此框架下,開發出其它有效的選股因子。

本期文章中可以學到的pandas知識:

  1. 通過pandas匯入匯出文字資料。
  2. groupby方法的熟練運用。
  3. 如何構建多因子選股模型框架。

對於初學者來說,本期文章的難度比較大。只有在融會貫通前幾期內容的基礎上,才能比較順利的完成。

—程式—

想要實現法碼三因子選股模型,需要股票的每個月的市值以及市淨率資料,從這裡可以下載到所有股票的歷史月線資料。有免費的2013年和2014年的資料,可以作為我們計算的原始資料。資料下載下來之後有一個檔案,開啟之後是下圖這個樣子:

每一行是記錄每個股票在每個月末的資料。

資料中包含以下欄位:
【股票程式碼】股票的程式碼,上證股票以sh開頭,深證股票以sz開頭
【交易日期】【開盤價】【最高價】【最低價】【收盤價】
【漲跌幅】復權之後的真實漲跌幅,保證準確
【成交量】【成交額】【流通市值】【總市值】【換手率】【後復權價】
【交易天數】本月股票實際交易的天數
【是否交易】本月該股票最後一個交易日是否交易,1代表是,0代表否
【是否漲停】本月該股票最後一個交易日收盤是否漲停,1代表是,0代表否
【是否跌停】本月該股票最後一個交易日收盤是否跌停,1代表是,0代表否
【報告型別】最近一期財務報告的型別,3-31對應一季報,6-30對應半年報,9-30對應三季報,12-31對應年報
【報告日期】最近一期財務報告實際釋出的日期
【市盈率TTM】最近12個月市盈率,股價 / 最近12個月歸屬母公司的每股收益TTM
【市銷率TTM】最近12個月市銷率, 股價 / 最近12個月每股營業收入
【市現率TTM】最近12個月市現率, 股價 / 最近12個月每股經營現金流
【市淨率】市淨率,股價 / 最近期財報每股淨資產

有了原始資料之後就是程式碼,下面是程式碼的截圖裡面有詳細的註釋,有問題可以留言,附件中有程式的原始碼,需要程式碼可以加我微信coinquant索要。

把資料下載下來,放到和程式碼同一個資料夾下,直接執行程式碼,結果會輸出到output.csv。輸出結果如下圖:

從圖中可以看到,從2000年起,按照法碼三因子模型選股,每個月交易一次,不算手續費的話,資產可以翻一百多倍噢。

思考題:

若不希望每個月選股一次,想要比如每週選股一次。那麼上面所說的這個月線資料就不行了。可以下載日線資料,然後將日線資料轉換為周線或者其他週期的資料,然後再構建模型。資料週期的轉換方法可以看之前的文章
《極簡方法將日線資料轉為周線、月線或其他週期》
也可以試試看不是選10只股票,而是選5只,或者3只,看看效果怎麼樣。

對本文研究有自己的想法的朋友,歡迎在評論區留言。關於文中的程式碼、資料,以及下期《量化小講堂》想了解的內容,也可以加我個人微信coinquant交流。

如果你想入門量化,但是始終找不到方向,可以加入我的知識星球。我會在裡面解答你的問題,分享我的感悟,不論是投資、技術,還是職業選擇、思維方式。 

                                                                         -- 學習和成長從來都不是一個人的事 --