加权净资产收益率算是基本面中非常重要的一个指标,但是大多数的看板都需要一支支股票在基本资料中翻找,特别麻烦,所以就有了这个获取所有上市公司的加权净资产收益率的想法。
环境配置
本文为了让初次接触量化,或是使用python辅助炒股的小白看的更明白一些,就从环境配置开始吧。安装Anaconda,这个可以自行csdnAnaconda安装教程打开Anaconda附带的jupyternotebook,新建一个Python3的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的格式,继而通过股票行业进行筛选与排序,可以更加方便的找到在行业中加权净资产收益率较优的股票。个人理解加权净资产收益率高的股票,若是有在高位跌落的情况,且同行业同时期没有一起跌落,那么这只股票便值得选购,很可能就是牛股。后续也可能会出一期关于如何找牛股的股票模型,咕咕。
文章为作者独立观点,不代表股票交易接口观点