Python 量化分析

您所在的位置:网站首页 净资产收益率和市盈率的关系是 Python 量化分析

Python 量化分析

2024-07-08 08:21:58| 来源: 网络整理| 查看: 265

摘要

利用Python进行量化分析,AkShare获取股票基本面财务数据。进行基本面数据分析,pe市盈率、ps市销率、pb市净率、总市值等数理统计,以及图表展示。基于莫伦卡选股模型进行编码,对A股300支股票进行模型运行,得到选股参考名单。最大可能基于宏观经济市场环境,进行过滤掉垃圾股,尽可能避开风险股。

Python 量化分析——基本面选股模型

本文源码及数据下载:点击这,谢谢支持

一 环境准备 1 - Anaconda 安装

参考:https://www.toutiao.com/i6825779591861240324/

2 -AkShare 库 安装 pip install akshare -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com  --user  --upgrade

安装完,测试数据获取

#%% ##1- 获取数据-A股 股票市场总貌 import akshare as ak stock_sse_summary_df = ak.stock_sse_summary() print(stock_sse_summary_df) ##运行结果 type        item     number 0   总貌      上市公司/家       1809 1   总貌   总股本/亿股(份)   42721.72 2   总貌      总市值/亿元  473985.92 3   总貌     平均市盈率/倍      17.44 0   总貌      上市股票/只       1852 1   总貌  流通股本/亿股(份)   37871.28 2   总貌     流通市值/亿元  395888.65 0   主板      上市公司/家       1589 1   主板      总股本/亿股   42066.29 2   主板      总市值/亿元  437496.82 3   主板     平均市盈率/倍      16.47 0   主板      上市股票/只       1632 1   主板     流通股本/亿股   37691.25 2   主板     流通市值/亿元  384769.06 0  科创板      上市公司/家        220 1  科创板   总股本/亿股(份)     655.43 2  科创板      总市值/亿元   36489.10 3  科创板     平均市盈率/倍      98.18 0  科创板      上市股票/只        220 1  科创板  流通股本/亿股(份)     180.03 2  科创板     流通市值/亿元   11119.59

其他证券数据获取,参考AkShare数据字典

https://www.akshare.xyz/zh_CN/latest/data/index.html ##1.2- 获取工行2020年全年历史股价 日频率数据 import akshare as ak stock_zh_a_daily_qfq_df = ak.stock_zh_a_daily(symbol="sh601398", start_date="20200101", end_date="20210101", adjust="qfq") print(stock_zh_a_daily_qfq_df) ##输出结果           open  high   low  close       volume  outstanding_share  turnover date                                                                         2020-01-02  5.62  5.73  5.61   5.67  234949397.0       2.696122e+11  0.000871 2020-01-03  5.67  5.72  5.66   5.69  152213047.0       2.696122e+11  0.000565 2020-01-06  5.66  5.75  5.65   5.67  226509705.0       2.696122e+11  0.000840 2020-01-07  5.68  5.74  5.68   5.71  116804353.0       2.696122e+11  0.000433 2020-01-08  5.66  5.67  5.60   5.61  158559090.0       2.696122e+11  0.000588 ...         ...   ...   ...   ...         ...               ...       ... 2020-12-25  4.96  4.97  4.95   4.97  153283872.0       2.696122e+11  0.000569 2020-12-28  4.96  4.97  4.93   4.97  231926812.0       2.696122e+11  0.000860 2020-12-29  4.97  4.98  4.95   4.98  254202319.0       2.696122e+11  0.000943 2020-12-30  4.97  4.98  4.94   4.96  254078489.0       2.696122e+11  0.000942 2020-12-31  4.95  5.01  4.95   4.99  310003990.0       2.696122e+11  0.001150 [243 rows x 7 columns] 二 股票基本面数据

数理统计、数据分析,以数据为基础,对其进行科学地处理、分析,从而做出推断。统计分析,包括描述性统计Descriptive Statistics、推断统计Inferential Statistics。首先我们对数据源进行整理,排序、统计频率、绘制分布图、平均数、中位数等基础书里统计,然后对数据进行整理、归类、简化、绘图。我们目的都是为了从数据中通过统计学方式去发现挖掘其中的特征、规律。

