Python量化炒股的财务因子选股

Python量化炒股的财务因子选股-财务因子选股

选股是股市投资的第一步,是最基础的一步,也是最重要的一步。

初识财务因子选股

量化选股是利用数量化的方法选择股票组合,期望该股票组合能够获得超越基准收益率的投资行为。总的来说,量化选股可分为两类,分别是基本面选股和技术面选股。

在实际股票投资中,往往利用基本面选出要操作的股票,放入自选股中,然后根据技术面来确定交易的时机,即根据技术判断来确定何时买入、何时加仓、何时减仓、何时全部卖出。

在基本面选股中,最常用的选股方法是财务因子选股。财务因子选股可以进一步分4类,分别是成长类因子选股、规模类因子选股、价值类因子选股和质量因子选股。

成长类因子选股

在Python财务因子量化选股中,成长类因为有6个,分别是营业收入同比增长率、营业收入环比增长率、净利润同比增长率、净利润环比增长率、营业利润率、销售净利率和销售毛利率。

需要注意的是,成长类因子都在财务指标数据表indicator中。

营业收入同比增长率(inc_revenue_year_on_year)选股

营业收入是指在一定时期内,企业销售商品或提供劳务所获得的货币收入,如商业企业的商品销售收入、生产加工企业的产品销售收入、饮食业的饮食品销售收入、服务业的服务收入、仓储企业的仓储收入、运输企业的运费收入、代办运输收入等。营业收入的计算公式如下:

营业收入 = 主营业务收入 + 其他业务收入

或营业收入 = 产品销售量(或服务量)x 产品单价(或服务单价)

主副产品(或不同等级产品)的销售收入应全部计入营业收入,所提供的不同类型服务收入也应计入营业收入。营业收入同比增长率是指企业在一定期间内取得营业收入与其上年同期营业收入的增长的百分比,以反映企业在此期间内营业收入的增长或下降等情况。营业收入同比增长率计算公诉如下:

营业收入同比增长率 = (当期营业收入 - 上期营业收入)➗ 上期营业收入 ✖️ 100%

当期营业收入按使用者的需要可以是月度、季度或年度,也可以是会计年度起始日至会计报表截止日,如2019年1月1日至2019年9月30日等。另外,也可以是分析者采用的年化数据,如2018年10月1日至2019年9月30日。

上期营业收入是指与当期营业收入相对应的上一个年度此期间的营业收入。营业收入同比增长率越大,说明企业当期获得的营业收入相对去年同期增长越大,对企业盈利有正面影响,而营业收入同比增长率为负时,则表明企业营业收入出现下降,应引起企业管理者或投资者的注意。

连续地观察营业收入同比增长率的历史趋势,可以反映出企业的营业收入在不同的会计期间其增长变化的情况,对后期的预测带来一定的帮助。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(indicator).filter(indicator.inc_revenue_year_on_year > 800), date='2024-04-26')
df1

首先导入Pandas包,并设置名为pd,然后调用get_fundamentals()函数获取财务指标数据,返回值dataframe。indicator为财务指标数据表名,查询条件时营业收入同比增长率大于800,即indicator.inc_revenue_year_on_year > 800,时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

显示营业收入同比增长率大于800的所有股票的股票代码和营业收入同比增长率,具体代码如下:

print('营业收入同比增长率大于800的所有股票的股票代码:\n', df1['code'])
print('营业收入同比增长率大于800的所有股票的营业收入同比增长率:\n', df1['inc_revenue_year_on_year'])

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-27 at 21.53.03

显示营业收入同比增长率大于800的股票近10个交易日的收盘价信息,具体代码如下:

df2 = history(10, unit='1d', field='close', security_list=df2['code'],df=True,skip_paused=False,fq='pre')
df2

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-27 at 22.06.35

营业收入环比增长率(inc_revenue_annual)选股

营业收入环比增长率 =(本期营业收入的值 - 上一期营业收入的值)➗上一期营业收入的值✖️100%

