企业微信

主营业务利润率的计算逻辑

主营业务利润率的核心公式为:

主营业务利润率 = 主营业务利润 ÷ 主营业务收入 × 100%

主营业务利润率如何计算才能用于股票期货基本面量化选股

主营业务利润来自利润表,计算方式是从营业收入中扣除营业成本、税金及附加、销售费用、管理费用、研发费用、财务费用等直接相关项目。更严谨的表达式为:

主营业务利润 = 主营业务收入 - 主营业务成本 - 主营业务税金及附加 - 三费(销售、管理、财务费用) - 研发费用

部分财务软件会区分“主营业务利润”与“营业利润”。营业利润还包含投资收益、公允价值变动收益、资产处置收益、其他收益等非主营项目。股票期货基本面量化选股中,使用主营业务利润可以过滤掉一次性收益和金融资产价格波动干扰,得到更纯净的核心业务盈利能力。

股票与期货基本面量化中的应用差异

股票市场直接使用该指标筛选公司。高主营业务利润率且连续多个季度稳定或提升的股票,通常具备定价权、成本控制能力或品牌壁垒。量化模型会把该指标做横截面排序,取前20%作为多头组合。

期货市场不直接用该指标对单只合约打分,而是用于产业链利润分配。某期货品种对应的上市公司群体平均主营业务利润率上升,可能意味着该品种下游需求旺盛或上游成本下降。量化交易系统可以构建“股票基本面因子映射期货期限结构”的策略。

量化计算中的代码演示

以下Python代码从tushare获取利润表数据,计算主营业务利润率因子。


import tushare as ts

import pandas as pd

pro = ts.pro_api('your_token')

def gross_main_profit_margin(ts_code, start_date, end_date):

    income = pro.income(ts_code=ts_code, start_date=start_date, end_date=end_date,

                        fields='ts_code,end_date,revenue,oper_cost,oper_exp,admin_exp,fin_exp,rd_exp,biz_tax_surchg')

    income = income.dropna()

    # 主营业务利润 = 营业收入 - 营业成本 - 税金及附加 - 三费 - 研发费用

    income['main_profit'] = (income['revenue'] - income['oper_cost'] - income['biz_tax_surchg']

                             - income['oper_exp'] - income['admin_exp'] - income['fin_exp'] - income['rd_exp'])

    income['main_profit_margin'] = income['main_profit'] / income['revenue'] * 100

    income['main_profit_margin'] = income['main_profit_margin'].round(2)

    return income[['ts_code','end_date','main_profit_margin']]

result = gross_main_profit_margin('600519.SH', '20200101', '20231231')

print(result)

量化回测时,需要处理三类陷阱。第一,主营业务收入可能包含其他业务收入,严格意义上的主营业务利润率需要从财务报表附注中提取“主营业务收入”与“主营业务成本”。第二,金融类、投资类公司的利润表结构不同,该指标失真严重,应在股票池中剔除。第三,期货公司或大宗商品贸易商的利润率天然偏低,不能跨行业比较。

股票期货基本面量化因子构建步骤

数据获取与清洗

从Wind、聚宽、tushare或米筐获取利润表。保留连续8个季度主营业务利润率数据。剔除缺失值超过30%的样本。对极端值做1%和99%分位数缩尾处理。

因子标准化与中性化

对主营业务利润率做横截面Z-score标准化。行业中性化处理:减去行业均值再除以行业标准差。市值中性化:对流通市值做线性回归取残差。处理后的因子值可用于多因子模型。

股票组合分层回测

按因子值从高到低分5组。做多第1组,做空第5组。每月调仓。计算IC值、IR值、多空年化收益。历史回测中,主营业务利润率因子在消费、医药、高端制造行业IC均值约0.04至0.07,衰减周期约2至3个季度。

期货跨品种套利信号

对同一产业链的股票池计算平均主营业务利润率。当上游股票池平均利润率显著上升,而下游期货合约价格尚未上涨时,做多该期货合约。当上游利润率下降且期货价格处于高位时,做空。

主营业务利润率与营业利润率的对比

| 指标 | 计算公式 | 量化用途 |

|------|----------|----------|

| 主营业务利润率 | 主营利润 / 主营收入 | 核心业务盈利质量,适合长期选股 |

| 营业利润率 | 营业利润 / 营业收入 | 包含投资收益等,波动较大,适合短期事件驱动 |

| 毛利率 | (收入-成本) / 收入 | 不扣除费用,适合行业竞争格局判断 |

| 净利率 | 净利润 / 收入 | 包含税收和营业外收支,适合整体估值 |

股票期货基本面量化中,主营业务利润率应与毛利率、营业利润率、净利率同时使用。四者同时上升,表明公司内生增长强劲。毛利率上升而主营业务利润率下降,说明费用失控。营业利润率上升而主营业务利润率下降,说明投资收益贡献过大,盈利质量低。

量化交易中的实际约束

股票市场使用该指标需注意财报发布时滞。一季报4月底发布,半年报8月底,三季报10月底,年报次年4月底。量化系统必须使用point-in-time数据,避免前视偏差。

期货市场使用该指标需处理合约换月。主力合约连续价格与股票财报时间不匹配。建议构建商品指数收益率与股票组合基本面因子之间的领先滞后关系。

交易成本方面,股票调仓按双边千分之三计算。期货按双边万分之一计算。高频调仓会侵蚀因子收益。主营业务利润率因子更适合季度调仓或半年度调仓。

常见计算错误与修正方法

错误一:直接用净利润除以主营业务收入。修正:使用主营业务利润。

错误二:忘记扣除研发费用。2018年后A股利润表单独列示研发费用,必须扣除。

错误三:期货产业链股票池未剔除金融类公司。修正:按申万一级行业剔除银行、非银金融、综合。

错误四:未做行业中性化。修正:在因子合成前做行业哑变量回归。

量化平台如聚宽、米筐、优矿都提供财务数据接口。股票期货基本面量化策略中,主营业务利润率是一个低换手、中等IC的因子,适合与动量因子、估值因子、质量因子组合使用。