定性数据: 行业、企业信息等,确定性质的描述性数据定量数据:股票收益数据等,确定数量的描述性数据

股票的基本面指对宏观经济、行业和公司基本情况的分析,包括公司经营理念策略、公司报表等的分析。长线投资一般用基本面分析。

四个指标:第一个是市盈率市盈率,第二个是PS市销率,第三个是市净率,第四个是总市值指标

1 -PE市盈率

市盈率 Price Earning Ratio,股价收益比率,公司市值÷股东应占比溢利

Python 量化分析——基本面选股模型

 

市盈率=市值/净利润

解读:一般情况下,一只股票市盈率越低,市价相对于股票的盈利能力越低,表明投资回收期越短,投资风险就越小,股票的投资价值就越大;反之则结论相反。如果一家公司的市盈率超过100倍,那么当前的股价就要通过该公司赚100年的利润才可以收回成本。如果这个比值过高说明该支股票的价值被高估,不过也反映了投资者对这支股票的信任,更加看重其未来的发展前景

那市盈率多少为之正常?这个没有绝对,跟行情、行业有关系,新兴产业一般市盈率比较高,风险也高。

PE-TTM静态市盈率动态市盈率

正方图分布-每个区间的数量级直观观察,频率分布

import akshare as ak import pandas as pd import matplotlib.pyplot as plt stock_a_indicator_df = ak.stock_a_lg_indicator(stock="601398") plt.hist(stock_a_indicator_df.pe)## 市盈率-正方图 plt.hist(stock_a_indicator_df.pe_ttm)## 市盈率-直方图

Python 量化分析——基本面选股模型

 

2 -PS市销率

总市值除以主营业务收入或者股价除以每股销售额。市销率越低,说明该公司股票目前的投资价值越大

曲线图-直观根据时序变化看到数据波动情况

stock_a_indicator_df.set_index('trade_date') plt.plot(stock_a_indicator_df.trade_date,stock_a_indicator_df.ps,c='b')##市销率-曲线图

Python 量化分析——基本面选股模型

 

3- PB市净率

市净率(P/B) = 每股市价/每股账面净资产

解读:每股账面净资产主要取决于公司的运营情况所需要的净资产,是以成本投入来计量的,如果运营业绩出色,则资产增值越快,股票净值就越高

通过变形可以得到:市净率 = 市盈率x净资产收益率

 

4- 总市值

总市值=股票总股本 X 当时每股价格

一是公司的股价高低直接关系到公司的控制权;其二,良好的市值表现有利于降低公司的融资成本;其三,市值体现了企业家的价值和企业经营的成果;其四,市值直接反映上市公司对社会资本的吸纳能力,影响和决定着公司的未来发展。但是也有个别操纵操作虚假的嫌疑,未必能反映真实情况。

4个指标曲线图显示

df =stock_a_indicator_df ax1 = plt.subplot(411) plt.plot(df.trade_date,df.pe)#市盈率 plt.setp(ax1.get_xticklabels(), visible=False) ax2 = plt.subplot(412) plt.plot(df.trade_date,df.ps)#市销率 plt.setp(ax2.get_xticklabels(), visible=False) ax3 = plt.subplot(413) plt.plot(df.trade_date,df.pb)#市净率 plt.setp(ax3.get_xticklabels(), visible=False) ax4 = plt.subplot(414) plt.plot(df.trade_date,df.total_mv)#市总值 plt.show()

Python 量化分析——基本面选股模型

 

5- 其他基面数据

还有其他的基面数据,例如财务指标、分红配股、等等

例如股息率

plt.plot(df.trade_date,df.dv_ratio)#股息率

Python 量化分析——基本面选股模型

 

三 选股-模型:莫伦卡选股 1- 模型指标

莫伦卡提供了一个有效的框架来研究宏观经济和市场环境

