在投資的世界裡,尋找有效的選股策略一直是投資者追求的目標。最近,我們意外發現一個簡單而有效的修改,就能讓現有因子進行選股時產生很不錯的結果。這篇文章將深入探討這個策略的背後邏輯,並展示如何通過簡單的代碼來實現。
此文章為VIP限定
在投資的世界裡,尋找有效的選股策略一直是投資者追求的目標。最近,我們意外發現一個簡單而有效的修改,就能讓現有因子進行選股時產生很不錯的結果。這篇文章將深入探討這個策略的背後邏輯,並展示如何通過簡單的代碼來實現。
因子選股的基本概念
在進行因子選股時,我們通常會根據一些財務指標來篩選股票。這些指標能夠幫助我們判斷一家公司是否具有投資價值。你可能常常聽到有人說「某檔股票的 EPS 是多少多少耶!股價才多少,這太便宜了!」,基於這樣的想法,我們 提出「xxx/Price」 因子,即任何基本面有關的因子都可以拿來除以 Price 試試看。
本文示範其中幾個,例如:
- 每股盈餘(EPS)
- 股東權益報酬率(ROE)
這兩個關鍵財務指標與股價進行對比,從而挑選出具有潛力的股票。
因子構建的數學邏輯
我們使用每股盈餘(EPS)除以收盤價,以及股東權益報酬率(ROE)除以收盤價來計算因子值。
from finlab import backtest
eps = data.get('financial_statement:每股盈餘')
roe = data.get('fundamental_features:ROE稅後')
eps_per_price = data.get('financial_statement:每股盈餘') / data.get('price:收盤價')
roe_per_price = data.get('fundamental_features:ROE稅後') / data.get('price:收盤價')
這兩個指標的結合有助於我們更全面地評估一隻股票的投資價值。具體的代碼如下:
r = {}
r['eps'] = backtest.sim(eps.is_largest(30), upload=False)
r['eps'].creturn.plot(label='eps')
r['roe'] = backtest.sim(roe.is_largest(30), upload=False)
r['roe'].creturn.plot(label='roe')
r['eps_per_price'] = backtest.sim(eps_per_price.is_largest(30), upload=False)
r['eps_per_price'].creturn.plot(label='better_eps')
r['roe_per_price'] = backtest.sim(roe_per_price.is_largest(30), upload=False)
r['roe_per_price'].creturn.plot(label='better_roe')
import matplotlib.pyplot as plt
plt.legend()
代碼解析
- 計算 EPS/Price 和 ROE/Price:首先,我們從數據庫中提取每股盈餘和 ROE 的數據,並將其分別除以收盤價,得到兩個相對指標。
- 排名計算:接著,我們對這兩個相對指標進行排名,並計算其百分比排名。將這兩個排名相加得到綜合排名。
- 選股策略:根據綜合排名,我們選取排名前 30 的股票作為投資組合。
- 回測:最後,我們對這個選股策略進行回測,驗證其有效性。
驚人的結果
通過上述簡單的策略,我們在回測中取得了顯著的投資回報。這表明 xxx/Price 因子在選股中具有很高的潛力。這一結果不僅證實了因子選股的有效性,也為我們提供了一個簡單而強大的投資工具。
結語
因子選股是一種強大的投資策略,而 xxx/Price 因子的應用更是展現了其驚人的潛力。希望這篇文章能夠幫助投資者理解並應用這一策略,從而在投資中取得更好的成績。如果您對這個策略有任何疑問或想要了解更多,歡迎留言討論。