搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?

前言

前几期我们搭建了自定义的量化行情/选股/回测框架:

搭建系统|升级基于财务数据的选股工具!从清单中剔除ST股和次新股

搭建系统|“财务数据选股工具”如何与“多维度股票行情分析工具”完成无缝切换

搭建系统|升级基于财务数据的选股工具!添加上日历和排序功能会更好用

搭建系统|不用数据库选股也行!利用Pandas特性的GUI版基本面选股工具

搭建系统|听说backtrader很不错!把它集成到本地GUI回测平台中!

搭建系统|在线改策略很便捷!试一试本地GUI回测平台动态改策略

搭建系统|多维度下不同股票|周期|除权|复权走势对比界面

搭建系统|行情软件可没有!多股票投资组合用的GUI分析界面

搭建系统|想把聚宽本地化吗?一起来创建GUI版的自定义量化回测平台

搭建系统|wxPython布局管理实现多只股票走势对比界面

搭建系统|比Matplotlib更好用的pyecharts打造GUI股票行情分析界面

前几期我们搭建的基本面选股小工具是用了tushare的两个接口组合而成,一个是pro.stock_basic(),另一个是pro.daily_basic()。

我一直强调炒股软件应该是每个人用的都不一样,即使是通用的行情软件,每个人的选择也都不同,有的喜欢同花顺、有的喜欢通达信,看行情时图表的组合也都不一样。

所以,我分享的选股小工具,是提供给大家一个思路,而不是让大家都一成不变的去使用。

本期我们要介绍的是如何更换财务数据源,让小工具为大家所用。

实现过程概述

首先,本次代码的更改是基于price_and_pick_upv1.py(公众号对应介绍)这个文件开展的,大家可以利用Pycharm的代码比较功能查看更改的地方。

此处,我们把PickFrame类中涉及到财务数据部分给提取出来了,用单独的类封装,比如Tspro_Backend类,其中包含了财务指标的种类self.tran_col、条件选股类别self.filter,还有财务数据表的处理方法datafame_join()

然后以组合方式添加到PickFrame类中。

# 组合加入tushare数据

self.ts_data = Tspro_Backend()

self.filter = self.ts_data.filter

self.tran_col = self.ts_data.tran_col


self.datafame_join = self.ts_data.datafame_join

于是我们就能够独立地更换下财务数据。

我们选取tushare无需积分的org版本的get_stock_basics、get_report_data接口结合pro的pro.stock_basic(该接口是必须的,以它为A股市场的股票名称和代码的基准)来制作财务数据表。

get_stock_basics包含的指标有:

  • code,代码

  • name,名称

  • industry,所属行业

  • area,地区

  • pe,市盈率

  • outstanding,流通股本(亿)

  • totals,总股本(亿)

  • totalAssets,总资产(万)

  • liquidAssets,流动资产

  • fixedAssets,固定资产

  • reserved,公积金

  • reservedPerShare,每股公积金

  • esp,每股收益

  • bvps,每股净资

  • pb,市净率

  • timeToMarket,上市日期

  • undp,未分利润

  • perundp,每股未分配

  • rev,收入同比(%)

  • profit,利润同比(%)

  • gpr,毛利率(%)

  • npr,净利润率(%)

  • holders,股东人数

get_report_data包含的指标有(这个接口是按年度、季度获取业绩报表数据。数据获取需要一定的时间。需要输入年度和季度,要注意最新的报表发布时间):

  • code,代码

  • name,名称

  • esp,每股收益

  • eps_yoy,每股收益同比(%)

  • bvps,每股净资产

  • roe,净资产收益率(%)

  • epcf,每股现金流量(元)

  • net_profits,净利润(万元)

  • profits_yoy,净利润同比(%)

  • distrib,分配方案

  • report_date,发布日期

我们会发现这几个接口中很多的类别是重复的,而且名称还不一样。这里我们用的是merge()方法,知识星球中有一个相应的数据处理场景可以参考。

搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?_第1张图片

我们发现有些列是重复的,因此在合并的时候要删除重复列。

比如区域和行业,两个表格的列名是相同的,在merge()合并的时候给它加了后缀,所以找不到预定义的名称。

搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?_第2张图片

比如上市日期和代码,两个表格的列名不相同,但内容相同,在merge()合并的时候会出现两列。

搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?_第3张图片

把有问题的列处理完成后,发现表格的行存在重复的股票。

搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?_第4张图片

在datafame_join方法中,我们连续使用了两次merge(),pd.merge(df_stbasic, df_dybasic,……)的结果是这样的,完全正确。

搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?_第5张图片

但是合并上这个表格(df_rpbasic)后就会出现行重复。

搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?_第6张图片

一种比较简单粗暴的方法是使用drop_duplicates去掉name列重复的行,并保留重复出现的行中第一次出现的行。

搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?_第7张图片

建立了自己的财务数据表格后,剩下的条件判断机制并不需要更改。所以,大家可以把各种平时分析的数据,比如盈利能力、运营能力等等合并到表格中来。

往期视频效果 

加入知识星球 可获取完整代码

更多量化交易内容扫码加入星球!—————————————————元宵大师的量化交易书籍开售!!京东、当当、天猫有售!!加我QQ或者微信了解详情
微信关注:‘元宵大师带你用Python量化交易’

你可能感兴趣的:(搭建系统|说好了个性化的选股工具!教你定制自己的选股财务数据表?)