量化因子(二)如何通过量化因子来选股(附代码)
发布时间:2025-7-15 13:42阅读:423
选股是一件难事,整个A股市场,有几千只股票。光是一眼看过去密密麻麻的数据,就让人头晕眼花,更别说一个一个去分析它们的数据了。量化如何选股呢?
一、确定股票池
大家都知道几个名词:“沪深300”“上证50”“中证100”“中证200”“中证500”等。这些名词代表的是“指数”,举例来说明:“沪深300”指的就是从上海证券交易所和深圳证券交易所挑选出经营状况良好、规模庞大且流动性非常高的300只股票组成的指数;而“上证50”是上海证券交易所中规模较大、流动性较高的50只股票组成的指数;“中证500”则是在沪深两市中,选出市值较高的800只股票,再把“沪深 300”中的股票剔除出去,余下的500只股票组成的指数。
在所有这些指数中,一般认为“沪深300”“上证50”“中证500”这3个最能体现市场的情况。简单来说,“沪深 300”体现的是“大盘股”的走势,“上证50”体现的是“大盘股”的走势情况,而“中证500”体现的是“中小盘股”的整体走势。这3个指数没有“好”和“不好”的区别,只是风格不同。大家可以想象一下,对于市值庞大的“超大盘股”来说,要想让它们暴涨或者暴跌,那难度堪比把大象抛到月球上,需要极大的“动能”才行;而“大盘股”的体量也不小,它们的价格波动幅度也不会太大;“中证500”虽然代表“中小盘股”的走势,但由于A股市场经过了这么多年的发展,这些所谓的“中小盘股”的体量也要比创业板、中小板这些板块上的股票大得多,它们的涨跌幅度也只是相对“大盘股”和“超大盘股”来说稍微大一些而已。
我司上市券商,佣金成本价,专项两融利率4.0,免费提供量化软件qmt和ptrade,欢迎咨询!!!
量化新手建议是先“稳中求进”,选择“沪深300”成分股作为选股的“股票池”,并结合量化选股因子,找到其中财务状况最好、发展前景最好的企业的股票,作为未来的投资标的。
二、获取沪深两市的全部指数
为了让没有量化软件的朋友好实践,还是用聚宽去尝试。
大家可以根据自己使用的量化软件的api去修改哦。
# 导入聚宽因子库的 get_factor_values 函数from jqfactor import get_factor_values# 导入 pandasimport pandas as pd# 在聚宽环境中运行# 指定 get_all_securities 的 types 参数为 'index'# 查询全部指数indices = get_all_securities(types=['index'])# 查看前十条结果print(indices.head(10))
运行结果:
为了方便展示,我们只选择了其中10条。表中的第一列是指数代码,后面分别是指数的中文名称、简称、上市日期、退市日期和证券类型。对于目前仍然存在的指数,退市日期统一用 2200-01-01表示。
三、获取股票的市值因子
下面我们就来获取沪深300成分股的数据,如果我们想获取这些股票的市值数据,就可以用下面的代码。
# 导入聚宽的因子分析库from jqfactor import get_factor_values# 使用 get_index_stocks 函数获取沪深300成分股# 使用 get_factor_values 函数获取这些成分股的市值# 注意:get_index_stocks 和 get_factor_values 都是聚宽提供的函数,需要在聚宽环境中运行factor_mc = get_factor_values(securities=get_index_stocks('000300.XSHG'), # 获取沪深300成分股factors=['market_cap'], # 获取市值因子end_date='2025-06-08', # 结束日期count=1 # 获取最近1天的数据)['market_cap']# 检查结果# 使用 .T 将原始结果进行转置(行变列,列变行)print(factor_mc.T.head())
运行结果:
这里的市值是科学计数法,如2.270492e+11,代表2.270492×10^11。
我们可以得到“沪深300”成分股在2025年6月6日的市值。
四、获取股票的现金流因子
除了关心股票的整体市值之外,我们还想了解企业的现金流与股价的对比情况,也就是“市现率”这个指标的情况。毕竟经济大环境不好的话,充足的现金流才是保证企业生存发展的前提。因此,我们来获取一下股票市现率的倒数(因为市现率越小越好,因此其倒数越大越好)。输入代码如下:
# 导入聚宽的因子分析库from jqfactor import get_factor_values# 使用 get_index_stocks 函数获取沪深300成分股# 使用 get_factor_values 函数获取这些成分股的市现率倒数(Cash Flow to Price Ratio)factor_cfp = get_factor_values(securities=get_index_stocks('000300.XSHG'),factors=['cash_flow_to_price_ratio'],end_date='2025-06-08',count=1)['cash_flow_to_price_ratio']# 检查结果# 使用 .T 将原始结果进行转置(行变列,列变行)print(factor_cfp.T.head(5))
 实现率为负说明公司资金流出,正数说明资金正流入。