需要注意的是,环比增长率是相对于上一期的,而同比增长率是相对于上一年度的同一期的。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyer Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(indicator.code, indicator.inc_revenue_annual).filter(indicator.inc_revenue_annual > 900), date='2024-04-26')
df1

查询条件是营业收入环比增长率大于900,即indicator.inc_revenue_annual > 900,时间为2024年04月26日。需要注意的是,这里只显示了股票代码和股票的营业收入环比增长率。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-27 at 22.19.31

利用图表显示营业收入环比增长率大于900的营业收入环比增长率,具体代码如下:

from matplotlib import pyplot as plt
plt.figure()
plt.plot(df1['inc_revenue_annual'], 'ob')
plt.show()

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-27 at 22.27.27

净利润同比增长率(inc_net_profit_year_on_year)选股

净利润是指企业当期利润总额减去所得税后的金额,即企业的税后利润。净利润是一个企业经营的最终成果。净利润多,企业的经营效益就好;净利润小,企业的经营效益就差。它是衡量一个企业经营效益的主要目标。

净利润同比增长率低计算公式如下:

净利润同比增长率 = (当期净利润 - 上期净利润)➗ 上期净利润低绝对值✖️100%

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df = get_fundamentals(query(indicator).filter(indicator.inc_net_profit_year_on_year > 200, indicator.inc_revenue_year_on_year > 300, indicator.inc_revenue_annual > 300), date='2024-04-26')
df['code']

indicator为财务指标数据表名,查询条件有3个,分别是净利润同比增长率大于200, 营业收入同比增长率大于300,营业收入环比增长率大于300。时间为2024-04-26。这里只显示选出股票的代码。

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 08.53.45

净利润环比增长率(inc_net_profit_annual)选股

净利润环比增长率 = (本期净利润的值 = 上一期净利润的值)➗ 上一期净利润的值的绝对值 ✖️ 100%

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df = get_fundamentals(query(indicator).filter(indicator.inc_net_profit_annual > 600, indicator.inc_revenue_annual > 500), date='2024-04-26')
print('净利润环比增长率大于600, 营业收入环比增长率大于500的股票代码:\n', df['code'])
print('净利润环比增长率大于600,营业收入环比增长率大于500的净利润环比增长率:\n', df['inc_net_profit_annual'])
print('净利润环比增长率大于600, 营业收入环比增长率大于500的营业收入环比增长率:\n', df['inc_revenue_annual'])

indicator为财务指标数据名,查询条件有两个,分别是净利润环比增长率大于600,营业收入环比增长率大于500。时间为2024-04-26。

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 09.10.37

利用图表显示净利润环比增长率大于600,营业收入环比增长率大于500的净利润环比增长率和营业收入环比增长率,具体代码如下:

myc1 = df['inc_net_profit_annual']        # 净利润环比增长率
myc2 = df['inc_revenue_annual']     # 营业收入环比增长率
plt.figure(figsize=(12, 6))
# 激活第一个subplot
plt.subplot(2, 1, 1)
plt.plot(myc1, '-b')        # 净利润环比增长率
plt.subplot(2, 1, 2)
plt.plot(myc2, '-r')        # 营业收入环比增长率
plt.show()

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 09.19.03

营业利润率(operation_profit_to_total_revenue)选股

营业利润率是指经营所得的营业利润占销货净额的百分比,或占投入资本额的百分比,其计算公式如下:

营业利润率 = 营业利润 ➗ 全部业务收入 ✖️ 100%

营业利润率越高,说明企业商品销售额提供的营业利润越多,企业的盈利能力越强。反之,此比率越低,说明企业盈利能力越弱。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df = get_fundamentals(query(indicator).filter(indicator.operation_profit_to_total_revenue > 160), date='2024-04-26')
df

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 09.34.13

显示营业利润大于160的股票的近12个交易日的收盘价信息,具体代码如下:

df2 = history(12, unit='1d', field='close', security_list=df['code'], df=True, skip_paused=False, fq='pre')
df2

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 09.50.46

