目录
- 0. 承前
- 1. 简述:三大利润率指标对比
- 2. 比喻:三大指标对比
- 2.1 简单对比
- 2.2 生动比喻
- 2.3 区别要点
- 3. 实际应用
- 3.1 选择建议
- 4. 总结
- 5. 实现代码
0. 承前
如果想更加全面清晰地了解金融资产组合模型进化论的体系架构,可参考:
0. 金融资产组合模型进化全图鉴
1. 简述:三大利润率指标对比
- 描述毛利率含义:衡量冰淇淋店扣除基础材料成本后的赚钱能力。链接
- 描述营业利润率含义:衡量冰淇淋店扣除日常经营支出后的赚钱能力。链接
- 描述净利率含义:衡量冰淇淋店最终真实到手的赚钱能力。链接
2. 比喻:三大指标对比
2.1 简单对比
- 毛利率关注"材料成本后剩多少"
小明卖一个冰淇淋:
售价:10元
材料成本:4元(牛奶2元+奶油1元+水果1元)
毛利率 = (10元 - 4元) ÷ 10元 = 60%
含义:每卖10元,扣除材料后能剩6元
- 营业利润率关注"日常开销后剩多少"
小明卖一个冰淇淋:
售价:10元
材料成本:4元
日常开销:4元(房租1元+水电1元+工资2元)
营业利润率 = (10元 - 4元 - 4元) ÷ 10元 = 20%
含义:每卖10元,付完日常开销能剩2元
- 净利率关注"最后真正剩多少"
小明卖一个冰淇淋:
售价:10元
材料成本:4元
日常开销:4元
其他支出:1元(税收0.5元+利息0.5元)
净利率 = (10元 - 4元 - 4元 - 1元) ÷ 10元 = 10%
含义:每卖10元,最后能存进储蓄罐1元
2.2 生动比喻
- 毛利率就像问:
"做一个冰淇淋能剩多少?"
- 只减材料成本
- 不算其他支出
- 看最基础赚钱能力
- 营业利润率就像问:
"开店一天能剩多少?"
- 减去日常开销
- 算上人工水电
- 看实际经营能力
- 净利率就像问:
"最后能存多少钱?"
- 减去所有支出
- 包括税费利息
- 看真实赚钱能力
2.3 区别要点
- 主要区别
毛利率:
- 只看材料成本
- 不管其他支出
- 适合看产品赚钱能力
营业利润率:
- 看日常经营支出
- 包括人工水电
- 适合看经营赚钱能力
净利率:
- 看所有支出费用
- 包括税费利息
- 适合看最终赚钱能力
3. 实际应用
3.1 选择建议
看产品定价用毛利率:
- 像看配料表成本
- 关注基础赚钱空间
- 适合产品经理视角
看经营效果用营业利润率:
- 像看店铺日常开销
- 关注实际经营效果
- 适合店长视角
看最终效益用净利率:
- 像看储蓄罐存款
- 关注真实赚钱能力
- 适合老板视角
4. 总结
关注点:
- 毛利率看"材料成本后剩多少"
- 营业利润率看"日常开销后剩多少"
- 净利率看"最后真正能存多少"
就像卖冰淇淋:
- 毛利率是刚做完冰淇淋时的喜悦
- 营业利润率是付完店铺开销后的现实
- 净利率是最后存进储蓄罐的真相
5. 实现代码
import tushare as ts
def get_gross_profit_margin(ts_code, start_date=None, end_date=None):
"""
获取上市公司毛利率数据
参数:
ts_code (str): 股票代码(如:'600000.SH')
start_date (str): 开始日期(如:'20200101')
end_date (str): 结束日期(如:'20231231')
返回:
pandas.DataFrame: 包含日期和毛利率的数据框
"""
try:
# 初始化pro接口
pro = ts.pro_api()
# 构建查询参数
params = {'ts_code': ts_code}
if start_date:
params['start_date'] = start_date
if end_date:
params['end_date'] = end_date
# 获取财务指标数据
df = pro.fina_indicator(**params)
# 选择需要的字段并排序
result = df[['end_date', 'grossprofit_margin']].sort_values('end_date', ascending=False)
return result
except Exception as e:
print(f"获取数据时发生错误: {str(e)}")
return None
def get_operating_profit_margin(ts_code, start_date=None, end_date=None):
"""
获取上市公司营业利润率数据
参数:
ts_code (str): 股票代码(如:'600000.SH')
start_date (str): 开始日期(如:'20200101')
end_date (str): 结束日期(如:'20231231')
返回:
pandas.DataFrame: 包含日期和营业利润率的数据框
"""
try:
# 初始化pro接口
pro = ts.pro_api()
# 构建查询参数
params = {'ts_code': ts_code}
if start_date:
params['start_date'] = start_date
if end_date:
params['end_date'] = end_date
# 获取财务指标数据
df = pro.fina_indicator(**params)
# 选择需要的字段并排序
result = df[['end_date', 'op_of_gr']].sort_values('end_date', ascending=False)
return result
except Exception as e:
print(f"获取数据时发生错误: {str(e)}")
return None
def get_net_profit_margin(ts_code, start_date=None, end_date=None):
"""
获取上市公司净利率数据
参数:
ts_code (str): 股票代码(如:'600000.SH')
start_date (str): 开始日期(如:'20200101')
end_date (str): 结束日期(如:'20231231')
返回:
pandas.DataFrame: 包含日期和净利率的数据框
"""
try:
# 初始化pro接口
pro = ts.pro_api()
# 构建查询参数
params = {'ts_code': ts_code}
if start_date:
params['start_date'] = start_date
if end_date:
params['end_date'] = end_date
# 获取财务指标数据
df = pro.fina_indicator(**params)
# 选择需要的字段并排序
result = df[['end_date', 'netprofit_margin']].sort_values('end_date', ascending=False)
return result
except Exception as e:
print(f"获取数据时发生错误: {str(e)}")
return None