python获取所有上市公司的加权净资产收益率

文章目录

  • 前言
  • 环境配置
  • 脚本代码
  • 一些新的想法

前言

加权净资产收益率算是基本面中非常重要的一个指标,但是大多数的看板都需要一支支股票在基本资料中翻找,特别麻烦,所以就有了这个获取所有上市公司的加权净资产收益率的想法。
最后得到的样子:
python获取所有上市公司的加权净资产收益率_第1张图片

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的格式,继而通过股票行业(医疗器械等)进行筛选与排序,可以更加方便的找到在行业中加权净资产收益率较优的股票。
个人理解(我是小白,可讨论,勿杠)加权净资产收益率高的股票,若是有在高位跌落的情况,且同行业同时期没有一起跌落,那么这只股票便值得选购,很可能就是牛股。后续也可能会出一期关于如何找牛股的股票模型,咕咕。

本文仅用于表达本人经常错误的观点,不构成任何建议。

你可能感兴趣的:(python,金融,pandas,jupyter)