指标1:基于历年年报数据,过去5年平均净资产收益率高于14%##指标1 - 过去5年来平均净资产收益率高于14% import akshare as ak df = ak.stock_financial_analysis_indicator(stock="601398")# 工行财报 df1 = df[df.index>'2015-01-01']['净资产收益率(%)'] df1_sum = df1.astype(float).sum(axis = 0, skipna = True) df1_count = df1.count()var1 = (df1_sum / df1_count)>14 print(var1) 指标2:市盈率低于30,且大于0##指标2- 市盈率低于30 并且大于 0 import datetime day = (datetime.datetime.now()- datetime.timedelta(days=30)) dateStart = datetime.datetime(day.year, day.month, day.day, 0, 0, 0)##过去30天的数据 df2 = ak.stock_a_lg_indicator(stock="601398") df2_mean = df2[df2.trade_date >dateStart ].pe.mean() var2 = df2_mean >0 and df2_mean  0 print(var3) 指标4:新期的净利润大于前5年的净利润 #指标4:新期的净利润大于前5年的净利润 import numpy as np var4_1 = float(df3['扣除非经常性损益后的净利润(元)'].iat[1])/ 10000 var4_2 =  df3['扣除非经常性损益后的净利润(元)'].iloc[2:7].astype(np.float).max()/10000 var4 = var4_1 > var4_2 print(var4)

综合指标评估如下:

import pandas as pd varAll = var1 and var2 and var3 and var4 anyData = {'stock':'601398','指标1':var1,'指标1':var1,'指标2':var2,'指标3':var3,'指标4':var4,'是否满足':varAll} df = pd.DataFrame(anyData,index=[0]) df 2- 模型建模

根据指标整合,先获取A股所有股票信息,然后逐个评估分析是否符合模型

## A 股上市公司的实时行情数据 stock_zh_a_spot_df = ak.stock_zh_a_spot() print(stock_zh_a_spot_df) ##取前300测试 ##取前300测试 df_stock = stock_zh_a_spot_df[['code','name']][63:200] anyData = {'stock':'00','name':'name_test','指标1':'var1','指标1':'var1','指标2':'var2','指标3':'var3','指标4':'var4','综合评估':'varAll'} dfResult = pd.DataFrame(anyData,index=[0]) for row_index, row in df_stock.iterrows():    # print(row['code'])    # print(row['name'])    r_code = row['code']    r_name = row['name']            ##指标1 - 过去5年来平均净资产收益率高于14%    df = ak.stock_financial_analysis_indicator(stock=r_code)# 财务指标数据 工行财报    # print(df.head())    df1 = df[df.index>'2015-01-01']['净资产收益率(%)']    df1_sum = df1.replace('--',0).astype(float).sum(axis = 0, skipna = True)    df1_count = df1.count()    var1 = (df1_sum / df1_count)>14        ##指标2- 市盈率低于30 并且大于 0    day = (datetime.datetime.now()- datetime.timedelta(days=30))    dateStart = datetime.datetime(day.year, day.month, day.day, 0, 0, 0)##过去30天的数据    df2 = ak.stock_a_lg_indicator(stock="601398")    df2_mean = df2[df2.trade_date >dateStart ].pe.mean()    var2 = df2_mean >0 and df2_mean < 30    #指标3:经营现金流为正      df3 = df#财务指标数据    var3 = float( df3['每股经营性现金流(元)'].iat[1] ) > 0    # print(var3)    #指标4:新期的净利润大于前5年的净利润 取万元    var4_1 = float(df3['扣除非经常性损益后的净利润(元)'].iat[1])/ 10000    var4_2 =  df3['扣除非经常性损益后的净利润(元)'].iloc[2:8].astype(np.float).max()/10000    var4 = var4_1 > var4_2    ##综合评估    varAll = var1 and var2 and var3 and var4    if varAll == True:        print(row)    anyData = {'stock':r_code,'name':r_name,'指标1':var1,'指标1':var1,'指标2':var2,'指标3':var3,'指标4':var4,'综合评估':varAll}    df_idex = row_index+1    dfResult.loc[df_idex] = anyData    print(dfResult)    time.sleep(7)    

运行过程:

3 运行模型结果

Python 量化分析——基本面选股模型

 

结果如下:

Python 量化分析——基本面选股模型

 

完整结果《莫伦卡选股结果数据集.csv》以及本文所有过程源码,点击这,谢谢支持,或者关注公众号: freo-studio,回复“莫伦卡选股”获取,谢谢!

 

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