从资产配置的角度讲,投资A股资产报酬率是多少,作为一种长期资产是否有配置价值,本文将从营业收入增长、净利润增长以及估值方面进行探讨,本文衡量资产报酬率的公式为:
资产报酬率=净利润比市值0.3
成长性指标统计
沪深300统计
年份 |
平均营业收入增长率 |
平均净利润增长率 |
2010 |
36.50% |
36.39% |
2011 |
23.27% |
13.55% |
2012 |
8.45% |
2.25% |
2013 |
8.28% |
13.69% |
2014 |
3.91% |
4.72% |
2015 |
-5.60% |
-4.18% |
2016 |
3.60% |
5.00% |
2017 |
15.68% |
18.90% |
2018 |
12.32% |
9.01% |
2019 |
8.92% |
8.55% |
年份 |
中位数营业收入增长率 |
中位数净利润增长率 |
2010 |
26.88% |
29.76% |
2011 |
17.85% |
5.53% |
2012 |
7.99% |
-5.34% |
2013 |
8.29% |
7.47% |
2014 |
5.20% |
4.37% |
2015 |
1.45% |
0.28% |
2016 |
5.03% |
3.36% |
2017 |
12.96% |
12.76% |
2018 |
9.19% |
6.53% |
2019 |
7.75% |
2.93% |
中证800统计
年份 |
平均营业收入增长率 |
平均净利润增长率 |
2010 |
36.16% |
37.91% |
2011 |
22.47% |
12.75% |
2012 |
8.28% |
1.62% |
2013 |
8.25% |
13.55% |
2014 |
4.11% |
4.85% |
2015 |
-3.16% |
-4.06% |
2016 |
5.86% |
7.85% |
2017 |
16.08% |
20.77% |
2018 |
11.89% |
6.73% |
2019 |
9.22% |
8.23% |
年份 |
中位数营业收入增长率 |
中位数净利润增长率 |
2010 |
24.41% |
23.54% |
2011 |
15.20% |
6.14% |
2012 |
5.08% |
-10.03% |
2013 |
6.58% |
3.76% |
2014 |
3.94% |
2.77% |
2015 |
0.66% |
-3.96% |
2016 |
6.12% |
3.73% |
2017 |
12.71% |
11.82% |
2018 |
7.81% |
3.81% |
2019 |
5.15% |
-2.59% |
净利润比总市值
沪深300
年份 |
净利润比市值平均数 |
净利润比市值中位数 |
2010 |
4.40% |
3.96% |
2011 |
4.76% |
4.41% |
2012 |
4.82% |
5.06% |
2013 |
4.97% |
5.14% |
2014 |
6.06% |
5.03% |
2015 |
2.68% |
3.55% |
2016 |
3.74% |
3.39% |
2017 |
6.14% |
5.09% |
2018 |
5.67% |
5.10% |
2019 |
7.63% |
7.07% |
可以看出2019年沪深300的资本回报率平均数=7.63%*03+8.55%=10.84%,收益水平还是不错的。
中证800
年份 |
净利润比市值平均数 |
净利润比市值中位数 |
2010 |
3.45% |
3.09% |
2011 |
3.33% |
2.89% |
2012 |
3.79% |
3.84% |
2013 |
3.69% |
3.97% |
2014 |
4.21% |
3.51% |
2015 |
1.97% |
2.42% |
2016 |
3.06% |
2.25% |
2017 |
4.74% |
3.17% |
2018 |
3.67% |
3.57% |
2019 |
4.82% |
5.38% |
2019年中证800的平均资本报酬率=4.82%*0.3+8.23%=9.68%。
附录
python code
from WindPy import *
import pandas as pd
import numpy as np
from datetime import datetime
from WindCharts import *
w.start()
hs300_stock_list=w.wset("sectorconstituent", "date=2009-05-02;windcode=000300.SH", usedf=True)
zz800_stock_list=w.wset("sectorconstituent", "date=2009-05-02;windcode=000906.SH", usedf=True)
zz800=list(zz800_stock_list[1]['wind_code'])
hs300=list(hs300_stock_list[1]['wind_code'])
data_df=pd.DataFrame()
for i in range(11):
#统计近十年的营收、净利润增长率及净利润比市值的中位数及平均数
year=2009+i
#选择股票标的的范围
target_stocks=hs300
data_df11=w.wss(target_stocks, "oper_rev,net_profit_is", "rptDate="+str(year)+"1231;rptType=1", usedf=True)[1]
data_df11.rename(columns={'OPER_REV':str(year)+'-营收','NET_PROFIT_IS':str(year)+'-净利润'}, inplace = True)
market_value=w.wss(target_stocks,"ev", "tradeDate="+str(year)+"1231", usedf=True)[1]
market_value.rename(columns={'EV':str(year)+'-市值'}, inplace = True)
data_df=pd.concat([data_df11,market_value,data_df],axis=1)
#输出格式为csdn表格格式,可直接复制生成表格
print('年份|平均数数营业收入增长率|平均数净利润增长率')
print('-------- | -----|-----')
for i in range(10):
year=2009+i
data_df[str(year+1)+'营收增长率']=data_df.apply(lambda x:(x[str(year+1)+'-营收']-x[str(year)+'-营收'])/x[str(year)+'-营收'],axis=1)
data_df[str(year+1)+'净利增长率']=data_df.apply(lambda x:(x[str(year+1)+'-净利润']-x[str(year)+'-净利润'])/x[str(year)+'-净利润'],axis=1)
mean_revenue=data_df[str(year+1)+'营收增长率'].mean()
mean_net_profit=data_df[str(year+1)+'净利增长率'].mean()
print(year+1,'|','%.2f%%'% (mean_revenue*100),'|','%.2f%%' % (mean_net_profit*100))
print('年份|中位数营业收入增长率|中位数净利润增长率')
print('-------- | -----|-----')
for i in range(10):
year=2009+i
data_df[str(year+1)+'营收增长率']=data_df.apply(lambda x:(x[str(year+1)+'-营收']-x[str(year)+'-营收'])/x[str(year)+'-营收'],axis=1)
data_df[str(year+1)+'净利增长率']=data_df.apply(lambda x:(x[str(year+1)+'-净利润']-x[str(year)+'-净利润'])/x[str(year)+'-净利润'],axis=1)
median_revenue=data_df[str(year+1)+'营收增长率'].median()
median_net_profit=data_df[str(year+1)+'净利增长率'].median()
print(year+1,'|','%.2f%%'% (median_revenue*100),'|','%.2f%%' % (median_net_profit*100))
print('年份|净利润比市值平均数|净利润比市值中位数')
print('-------- | -----|-----')
for i in range(10):
year=2009+i
data_df[str(year+1)+'净利润/股价']=data_df.apply(lambda x:(x[str(year+1)+'-净利润']/x[str(year)+'-市值']),axis=1)
mean_ni_ev=data_df[str(year+1)+'净利润/股价'].mean()
median_ni_ev=data_df[str(year+1)+'净利润/股价'].median()
print(year+1,'|','%.2f%%'% (mean_ni_ev*100),'|','%.2f%%' % (median_ni_ev*100))
moser_freshman
原创文章 15获赞 5访问量 8182
关注
私信
展开阅读全文
作者:moser_freshman
利润
a股市场
市值