寧願用合理價買進一流公司,也不願用便宜價買進平庸公司 --Warren Buffett
歡迎追蹤我的方格子
在Frazzini, A., Kabiller, D., & Pedersen, L. H. (2013)的研究中發現,巴菲特所創造的alpha大部分都是藉由優質的槓桿以及投資高品質的股票所產生。那我們該如何量化所謂的高品質股票?以下引用Asness, C. S., Frazzini, A., & Pedersen, L. H. (2019)的研究來定義何謂品質因子(quality factor):
首先品質因子分為三部分:
- 獲利性(profitability):在Novy-Marx, R. (2013)已經證明高獲利的公司未來的報酬率會高於低獲利的公司。巴菲特十分看重的獲利指標ROE也是其中一種衡量獲利性的方式。
- 成長性(growth):Mohanram, P. S. (2005)的研究顯示,如果價值股中獲利能力具有高度成長力的公司挑選出來,他所獲得的報酬會高於價值股中低度成長性的公司。這與巴菲特所說的獲利率能夠持續提升的觀點十分相似。
- 安全性(safety):安全性代表了公司的償債能力、市場風險的承受度,以及槓桿程度。Frazzini, A., & Pedersen, L. H. (2014)的研究發現低beta值的股票反而比高beta值的股票未來報酬率較高。另外,倒閉風險較低的公司,未來的超額報酬反而比倒閉風險較高的公司高。
量化方式:
1. 獲利性(profitability):
獲利能力指標有:
(1)GPA: 毛利/資產
(2)ROE
(3)ROA
(4)CFOA:現金流/資產
(5)GMAR: 毛利
(6) ACC: 營業現金流/淨利
將上述的指標各自計算,對公司依照各指標進行進行排序,將所得的排序計算各自指標的Z score,並將6項Z score平均,就能得到獲利性指標的分數
2.成長性(growth):
成長性指標有:
(1)ΔGPA
(2)ΔROE
(3)ΔROA
(4)ΔCFOA
(5)ΔGMAR
以上的差額,為該指標與5年前的同一指標做差額,但台股的周期性較短,因此可以縮短其比較的年數。
最後使用上述的指標各自計算,對公司依照各指標進行進行排序,將所得的排序計算各自指標的Z score,並將5項Z score平均,就能得到成長性指標的分數
3. 安全性(safety):
安全性指標有:
(1) beta(bab):代表市場性風險,beta越低,代表其受的市場性風險越低
(2)負債比(lev):負債/總資產
(3)O-Score
(4)Z - Score
(5)ROE波動度(EVOL)
最後使用上述的指標各自計算,對公司依照各指標進行進行排序,將所得的排序計算各自指標的Z score,並將5項Z score平均,就能得到安全性指標的分數
最後將獲利性(profitability)、成長性(growth)及安全性(safety)的分數相加,即為品質(quality)分數
回測結果:
以下回測結果為每季取品質分數的前30%公司組成投資組合,並每季再平衡之結果
應用方式:
1. 優化研發因子
2.優化規模因子
3.優化資產配置:品質因子與市場因子、規模因子為負相關,因此如果將策略組合加入品質因子的策略,可減少投資組合波動。
4.作為價值投資者的選股標準
finlab的程式碼
from finlab import data
from finlab.backtest import sim
df1 = data.get('financial_statement:投資活動之淨現金流入_流出')
df2 = data.get('financial_statement:營業活動之淨現金流入_流出')
自由現金流 = (df1 + df2).rolling(4).mean()
gross_profit = data.get('financial_statement:營業毛利')
股本 = data.get('financial_statement:股本')
price = data.get('price:收盤價')
vol = data.get('price:成交股數')
市值 = 股本 * price / 10 * 1000
debt = data.get('financial_statement:負債總額')
cash = data.get('financial_statement:現金及約當現金')
current_assets = data.get('financial_statement:流動資產')
uncurrent_asset = data.get('financial_statement:非流動資產')
current_debt = data.get('financial_statement:流動負債')
capital_employed = current_assets + uncurrent_asset- current_debt -cash
EBITDA = data.get('fundamental_features:EBITDA')
depreciation = data.get('fundamental_features:折舊')
EBIT = EBITDA - depreciation
excess_cash = cash + current_assets - current_debt
asset = data.get('financial_statement:資產總額')
net_profit = data.get('fundamental_features:經常稅後淨利')
acc = df2/net_profit
GPA = gross_profit/asset
TEV = 市值 + debt -excess_cash
ROC = EBIT / capital_employed
ROA = EBIT / asset
ROE = data.get('fundamental_features:ROE稅後')
Z_acc = (acc.rank(axis=1, ascending=False) - acc.rank(axis=1, ascending=False).rolling(4).mean())/acc.rank(axis=1, ascending=False).rolling(4).std()
Z_gross_profit = (gross_profit.rank(axis=1, ascending=False) - gross_profit.rank(axis=1, ascending=False).rolling(4).mean())/gross_profit.rank(axis=1, ascending=False).rolling(4).std()
Z_gpa = (GPA.rank(axis=1, ascending=False) - GPA.rank(axis=1, ascending=False).rolling(4).mean())/GPA.rank(axis=1, ascending=False).rolling(4).std()
Z_roa = (ROA.rank(axis=1, ascending=False) - ROA.rank(axis=1, ascending=False).rolling(4).mean())/ROA.rank(axis=1, ascending=False).rolling(4).std()
Z_roe = (ROE.rank(axis=1, ascending=False) - ROE.rank(axis=1, ascending=False).rolling(4).mean())/ROE.rank(axis=1, ascending=False).rolling(4).std()
profitability =(Z_gpa + Z_roa + Z_roe+Z_gross_profit+Z_acc)/5
growth_GPA = GPA - GPA.shift(4)
growth_ROA = ROA - ROA.shift(4)
growth_ROE = ROE - ROE.shift(4)
growth_gross_profit = gross_profit - gross_profit.shift(4)
Z_growth_GPA = (growth_GPA.rank(axis=1, ascending=False)-growth_GPA.rank(axis=1, ascending=False).rolling(4).mean())/growth_GPA.rank(axis=1, ascending=False).rolling(4).std()
Z_growth_ROA = (growth_ROA.rank(axis=1, ascending=False)-growth_ROA.rank(axis=1, ascending=False).rolling(4).mean())/growth_ROA.rank(axis=1, ascending=False).rolling(4).std()
Z_growth_ROE = (growth_ROE.rank(axis=1, ascending=False)-growth_ROE.rank(axis=1, ascending=False).rolling(4).mean())/growth_ROE.rank(axis=1, ascending=False).rolling(4).std()
Z_growth_gross_profit = (growth_gross_profit.rank(axis=1, ascending=False)-growth_gross_profit.rank(axis=1, ascending=False).rolling(4).mean())/growth_gross_profit.rank(axis=1, ascending=False).rolling(4).std()
growth = (Z_growth_GPA + Z_growth_ROA +Z_growth_ROE+Z_growth_gross_profit)/4
close2 = data.get('etl:adj_close')
daily_ret = close2.pct_change()+1
vol = daily_ret.rolling(25).std()
Z_vol = (vol.rank(axis=1, ascending=True) - vol.rank(axis=1, ascending=True).rolling(4).mean())/vol.rank(axis=1, ascending=True).rolling(4).std()
debt_ratio = data.get('fundamental_features:負債比率')
Z_debt_ratio = (debt_ratio.rank(axis=1, ascending=True) - debt_ratio.rank(axis=1, ascending=True).rolling(4).mean())/debt_ratio.rank(axis=1, ascending=True).rolling(4).std()
quick_ratio = data.get('fundamental_features:速動比率')
Z_quick_ratio = (quick_ratio.rank(axis=1, ascending=False)-quick_ratio.rank(axis=1, ascending=False).rolling(4).mean())/quick_ratio.rank(axis=1, ascending=False).rolling(4).std()
safety = (Z_vol + Z_debt_ratio +Z_quick_ratio)/3
quality_score = profitability + growth + safety
資料來源:
Frazzini, A., Kabiller, D., & Pedersen, L. H. (2013). Buffett's alpha (No. w19681). National Bureau of Economic Research.
Novy-Marx, R. (2013). The other side of value: The gross profitability premium. Journal of financial economics, 108(1), 1-28.
Frazzini, A., & Pedersen, L. H. (2014). Betting against beta. Journal of financial economics, 111(1), 1-25.
Mohanram, P. S. (2005). Separating winners from losers among lowbook-to-market stocks using financial statement analysis. Review of accounting studies, 10(2), 133-170.
Ng, C. C. A., & Shen, J. (2020). Quality investing in Asian stock markets. Accounting & Finance, 60(3), 3033-3064.
Asness, C. S., Frazzini, A., & Pedersen, L. H. (2019). Quality minus junk. Review of Accounting Studies, 24(1), 34-112.
Asness, C., Frazzini, A., Israel, R., Moskowitz, T. J., & Pedersen, L. H. (2018). Size matters, if you control your junk. Journal of Financial Economics, 129(3), 479-509.
如果覺得文章不錯,歡迎追蹤我的方格子