Bootstrap

99.11 金融难点通俗解释:净资产收益率(ROE)VS投资资本回报率(ROIC)VS总资产收益率(ROA)

0. 承前

如果想更加全面清晰地了解金融资产组合模型进化论的体系架构,可参考:
0. 金融资产组合模型进化全图鉴

1. 简述:三大收益率指标对比

  • 描述净资产收益率(ROE)含义:衡量企业用股东投入资金获得的回报率。链接
  • 描述投资资本回报率(ROIC)含义:衡量企业用所有投入资金获得的回报率。链接
  • 描述总资产收益率(ROA)含义:衡量企业用全部资产获得的回报率。链接

2. 比喻:三大指标对比

2.1 简单对比

  • 净资产收益率(ROE)关注"自己的钱赚多少"
小明用自己的钱养鸡:
自己投入:1000元
一年赚到:200元

ROE = 赚到200元 ÷ 自己的1000元 = 20%
含义:用自己的钱赚到20%回报
  • 投资资本回报率(ROIC)关注"所有投入赚多少"
小明总共投入:
自己的钱:1000元(买鸡)
借来的钱:500元(买料)
一年赚到:300元

ROIC = 赚到300元 ÷ 总投入1500元 = 20%
含义:所有投入的钱平均赚20%
  • 总资产收益率(ROA)关注"所有家当赚多少"
小明养鸡场有:
母鸡资产:1000元
鸡舍设备:2000元
饲料存货:500元
一年赚到:350元

ROA = 赚到350元 ÷ 总资产3500元 = 10%
含义:所有资产平均赚10%

2.2 生动比喻

  • ROE就像问:
"压岁钱赚了几倍?"
- 只算自己存的钱
- 不管借来的钱
- 看自己本金效率
  • ROIC就像问:
"所有花销值不值?"
- 算上借来的钱
- 看所有投入回报
- 衡量整体效率
  • ROA就像问:
"养鸡场效率如何?"
- 算上所有家当
- 包括设备存货
- 看整体资产效率

2.3 区别要点

  • 主要区别
净资产收益率(ROE):
- 只看股东投入
- 不管借来的钱
- 适合看股东回报

投资资本回报率(ROIC):
- 看所有投入资金
- 包括借款投入
- 适合看经营效率

总资产收益率(ROA):
- 看所有资产价值
- 包括存货设备
- 适合看资产效率

3. 实际应用

3.1 选择建议

看股东回报用ROE:
- 像看零花钱理财
- 关注自有资金效率
- 适合投资者视角

看经营效率用ROIC:
- 像看养鸡总投入
- 关注所有资金效率
- 适合经营者视角

看资产效率用ROA:
- 像看养鸡场效率
- 关注整体资产效率
- 适合管理者视角

4. 总结

关注点:

  • ROE看"自己的钱赚多少"
  • ROIC看"所有投入赚多少"
  • ROA看"所有家当赚多少"

就像开养鸡场:

  • ROE只算自己的储蓄罐
  • ROIC算上所有花销投入
  • ROA把整个养鸡场都算进去

5. 实现代码

def get_roe_data(ts_code: str, start_date: str = None, end_date: str = None) -> pd.DataFrame:
    """
    获取公司ROE(净资产收益率)数据
    
    参数:
        ts_code (str): 股票代码 (例如: '600000.SH')
        start_date (str): 开始日期 (例如: '20180101')
        end_date (str): 结束日期 (例如: '20181231')
    
    返回:
        DataFrame: 包含以下字段:
        - ts_code: 股票代码
        - ann_date: 公告日期
        - end_date: 报告期
        - roe: 净资产收益率
        - roe_waa: 加权平均净资产收益率
        - roe_dt: 净资产收益率(扣除非经常损益)
    """
    try:
        pro = ts.pro_api()
        df = pro.fina_indicator(ts_code=ts_code, 
                              start_date=start_date,
                              end_date=end_date,
                              fields='ts_code,ann_date,end_date,roe,roe_waa,roe_dt')
        return df
    except Exception as e:
        print(f"获取ROE数据时出错: {str(e)}")
        return pd.DataFrame()

def get_roa_data(ts_code: str, start_date: str = None, end_date: str = None) -> pd.DataFrame:
    """
    获取公司ROA(总资产收益率)数据
    
    参数:
        ts_code (str): 股票代码 (例如: '600000.SH')
        start_date (str): 开始日期 (例如: '20180101')
        end_date (str): 结束日期 (例如: '20181231')
    
    返回:
        DataFrame: 包含以下字段:
        - ts_code: 股票代码
        - ann_date: 公告日期
        - end_date: 报告期
        - roa: 总资产报酬率
        - roa_yearly: 年化总资产报酬率
        - roa_dp: 总资产净利率(杜邦分析)
    """
    try:
        pro = ts.pro_api()
        df = pro.fina_indicator(ts_code=ts_code,
                              start_date=start_date,
                              end_date=end_date,
                              fields='ts_code,ann_date,end_date,roa,roa_yearly,roa_dp')
        return df
    except Exception as e:
        print(f"获取ROA数据时出错: {str(e)}")
        return pd.DataFrame()

def get_roic_data(ts_code: str, start_date: str = None, end_date: str = None) -> pd.DataFrame:
    """
    获取公司ROIC(投入资本回报率)数据
    
    参数:
        ts_code (str): 股票代码 (例如: '600000.SH')
        start_date (str): 开始日期 (例如: '20180101')
        end_date (str): 结束日期 (例如: '20181231')
    
    返回:
        DataFrame: 包含以下字段:
        - ts_code: 股票代码
        - ann_date: 公告日期
        - end_date: 报告期
        - roic: 投入资本回报率
        - roic_yearly: 年化投入资本回报率
    """
    try:
        pro = ts.pro_api()
        df = pro.fina_indicator(ts_code=ts_code,
                              start_date=start_date,
                              end_date=end_date,
                              fields='ts_code,ann_date,end_date,roic,roic_yearly')
        return df
    except Exception as e:
        print(f"获取ROIC数据时出错: {str(e)}")
        return pd.DataFrame()
;