销售净利率(net_profit_margiin)选股

销售净利润是指企业实现净利润与销售收入的对比关系,用以衡量企业在一定时期的销售收入获取的能力,其计算公式如下:

销售净利润 = 净利润 ➗ 销售收入 ✖️ 100%

销售净利率与净利润成正比关系,与销售收入成反比关系,企业在增加销售收入额的同时,必须相应地获得更多的净利润,才能使销售净利率保持不变或有所提高。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(indicator.code, indicator.net_profit_margin, indicator.operation_profit_to_total_revenue).filter(indicator.net_profit_margin > 100,indicator.operation_profit_to_total_revenue > 120), date='2024-04-26')
df1

indicator为财务指标数据表名,查询条件有两个,分别是销售净利率大于100,营业利润率大于120。时间为2024-04-26。注意:这里显示的是股票代码、销售净利率和营业利润率。单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 10.01.18

利用图表显示销售净利率大于100,营业利润率大于120的销售净利率和营业利润率,具体代码如下:

myc1 = df1['net_profit_margin']            # 销售净利率
myc2 = df1['operation_profit_to_total_revenue']      # 营业利润率
matplotlib.rcParams.update({'font.size': 15, 'font.family': 'serif'})
fig, ax = plt.subplots()
ax.plot(myc1, label='销售净利率')
ax.plot(myc2, label='营业利润率')
ax.legend();
ax.set_title('销售净利率和营业利润率')

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 10.07.17

销售毛利率(gross_profit_margin)选股

销售毛利率是毛利占销售净值的百分比,通常称为毛利率。其中,毛利是销售净收入与产品成本的差,其计算公式如下:

销售毛利率 = (销售净收入 - 产品成本) ➗ 销售净收入 ✖️100%

销售毛利率是上市公司的重要经营指标,能反映公司产品的竞争力和获利潜力。它反映了企业产品销售的初始获利能力,是企业净利润的起点,没有足够高的毛利率便不能形成较大的盈利。与同行业比较,如果公司的毛利率显著高于同行业水平,则说明公司产品附加值高,产品定价高,或与同行业比较公司存在成本上的优势,有竞争力。

与历史比较,如果公司的毛利率显著提高,则可能是公司所在行业处于复苏时期,产品价格大幅上升。在这种情况下投资者需要考虑这种价格的上升是否能持续,公司将来的盈利能力是否有保证。相反,如果公司毛利率显著降低,则可能是公司所在行业竞争激烈,毛利率下降往往伴随着价格战的爆发或成本的失控,这种情况预示产品盈利能力的下降。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(indicator).filter(indicator.gross_profit_margin > 60, indicator.operation_profit_to_total_revenue > 80), date='2024-04-26')
df1['code']

indicator为财务指标数据表名,查询条件有两个,分别是销售毛利率大于60,营业利润率大于80,时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 10.21.21

规模类因子选股

在Python财务因子量化选股中,规模类因子有4个,分别是总市值、流通市值、总股本和流通股本。

需要注意的是,规模类因子都在市值数据表valuation中。

总市值(market_cap)选股

总市值是指在某特定时间内总股本数乘以当时股价得出的股票总市值。沪市所有股票的市值就是沪市总市值。深市所有股票的市值就是深市总市值。总市值用来表示个股权重大小或大盘的规模大小,对股票买卖没有直接作用,但很多时候走强的大多是市值大的个股,由于市值越大在指数中占比的比例越高,庄家往往通过控制这些高市值的股票达到控制大盘的目的。这时候对股票买卖好像又有作用。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation).filter(valuation.market_cap > 12000), date='2024-04-26')
df1

valuation为市值数据表名,查询条件是总市值大于12000亿,时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 10.33.29

显示总市值大于12000亿的股票代码和总市值信息,具体代码如下:

print('总市值大于12000亿的股票代码:\n', df1['code'])
print('总市值大于12000亿的总市值:\n', df1['market_cap'])

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 10.38.19

利用图表显示总市值大于12000亿的总市值信息,具体代码如下:

