概述
ID:409407
前段时间有个大佬让我帮忙用程序去找找看3季度股东数减少20%以上的个股名单,外加上条件营收、利润同比增加30%以上,看到几个条件的时间我就觉得选出来的票应该是不错的,股东数减少说明筹码更集中,同时业绩又有不错的增长,这样就很方便主力以业绩为借口拉升股价。话不多说开整。
目录
1、数据来源
2、代码实现
1、数据来源
本次的数据均来自tushare,这个第三方库提供了大量有关于金融方面的数据(包括但不限于股票、基金),有需要的小伙伴也可以注册一下。
https://tushare.pro/register?reg=409407
拿到密钥就可以请求数据了
官网:https://waditu.com/
获取本次数据的两个接口分别是stk_holdernumber(股东人数)、income(利润表)
基本使用
stk_holdernumber():
import tushare as ts
ts.set_token('密钥')
pro = ts.pro_api()
ts_code = '000001.SZ'
stk_holder_data = pro.stk_holdernumber(ts_code=ts_code, start_date='20210101', end_date='20211031')
print(stk_holder_data)
运行结果:
ann_date为公布日期,end_date为数据截至日期
income()
import tushare as ts
ts.set_token('密钥')
pro = ts.pro_api()
ts_code = '000001.SZ'
df = pro.income(ts_code=ts_code, start_date='20200901', end_date='20211030',
fields='ts_code,end_date,revenue,n_income_attr_p')
print(df)
运行结果:
具体的参数介绍可以查看官方文档。
2、代码实现
首先需要收集A股中所有的股票代码,这个可以看股票数据的获取,股票代码获取完后还需要判断该股票代码是上交所还是深交所,因为使用tushare传入代码需要标明(上交所SH,深交所SZ)。上交所的都是以6开头,深交所是以0、3开头的。
代码:
if stock_code[0] == '3' or stock_code[0] == '0':
stock_code += '.SZ'
else:
stock_code += '.SH'
有了上一步处理完的股票代码直接传入接口就可以轻松获取股东人数、利润、营收等数据了,注意股东人数为环比,利润、营收为同比。
股东人数增长率:
stk_holder_data = pro.stk_holdernumber(ts_code=ts_code, start_date='20210101', end_date='20211031')
stk_holder = json.loads(stk_holder_data.to_json(orient='records'))[:2]
print(stk_holder)
holder_num_0 = stk_holder[0]['holder_num'] # 最新人数
holder_num_1 = stk_holder[1]['holder_num'] # 前一期人数
recently_date = stk_holder[0]['end_date']
holder_increase = round((holder_num_0 - holder_num_1) * 100 / holder_num_1, 2)
print(f'股东人数环比新增:{holder_increase}%')
既然股东人数是计算环比那开始日期定为1月1号好了,其实定为6月30号就可以了,但是我怕数据会少,获取完数据后选取前两条即可,因为我们只对比最新两期的人数对比
利润、营收是同一个接口
finance_data = []
df = pro.income(ts_code=ts_code, start_date='20200901', end_date='20211030',
fields='ts_code,end_date,revenue,n_income_attr_p')
temp = json.loads(df.to_json(orient='records'))
# 去重处理
for i in temp:
if i not in finance_data:
finance_data.append(i)
if len(finance_data) == 5:
new_profit = finance_data[0]['n_income_attr_p']
last_profit = finance_data[-1]['n_income_attr_p']
profit_increase = round((new_profit - last_profit) * 100 / last_profit, 2)
print(f'利润同比增长:{profit_increase}%')
# 营收-同比
new_revenue = finance_data[0]['revenue']
last_revenue = finance_data[-1]['revenue']
revenuw_increase = round((new_revenue - last_revenue) * 100 / last_revenue, 2)
print(f'营收同比增长:{revenuw_increase}%')
这里的开始日期需要改为20200901,同比嘛所以需要去年第三季度的数据,这里有一个特殊的点,因为有些是新股可能没法进行同比的计算,这里就设置只选取拥有5个季度的股票数据。
这个利润表接口有点问题会有重复的数据,所以需要进行去重处理。
到这里基本就结束了,我们只需要在存入数据的时候做一个判断就好了
if holder_increase <= -20 and profit_increase >= 30 and revenuw_increase >= 30:
file_nmae = '筹码集中度'
if temp == 0:
save_data(data=data, file_name=file_nmae)
else:
save_data(data=data, file_name=file_nmae, header=False)
筛选出的个股我就不展示了,大家有兴趣的话可以以这几个条件进行筛选看看。
最后
以上就是等待帆布鞋为你收集整理的三季报分析的全部内容,希望文章能够帮你解决三季报分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复