本系列帖子“量化小講堂”,通過實際案例教初學者使用python、pandas進行金融數(shù)據(jù)處理,希望能對大家有幫助。
【必讀文章】:《10年400倍策略分享-附視頻逐行講解代碼》
【所有系列文章匯總】:http://xalimeijing.com/thread-3950124-1-1.html
【python量化課程】想要快速、系統(tǒng)的學習量化知識,可以參與我與論壇合作開設的課程:《python量化投資入門》,我會親自授課,隨問隨答。參與課程還可以免費加入我的小密圈,我每天會在圈中分享量化的所見所思,圈子介紹點擊此處。
微信:xbx_laoshi,量化交流Q群(快滿):438143420,有問題歡迎交流。
文中用到的A股數(shù)據(jù)可在www.yucezhe.com下載,這里可以下載到所有股票、從上市日起的交易數(shù)據(jù)、財務數(shù)據(jù)、分鐘數(shù)據(jù)、分筆數(shù)據(jù)、逐筆數(shù)據(jù)等。
【量化小講堂 - Python、Pandas系列】法碼三因子選股模型,有多少人可以跑贏
法碼三因子模型,是金融領域的著名模型,它由諾貝爾經(jīng)濟學獎獲得者尤金法瑪開發(fā)。該模型主要通過總市值、市凈率等指標,選出小盤價值股。因為他通過美國股市長時間的數(shù)據(jù)發(fā)現(xiàn),市值越小、市凈率越低的股票,往往會漲得更多。論文原文放在附件中,供免費下載。
本期文章嘗使用python、pandas來實現(xiàn)法碼三因子模型,并且使用中國市場的數(shù)據(jù)來驗證其有效性。我們沒有必要像法碼的論文原文中做的那么嚴謹,所以對模型做出簡化。簡化后具體的規(guī)則是:在每個月的最后一個交易日,計算出每個股票的總市值 * 市凈率。在所有股票中選出該值最小的10只股票,并且計算這10只股票在下個月的平均漲幅,如此往復,得到每個月的收益,并計算總的選股收益,畫出資金曲線。
由于法碼三因子選股模型本質(zhì)上是一個多因子選股模型,所以本期文章的代碼已經(jīng)構(gòu)成了一個簡單的多因子模型框架。大家可以在此框架下,開發(fā)出其它有效的選股因子。
(【python量化課程】想要快速、系統(tǒng)的學習量化知識,可以參與我與論壇合作開設的課程:《python量化投資入門》,我會親自授課,隨問隨答。參與課程還可以免費加入我的小密圈,我每天會在圈中分享量化的所見所思,圈子介紹點擊此處。)
本期文章中可以學到的pandas知識:
- 通過pandas導入導出文本數(shù)據(jù)。
- groupby方法的熟練運用。
- 如何構(gòu)建多因子選股模型框架。
對于初學者來說,本期文章的難度比較大。只有在融會貫通前幾期內(nèi)容的基礎上,才能比較順利的完成。
下面開始正文:
想要實現(xiàn)法碼三因子選股模型,需要股票的每個月的市值以及市凈率數(shù)據(jù),從這里可以下載到所有股票的歷史月線數(shù)據(jù)。有免費的2013年和2014年的數(shù)據(jù),可以作為我們計算的原始數(shù)據(jù)。數(shù)據(jù)下載下來之后有一個文件,打開之后是下圖這個樣子:
每一行是記錄每個股票在每個月末的數(shù)據(jù)。
數(shù)據(jù)中包含以下字段:
【股票代碼】股票的代碼,上證股票以sh開頭,深證股票以sz開頭
【交易日期】【開盤價】【最高價】【最低價】【收盤價】
【漲跌幅】復權之后的真實漲跌幅,保證準確
【成交量】【成交額】【流通市值】【總市值】【換手率】【后復權價】
【交易天數(shù)】本月股票實際交易的天數(shù)
【是否交易】本月該股票最后一個交易日是否交易,1代表是,0代表否
【是否漲!勘驹略摴善弊詈笠粋交易日收盤是否漲停,1代表是,0代表否
【是否跌!勘驹略摴善弊詈笠粋交易日收盤是否跌停,1代表是,0代表否
【報告類型】最近一期財務報告的類型,3-31對應一季報,6-30對應半年報,9-30對應三季報,12-31對應年報
【報告日期】最近一期財務報告實際發(fā)布的日期
【市盈率TTM】最近12個月市盈率,股價 / 最近12個月歸屬母公司的每股收益TTM
【市銷率TTM】最近12個月市銷率, 股價 / 最近12個月每股營業(yè)收入
【市現(xiàn)率TTM】最近12個月市現(xiàn)率, 股價 / 最近12個月每股經(jīng)營現(xiàn)金流
【市凈率】市凈率,股價 / 最近期財報每股凈資產(chǎn)
有了原始數(shù)據(jù)之后就是代碼,下面是代碼的截圖,里面有詳細的注釋,有問題可以留言,附件中有程序的源碼,回復即可下載。
把數(shù)據(jù)下載下來,放到和代碼同一個文件夾下,直接運行代碼,結(jié)果會輸出到output.csv。輸出結(jié)果如下圖:
從圖中可以看到,從2000年起,按照法碼三因子模型選股,每個月交易一次,不算手續(xù)費的話,資產(chǎn)可以翻一百多倍噢。
思考題
若不希望每個月選股一次,想要比如每周選股一次。那么上面所說的這個月線數(shù)據(jù)就不行了。可以下載日線數(shù)據(jù),然后將日線數(shù)據(jù)轉(zhuǎn)換為周線或者其他周期的數(shù)據(jù),然后再構(gòu)建模型。數(shù)據(jù)周期的轉(zhuǎn)換方法可以看之前的文章《極簡方法將日線數(shù)據(jù)轉(zhuǎn)為周線、月線或其他周期》。
也可以試試看不是選10只股票,而是選5只,或者3只,看看效果怎么樣。
(【python量化課程】想要快速、系統(tǒng)的學習量化知識,可以參與我與論壇合作開設的課程:《python量化投資入門》,我會親自授課,隨問隨答。參與課程還可以免費加入我的小密圈,我每天會在圈中分享量化的所見所思,圈子介紹點擊此處。)
下一期量化小講堂大約會在12月下旬發(fā)布,主題已經(jīng)定了。關于《量化小講堂》之后想看的內(nèi)容,或者相關問題,可以加我微信xbx_laoshi、Q群(快滿):438143420溝通。
附件中是Python程序文件以及法碼三因子模型的原文,免費,回復可見,覺得文章內(nèi)容有幫助的話,頂貼是最好的鼓勵!