前言
前几期我们搭建了自定义的量化行情/选股/回测框架:
搭建系统|升级基于财务数据的选股工具!从清单中剔除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()方法,知识星球中有一个相应的数据处理场景可以参考。
我们发现有些列是重复的,因此在合并的时候要删除重复列。
比如区域和行业,两个表格的列名是相同的,在merge()合并的时候给它加了后缀,所以找不到预定义的名称。
比如上市日期和代码,两个表格的列名不相同,但内容相同,在merge()合并的时候会出现两列。
把有问题的列处理完成后,发现表格的行存在重复的股票。
在datafame_join方法中,我们连续使用了两次merge(),pd.merge(df_stbasic, df_dybasic,……)的结果是这样的,完全正确。
但是合并上这个表格(df_rpbasic)后就会出现行重复。
一种比较简单粗暴的方法是使用drop_duplicates去掉name列重复的行,并保留重复出现的行中第一次出现的行。
建立了自己的财务数据表格后,剩下的条件判断机制并不需要更改。所以,大家可以把各种平时分析的数据,比如盈利能力、运营能力等等合并到表格中来。
往期视频效果
加入知识星球 可获取完整代码
更多量化交易内容扫码加入星球!—————————————————元宵大师的量化交易书籍开售!!京东、当当、天猫有售!!加我QQ或者微信了解详情
微信关注:‘元宵大师带你用Python量化交易’