from matplotlib import pyplot as plt
plt.figure()
plt.plot(df1['market_cap'], 'ob')
plt.show()

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 10.49.30

流通市值(circulating_market_cap)选股

流通市值是指在某特定时间内当时可交易的流通股股数乘以当时股价得出的流通股票总价值。在中国,上市公司的股份结构分为国有股、法人股、个人股等。

目前只有个人股可以上市流通交易。这部分流通等股份总数乘以股票市场价格,就是流通市值。需要注意的是,流通市值要小于等于总市值。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation).filter(valuation.circulating_market_cap > 10000), date='2024-04-26')
df1df2 = history(10, unit='1d', field='close', security_list=df1['code'], df=True, skip_paused=False, fq='pre')
df2

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 11.03.59

显示流通市值大于10000亿的股票的近10个交易日的收盘价信息,具体代码如下:

df2 = history(10, unit='1d', field='close', security_list=df1['code'], df=True, skip_paused=False, fq='pre')
df2

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 12.46.02

利用图表显示流通市值大于10000亿的股票的近10个交易日的收盘价信息,具体代码如下:

from matplotlib import pyplot as plt
matplotlib.rcParams.update({'font.size':12, 'font.family':'serif'})
flg, ax = plt.subplots()
ax.plot(df2['601288.XSHG'], label='农业银行')
ax.plot(df2['601857.XSHG'], label='中国石油')
ax.plot(df2['601398.XSHG'], label='工商银行')
ax.legend();
ax.set_xlabel('三只银行股的日期')
ax.set_ylabel('三只银行股的价格')
ax.set_title('三只银行股的近10个交易日的收盘价走势对比图')

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 12.53.13

总股本(capitalization)选股

总股本是指公司已发行的普通股股份总数(包含A股、B股和H股的总股本)。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation).filter(valuation.capitalization > 10000000, valuation.market_cap > 8000), date='2024-04-24')
df1['code']

valuation为市值数据表名,查询条件是总股本大于10000000万股,总市值大于8000亿。时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 13.02.28

流通股本(circulating_cap)选股

流通股本是指公司已发行的境内上市流通、以人民币兑换的股份总数,即A股市场的流通股本。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation).filter(valuation.circulating_cap > 1000000, valuation.circulating_market_cap > 2000), date='2024-04-26')
df1

valuation为市值数据表名,查询条件有两个,分别是流通股本大于1000000万股,流通市值大于2000亿。时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 13.07.40

利用图表显示流通股本大于1000000万股,流通市值大于2000亿的流通股本和流通市值,具体代码如下:

myc1 = df1['circulating_cap']        # 流通股本
myc2 = df1['circulating_market_cap']  # 流通市值
plt.figure(figsize=(12, 6))
# 激活第一个subplot
plt.subplot(2, 1, 1)
plt.plot(myc1, '-b')       # 流通股本
plt.subplot(2, 1, 2)
plt.plot(myc2, '-r')       # 流通市值
plt.show()

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 13.12.20

价值类因子选股

在Python财务因子量化选股中,价值类因子有5个,分别是市净率、市销率、市现率、动态市盈率和静态市盈率。

需要注意的是,价值类因子也都在市值数据表valuation中。

市净率(pb_ratio)选股

市净率是指每股股价与每股净资产的比率,其计算公式如下:

市净率 = 每股市价➗每股净资产

市净率可用于股票投资分析,一般来说市净率较低的股票,投资价值较高,相反,则投资价值较低。但在判断投资价值时还要考虑当时的市场环境以及公司经营情况、赢利能力等因素。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation.code, valuation.pb_ratio, valuation.market_cap).filter(valuation.pb_ratio < 1.2, valuation.market_cap > 5000), date='2024-04-26')
df1

valuation为市值数据表名, 查询条件有两个,分别是市净率小于1.2,总市值大于5000亿,时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 15.36.36

市销率(ps_ratio)选股

市销率为股票价格与每股销售收入之比,市销率越小,通常被认为投资价值越高,市销率的计算公式如下:

市销率 = 股价➗每股销售额

在基本分析的诸多工具中,市销率是常用的参考指标之一。可以认为,成熟期的企业通常使用市盈率(PE)来估值,而尚未盈利的高成长性企业则使用市销率(PS)来估值更为可靠。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation).filter(valuation.ps_ratio < 0.4,valuation.pb_ratio < 0.8), date='2024-04-26')
df1

valuation为市值数据表名,查询条件有两个,分别是市销率小于0.4,市净率小于0.8。时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 17.27.01

利用图表显示市销率小于0.4,市净率小于0.8的市销率和市净率,具体代码如下:

myc1 = df1['ps_ratio']     # 市销率
myc2 = df1['pb_ratio']     # 市净率
matplotlib.rcParams.update({'font.size': 15, 'font.family':'serif'})
fig, ax = plt.subplots()
ax.plot(myc1, label='市销率')
ax.plot(myc2, label='市净率')
ax.legend();
ax.set_title('市销率和市净率')

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 17.32.53

市现率(pcf_ratio)选股

市现率是股票价格与每股现金流量的比率。市现率可用于评价股票的价格水平和风险水平。市现率越小,表明上市公司的每股现金增加额越多,经营压力越小。对于参与资本运作的投资机构,市现率还意味着其运作资本的增加效率。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation).filter(valuation.pcf_ratio < 0.6,valuation.pb_ratio < 0.5,valuation.ps_ratio < 0.8), date='2024-04-26')
df1['code']

valuation为市值数据表名,查询条件有3个,分别是市现率小于0.6,市净率小于0.5,以及市销率小于0.8。时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 17.40.07

动态市盈率(pe_ratio)选股

动态市盈率(PE)是指还没有真正实现的下一年度的预测利润的市盈率,其计算公式如下:

动态市盈率 = 股票现价 ➗ 未来每股收益的预测值

动态市盈率和市盈率是全球资本市场通用的投资参考指标,用以衡量某一阶段资本市场的投资价值和风险程度,也是资本市场之间用来相互参考与借鉴的重要依据。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation.code, valuation.pe_ratio).filter(valuation.pe_ratio < 6, valuation.pcf_ratio < 0.6, valuation.ps_ratio < 0.4), date='2024-04-26')
df1

valuation为市值数据表名,查询条件有3个,分别是动态市盈率小于6,市现率小于0.5,以及市销率小于0.4。时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 17.49.46

静态市盈率(pe_ratio_lyr)选股

静态市盈率,即市场广泛谈及的市盈率,是用当前每股市场价格除以该公司的每股税后利润,其计算公式如下:

市盈率 = 股票每股市价 ➗ 每股税后利润, 即市盈率 = 股价 ➗ 每股收益

一般来说,市盈率表示该公司需要累积多少年的盈利才能达到如今的市价水平,所以市盈率指标数值越小越好,越小说明投资回收期越短,风险越小,投资价值一般就越高。倍数大则意味着翻本期长,风险大。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

import pandas as pd
df1 = get_fundamentals(query(valuation).filter(
valuation.pe_ratio_lyr > 2, valuation.pe_ratio_lyr < 6),
date='2024-04-26')
df1

valuation为市值数据表名,查询条件是静态市盈率大于2而小于6,即在2~6之间。时间为2024-04-26。

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 18.11.50

利用图表显示静态市盈率大于2而小于6的股票的静态市盈率,具体代码如下:

myc1 = df1['pe_ratio_lyr']      # 静态市盈率
matplotlib.rcParams.update({'font.size': 15, 'font.family': 'serif'})
fig, ax = plt.subplots()
ax.plot(myc1, label='静态市盈率')
ax.legend();
ax.set_title('静态市盈率')

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-28 at 18.15.56

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDF 正确指定页码后,挂载的书签页码对不上