实现率为负说明公司资金流出,正数说明资金正流入。
五、获取股票的净利率因子
既然我们了解了企业的现金流情况,那么接下来我们就要看看这些企业究竟是盈利还是亏损。如果盈利,那么净利润率又是多少呢?我们就继续来查询这些股票的净利润率数据。输入代码如下:
# 导入聚宽的因子分析库from jqfactor import get_factor_values# 使用 get_index_stocks 函数获取沪深300成分股# 使用 get_factor_values 函数获取这些成分股的净利润率(Net Profit Ratio)factor_npr = get_factor_values(securities=get_index_stocks('000300.XSHG'), # 获取沪深300成分股factors=['net_profit_ratio'], # 获取净利润率因子end_date='2025-06-08', # 结束日期count=1 # 获取最近1天的数据)['net_profit_ratio']# 检查结果# 使用 .T 将原始结果进行转置(行变列,列变行)print(factor_npr.T.head())

000157的净利润率还是比较不错的,约为9.83%,而 000001这只股票的净利润率更是达到了30.8%左右,是一个很不错的数据。
六、获取股票的净利润增长率因子
对企业来说,盈利固然重要,比盈利更重要的是,能够持续不断地创造更多的利润。也就是说,企业需要有良好的成长性。衡量成长性的一个重要指标就是净利润的增长率。下面我们就来获取“沪深300”成分股的净利润增长率数据。输入代码如下:
# 导入聚宽的因子分析库
from jqfactor import get_factor_values# 使用 get_index_stocks 函数获取沪深300成分股# 使用 get_factor_values 函数获取这些成分股的净利润增长率(Net Profit Growth Rate)factor_npgr = get_factor_values(securities=get_index_stocks('000300.XSHG'), # 获取沪深300成分股factors=['net_profit_growth_rate'], # 获取净利润增长率因子end_date='2025-06-09', # 结束日期count=1 # 获取最近1天的数据)['net_profit_growth_rate']# 检查结果# 使用 .T 将原始结果进行转置(行变列,列变行)print(factor_npgr.T.head())
 000157的净利率增长率还是很好的。
000157的净利率增长率还是很好的。
温馨提示:投资有风险,选择需谨慎。
 什么是量化多因子选股?有用吗?
                                        什么是量化多因子选股?有用吗?
                                        - 
                                    中信证券现在可以买黄金吗?有人知道吗?
                                     2025-10-27 09:17 2025-10-27 09:17
- 
                                    刚出!十五五目标藏4大投资机会,券商都在盯
                                     2025-10-27 09:17 2025-10-27 09:17
- 
                                    未来产业AI如何投资?20+人工智能ETF排名来啦~
                                     2025-10-27 09:17 2025-10-27 09:17

 
                        
 
                 
                                                             
                                                                                                         
                             问一问
问一问 
                                     当前我在线
当前我在线
                                     
      
       
         18780236641
18780236641      
 分享该文章
分享该文章
                     5128
5128 
                                 
                            
 
                     
                     
                     
                     
                     
                     
   
                        