前言
加权净资产收益率算是基本面中非常重要的一个指标,但是大多数的看板都需要一支支股票在基本资料中翻找,特别麻烦,所以就有了这个获取所有上市公司的加权净资产收益率的想法。
最后得到的样子:
tushare_id:492845
环境配置
本文为了让初次接触量化,或是使用python辅助炒股的小白看的更明白一些,就从环境配置开始吧。
1.安装Anaconda,这个可以自行csdn Anaconda安装教程
2.打开Anaconda附带的jupyter notebook,新建(new)一个Python 3的Notebook,输入以下代码安装第三方库,接下来复制代码就可以正常使用本脚本啦。
%pip install numpy
%pip install pandas
%pip install tushare
这个获取加权净资产收益率的脚本,主要就是依靠tushare实现的,大家也可以自行阅读tushare官网的数据接口部分,可以便捷的开发更多辅助炒股的脚本。
脚本代码
import tushare as ts
import numpy as np
import pandas as pd
from datetime import datetime
from time import sleep
def get_nowdate():
nowdate = str(datetime.date(datetime.now()))
nowdate = nowdate.split('-')
nowdate = nowdate[0]+nowdate[1]+nowdate[2]
pastdate = str(datetime.date(datetime.now()))
pastdate = pastdate.split('-')
pastdate = str(int(pastdate[0])-2)+pastdate[1]+pastdate[2]
# pastdate = (nowdate[0]-1)+nowdate[1]+nowdate[2]
return pastdate,nowdate
def get_stock():
pro = ts.pro_api('your token')
df = pro.stock_basic(exchange='', list_status='L')
df = df[['ts_code', 'name', 'area', 'industry', 'market']]
# (4832, 5)
return df
def get_roe(ts_code):
pro = ts.pro_api('your token')
df = pro.fina_indicator(ts_code = ts_code, start_date='20180101')
df = df[['roe_waa','end_date']]
df.drop_duplicates(subset=['end_date'],keep='first',inplace=True)
d = pd.DataFrame()
# print(type(ts_code))
d['ts_code'] = pd.Series(ts_code, dtype='object')
d['20221231'] = pd.Series(df[df['end_date']=='20221231']['roe_waa'].values)
d['20220930'] = pd.Series(df[df['end_date']=='20220930']['roe_waa'].values)
d['20220630'] = pd.Series(df[df['end_date']=='20220630']['roe_waa'].values)
d['20220331'] = pd.Series(df[df['end_date']=='20220331']['roe_waa'].values)
d['20211231'] = pd.Series(df[df['end_date']=='20211231']['roe_waa'].values)
d['20210930'] = pd.Series(df[df['end_date']=='20210930']['roe_waa'].values)
d['20210630'] = pd.Series(df[df['end_date']=='20210630']['roe_waa'].values)
d['20210331'] = pd.Series(df[df['end_date']=='20210331']['roe_waa'].values)
d['20201231'] = pd.Series(df[df['end_date']=='20201231']['roe_waa'].values)
d['20200930'] = pd.Series(df[df['end_date']=='20200930']['roe_waa'].values)
d['20200630'] = pd.Series(df[df['end_date']=='20200630']['roe_waa'].values)
d['20200331'] = pd.Series(df[df['end_date']=='20200331']['roe_waa'].values)
d['20191231'] = pd.Series(df[df['end_date']=='20191231']['roe_waa'].values)
d['20190930'] = pd.Series(df[df['end_date']=='20190930']['roe_waa'].values)
d['20190630'] = pd.Series(df[df['end_date']=='20190630']['roe_waa'].values)
d['20190331'] = pd.Series(df[df['end_date']=='20190331']['roe_waa'].values)
d['20181231'] = pd.Series(df[df['end_date']=='20181231']['roe_waa'].values)
d['20180930'] = pd.Series(df[df['end_date']=='20180930']['roe_waa'].values)
d['20180630'] = pd.Series(df[df['end_date']=='20180630']['roe_waa'].values)
d['20180331'] = pd.Series(df[df['end_date']=='20180331']['roe_waa'].values)
return d
df = get_stock()
# 'ts_code', 'name', 'area', 'industry', 'market'
data = pd.DataFrame()
for i in df['ts_code']:
data = pd.concat([data,get_roe(i)])
print(i)
sleep(1)
dd = pd.merge(df,data,how='outer',on='ts_code')
dd.to_csv('加权净资产收益率')
一些新的想法
根据以上脚本获取csv格式的所有上市公司加权净资产收益率,大多朋友应该比较熟悉execl,可以把csv保存为execl的格式,继而通过股票行业(医疗器械等)进行筛选与排序,可以更加方便的找到在行业中加权净资产收益率较优的股票。
个人理解(我是小白,可讨论,勿杠)加权净资产收益率高的股票,若是有在高位跌落的情况,且同行业同时期没有一起跌落,那么这只股票便值得选购,很可能就是牛股。后续也可能会出一期关于如何找牛股的股票模型,咕咕。
本文仅用于表达本人经常错误的观点,不构成任何建议。