这个问题与我的另一篇中方法一样 如何让一个大几千页的打开巨慢的 PDF 秒开-CSDN博客 https://blog.csdn.net/u013669912/article/details/138166922 另作一篇的原因 一篇文章附带一个与该文章主题不相关的问题时&#xff0c;不利于被遇到该问题的人快速搜索发现以解决其遇到…

数据结构学习/复习1--时间复杂度计算/异或的几个实际用途

一、什么是数据结构和算法 1注&#xff1a;在内存中的存储管理数据 2注&#xff1a;解决问题的方法 二、时间复杂度 1.算法的效率 2.时间复杂度的概念 计算时间复杂度案例1&#xff1a; 计算时间复杂度案例2&#xff1a; 计算时间复杂度案例3&#xff1a; 计算…

问题(十五)性能分析组件类加载问题

一、引言 最近作者在做性能分析服务的agent&#xff0c;有个功能是在代理启动的时候加载配置中心&#xff0c;拿到具体哪些目录下的类需要增强&#xff0c;这里碰到了类加载失败的问题。 二、类加载 1、问题 这里使用了pom的设置&#xff0c;在class文件被拉进去&#xff0c;…

HTML5(1)

目录 一.HTML5(超文本&#xff08;链接&#xff09;标记&#xff08;标签<>&#xff09;语言) 1.开发环境&#xff08;写代码&#xff0c;看效果&#xff09; 2.vscode 使用 3.谷歌浏览器使用 4.标签语法 5.HTML基本骨架&#xff08;网页模板&#xff09; 6.标签的…

Jetson Orin NX L4T35.5.0平台LT6911芯片 调试记录(2)vi discarding frame问题调试

基于上篇调试记录 Jetson Orin NX L4T35.5.0平台LT6911芯片 调试记录(1)MIPI问题调试-CSDN博客 1.前言 当通过gstreamer持续捕获视频设备时,帧数会下降,并且I输入越高,丢失的帧数越多。 当达到4k30hz时,它完全无法使用,系统会在几秒钟的收集后崩溃并重新启动 4k30hz …

【C++】:类和对象(下)

目录 一&#xff0c;再谈构造函数1.初始化列表2. 隐式类型转换的过程及其优化3. 隐式类型转换的使用4. explcit关键字5. 单参数和多参数构造函数的隐式类型转换 二&#xff0c;static成员1.静态成员变量2.静态成员函数 三&#xff0c;友元3.1 友元函数3.2 友元类 四&#xff0c…

Ansys Speos|进行智能手机镜头杂散光分析

本例的目的是研究智能手机Camera系统的杂散光。杂散光是指光向相机传感器不需要的散光光或镜面光&#xff0c;是在光学设计中无意产生的&#xff0c;会降低相机系统的光学性能。 在本例中&#xff0c;光学透镜系统使用Ansys Zemax OpticStudio (ZOS)进行设计&#xff0c;并使用…

LangChain入门2 RAG详解

RAG概述 一个典型的RAG应用程序,它有两个主要组件&#xff1a; 索引&#xff1a;从源中获取数据并对其进行索引的管道。这通常在脱机情况下发生。检索和生成&#xff1a;在运行时接受用户查询&#xff0c;并从索引中检索相关数据&#xff0c;然后将其传递给模型。 从原始数据…

机器学习:深入解析SVM的核心概念【一、间隔与支持向量】

直接阅读原始论文可能有点难和复杂&#xff0c;所以导师直接推荐我阅读周志华的《西瓜书》&#xff01;&#xff01;然后仔细阅读其中的第六章&#xff1a;支持向量机 间隔与支持向量 **问题一&#xff1a;什么叫法向量&#xff1f;为什么是叫法向量**什么是法向量&#xff1f;…

ChatGPT向付费用户推“记忆”功能,可记住用户喜好 | 最新快讯

4月30日消息&#xff0c;人工智能巨头OpenAI宣布&#xff0c;其开发的聊天机器人ChatGPT将在除欧洲和韩国以外的市场全面上线“记忆”功能。这使得聊天机器人能够“记住”ChatGPT Plus付费订阅用户的详细信息&#xff0c;从而提供更个性化的服务。 OpenAI早在今年2月就已经宣布…

AJAX家政系统 自营+多商家(高级授权)+独立端口 -源码下载

应用介绍 后台&#xff1a;https://service.hnajax.com/hxeJVakAdf.php/index/login AJAX家政系统 自营多商家(高级授权)独立端口 基于FastAdmin和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统&#xff0c;用户端、服务端(高级授权)、门店端(高级授权)各端…

HTML:认识HTML及基本语法

目录 1. HTML介绍 2. 关于软件选择和安装 3. HTML的基本语法 1. HTML介绍 HyperText Markup Language 简称HTML&#xff0c;意为&#xff1a;超文本标记语言 超文本&#xff1a;是指页面内可以包含的图片&#xff0c;链接&#xff0c;声音&#xff0c;视频等内容 标记&am…

76、堆-数据流的中位数

思路&#xff1a; 这个问题是动态数据流中位数查找问题。在数据流中&#xff0c;数据是逐个到来的&#xff0c;而我们需要在任何时候快速返回已有数据的中位数。中位数是将数据集分成两个等长的子集&#xff0c;一个包含所有较小的元素而另一个包含所有较大的元素。 为了高效解…

升级 Vite 5 出现警告 The CJS build of Vite‘s Node API is deprecated

错误描述 vue3-element-admin 项目将Vite4 升级至 Vite5 后,项目运行出现如下警告: The CJS build of Vites Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.图片 问题原因 Vite 官方弃用 C…

WIN10 anaconda 安装 CondaError: Run ‘conda init‘ before ‘conda activate‘

1 下载 https://www.anaconda.com/download/success 2 安装 3 修改环境变量 安装后修改环境变量 4 winrun 进入命令窗口 输入cmd 输入 conda info 5 创建 虚拟环境 conda create -n yolov8 python3.8 -y 6 CondaError: Run ‘conda init’ before ‘conda activate’ c…

在Primavera P6 中维护自定义活动栏

前言 自从 Henry Gantt 在 1910 年左右提出这个想法以来&#xff0c;以图形方式显示项目进度表并沿时间刻度显示条形图一直延续到当今最复杂和流行的项目进度系统中。在本文中&#xff0c;我们将仔细研究 Primavera P6 Professional 中的甘特图&#xff0c;并探索一些自定义其…

【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

一、TRTC 初识 TRTC 是什么 TRTC&#xff08;Tencent RTC&#xff09;腾讯实时音视频&#xff0c;源自于 QQ 音视频团队&#xff0c;是基于 QQ 音视频多年来的音视频技术积累&#xff0c;位于腾讯云的 RTC 云服务。TRTC 支持腾讯会议、企业微信直播、微信视频号、腾讯云课堂、…

一个类实现Mybatis的SQL热更新

引言 平时用SpringBootMybatis开发项目&#xff0c;如果项目比较大启动时间很长的话&#xff0c;每次修改Mybatis在Xml中的SQL就需要重启一次。假设项目重启一次需要5分钟&#xff0c;那修改10次SQL就过去了一个小时&#xff0c;成本有点太高了。关键是每次修改完代码之后再重…

FineBI学习:K线图

效果图 底表结构&#xff1a;日期、股票代码、股票名称、开盘价、收盘价、最高价、最低价 步骤&#xff1a; 横轴&#xff1a;日期 纵轴&#xff1a;开盘价、最低价 选择【自定义图表】&#xff0c;或【瀑布图】 新建字段&#xff1a;价差&#xff08;收盘-开盘&#xf…

POETIZE个人博客系统源码 | 最美博客

源码介绍 POETIZE个人博客系统源码 | 最美博客 这是一个 SpringBoot Vue2 Vue3 的产物&#xff0c;支持移动端自适应&#xff0c;配有完备的前台和后台管理功能。 网站分两个模块&#xff1a; 博客系统&#xff1a;具有文章&#xff0c;表白墙&#xff0c;图片墙&#xf…