自由现金流报酬率 / Owner-Earnings 现金流估值(本地执行版)
这个 Skill 做什么
把「股票代码 + 年份」变成一份自由现金流报酬率(近似 FCFF 口径)与现金流估值结果:
- FCF / 净资产 = 生意自身每元净资产一年能自由支配的现金(现金版 ROE,衡量质量,资本结构中性、跨公司可比)
- FCF / 市值(FCF Yield) = 你实付价格能拿到的现金收益率(衡量估值贵不贵)
- FCFE / 市值(股权自由现金流·股东真到手) = 扣掉债务净流后的股东口径现金收益率(估值落地以它为准,对租赁重/高杠杆公司更准)
- 平均净资产口径、敏感度/排行对比;输出时自动评价"经营 FCF vs FCFE 哪个更具参考价值"
行业路由:金融(银行/证券/保险)与地产(房地产/园区开发)属「资产负债表生意」,FCF 公式天然失效(银行没有营运资本概念、地产预售合同负债扭曲 WC),Skill 通过内置代码白名单(sector_map.py)自动识别并路由到 PB/NAV 估值:
- 金融 → PB-ROE(RIM 简化合理 PB):看价格贵不贵(当前 PB vs 合理 PB*)。
- 地产 → NAV(重估净资产)为主 + PB 为辅:地产核心是土储/在建重估,免费数据只有账面 BVPS,需用
--nav-premium人工给重估溢价。 - 保险虽属金融,但更准的是内含价值(EV)法;免费无 EV 数据,暂用 PB/ROE 并明确标注。
关键设计:Skill 只分发「方法 + 公式 + 脚本」,数据在用户本机通过 AKShare 拉取(东方财富年度三大报表),Skill 不提供、不缓存、不转发任何第三方数据接口。
与
dcf-valuation(FCFF 折现求每股内在价值)的关系:本 Skill 是单期快照指标 + 估值视角,回答"这门生意现金印钞效率高不高、当前价贵不贵";DCF 是"把未来 FCF 折现求内在价值"。两者互补——先用本 Skill 做质量初筛与估值快判,再用 DCF 求精确每股价值。
使用前提(用户本机一次性准备)
pip install akshare pandas numpy
不装 AKShare 也能跑核心引擎(仅 FCF/净资产 部分依赖三大报表;FCF/市值 需要市值接口,可用
--no-mcap跳过)。
调用方式
# 单只, 取最新年报(含 FCF/净资产 + FCF/市值)
python scripts/fcf_return.py 600887
python scripts/fcf_return.py 600887 2025 # 指定年份
# 输出单股 HTML 报告 / JSON
python scripts/fcf_return.py 600887 --html out.html
python scripts/fcf_return.py 600887 --json out.json
# 多股对比排行榜(全市场扫描安全:限频+24h缓存)
python scripts/fcf_return.py --codes 600887,600519,000333 --html rank.html
# 离线/防限频:不拉市值
python scripts/fcf_return.py 600887 --no-mcap
# ── 金融 / 地产:自动路由到 PB/NAV 估值(识别到银行/证券/保险/房地产/园区开发代码即走此路径)──
python scripts/fcf_return.py 600036 # 招商银行 → 自动 PB-ROE 估值
python scripts/fcf_return.py 000002 # 万科 → 自动 NAV + PB 估值
python scripts/fcf_return.py 600036 --html cmb.html
python scripts/fcf_return.py 000002 --nav-premium 0.3 # 地产土储升值:账面 NAV 上浮 30%
# 强制指定行业(覆盖白名单识别,或把某股当 general 跑 FCF)
python scripts/fcf_return.py 600519 --sector general # 强制按 FCF 算(即便被误识别)
python scripts/fcf_return.py 600036 --r 0.10 --g 0.02 # 自定义要求回报 r / 永续增长 g
批量
--codes模式会自动跳过金融/地产标的(FCF 不适用,stderr 提示改走 PB/NAV),其余 general 标的照常进对比榜。
核心公式(BOSS 原稿,经实战纠错后确认正确)
FCF报酬率 = (主营利润 − 期末营运资本 + 期初营运资本 − 资本性支出 + 非现金支出) × (1−所得税率) / 净资产
= (主营利润 − Δ营运资本 − 资本性支出 + 非现金支出) × (1−税率) / 净资产
- 主营利润 = 营业收入 − 营业成本 − 税金及附加 − 销售费用 − 管理费用 − 研发费用(权责发生制经营利润)
- Δ营运资本 = 期末营运资本 − 期初营运资本
- 营运资本 = 应收账款 + 预付款项 + 存货 − 应付票据 − 应付账款 − 预收款项 − 合同负债
- 资本性支出(CapEx) = 购建固定资产、无形资产和其他长期资产支付的现金
- 非现金支出 = 固定资产折旧 + 使用权资产摊销 + 无形资产摊销(现金流量表补充资料)
- 所得税率 = 所得税费用 / 利润总额
- 净资产 = 归母净资产(建议用平均归母净资产更稳)
估值派生:
- FCF / 市值(FCF Yield) = 税后FCF ÷ 总市值 → 你实付价格的现金收益率(估值视角)
- 平均净资产口径 = 税后FCF ÷((本年+上年)/2 归母净资产)
⚠️ 三个口径陷阱(本次经验里踩过、务必牢记)
-
致命口径错误:营运资本必须用 Δ(期末−期初),绝不能用"期末存量"一刀切。 营运资本是资产负债表上的时点余额(存量,几十亿),而自由现金流该减的是本期新增投进去的营运资金(流量):
ΔWC = 期末 − 期初。若只减期末存量,等于把公司历年沉淀在应收/存货里的钱一把全减掉,对成长型/净营运资本为负的公司,分子直接被砍成巨额负数或离谱高值,结论全反。- 反例:伊利股份净营运资本长期为负(2025 年 −85 亿、2024 年 −103 亿,合同负债+应付账款重、占上下游便宜),用"期末存量"会算出 30%+ 的离谱数;用 ΔWC 才正确(伊利 2025 实测 ≈ 18.60%)。
- 记忆锚点:
-期末 + 期初正好等于-ΔWC,BOSS 原稿的营运资本处理本来就是对的。
-
口径错配:分子是 FCFF,分母严格该配 EV(股权+净债务)。 本公式算出的本质是公司自由现金流 FCFF(归属债权+股东两拨人),分母用"归母净资产"是工程近似。正确配对只有两种:FCFF ÷ 企业价值 EV(WACC 那套);若要算股东口径精确值,应转 FCFE(−税后利息+净借款)或分母配 EV。高杠杆公司必须转,低杠杆(如伊利净利息为负、杠杆适中)影响很小。
-
×(1−t) 的位置 与 分母时点。
- 整体
(1−t)略不严谨:经营现金流净额本身已含实际交税,更严谨是只对主营利润乘 (1−t);实测差异极小(伊利两版仅差 0.08pp)。 - 分母用平均归母净资产更稳(分子是一年流量、分母是时点值,单年会被大扩产/渠道压货带偏);更好的做法是分子也用多年平均 FCF。
- 整体
FCFE 口径(股权自由现金流,新增)
上方核心公式(经营 FCF)本质是近似 FCFF——归属债权+股东两拨人的自由现金,资本结构中性、跨公司可比(看"生意质量")。但估值落地看的是"股东真到手",这就需要 FCFE(股权自由现金流):
FCFE = 净利润 + 非现金支出 − 资本性支出 − Δ营运资本 + 净筹资
- 净利润 = 利润总额 − 所得税费用(已含税后利息,是股权口径)。
- 净筹资 = (借款收到的现金 + 发行债券) − (偿还债务支付的现金 + 支付其他与筹资)。
- 关键:现金流量表没有"租赁本金"单列科目,"支付其他与筹资活动有关的现金(
PAY_OTHER_FINANCE)"是大杂烩——租赁本金偿付、少数股东款项等都在里面。租赁重资产公司(药店连锁、航空、零售)的租赁本金主要藏在此项 → 必须把这块计入净筹资,FCFE 才会把"租赁现金(利息已进净利、本金已进净筹资)"完整还原,否则 FCFE 系统性偏高。 - 剔除股利:分配股利/子公司付少数股东股利不进净筹资(分红是 FCFE 的归宿而非来源),否则会重复减。
- 关键:现金流量表没有"租赁本金"单列科目,"支付其他与筹资活动有关的现金(
- 派生:FCFE/净资产(股权报酬率)、FCFE/平均净资产、FCFE/市值(估值视角·股东真到手)。
两个口径怎么选(脚本输出时自动评价)
脚本 evaluate_reference() 按以下规则自动判定哪个更具参考价值并写入报告:
- 租赁重(使用权资产摊销 ÷ (摊销+资本开支) > 40%):经营 FCF 因租赁现金未完全计入而偏高 → FCFE 更具参考价值(租赁利息已含于净利、本金已纳入净筹资);但提醒"
支付其他与筹资"可能含非租赁项,建议核对明细。 - 融资波动大(|净筹资| > 50%×|FCFE|):FCFE 受当年净筹资波动影响明显 → 经营 FCF 更平滑可比(看生意质量);估值(FCF/市值)仍以 FCFE 为准。
- 双口径接近:经营 FCF 看质量(资本结构中性、跨公司可比),FCFE 看股东真到手(股权口径);估值视角以 FCFE 为准,质量视角以经营 FCF 为准。
注意:FCFE 不扩展金融/地产覆盖范围——银行/证券/保险/房地产/园区开发仍走 PB/NAV(见下文行业路由)。FCFE 只是把 general 公司的"股东口径"补全,对租赁重、高杠杆公司尤其有用。
AKShare 字段映射(东方财富年度报表,全免费覆盖)
| 报表 | 接口 | 字段(中文→列名) |
|---|---|---|
| 利润表 | stock_profit_sheet_by_yearly_em | 营业收入=OPERATE_INCOME、营业成本=OPERATE_COST、税金及附加=OPERATE_TAX_ADD、销售费用=SALE_EXPENSE、管理费用=MANAGE_EXPENSE、研发费用=RESEARCH_EXPENSE、所得税费用=INCOME_TAX、利润总额=TOTAL_PROFIT |
| 资产负债表 | stock_balance_sheet_by_yearly_em | 应收账款=ACCOUNTS_RECE、预付款项=PREPAYMENT、存货=INVENTORY、应付票据=NOTE_PAYABLE、应付账款=ACCOUNTS_PAYABLE、预收款项=ADVANCE_RECEIVABLES、合同负债=CONTRACT_LIAB、净资产=TOTAL_PARENT_EQUITY |
| 现金流量表(含补充资料) | stock_cash_flow_sheet_by_yearly_em | 固定资产折旧=FA_IR_DEPR、使用权资产摊销=USERIGHT_ASSET_AMORTIZE、无形资产摊销=IR_DEPR、资本性支出=CONSTRUCT_LONG_ASSET |
| 个股市值/股本 | stock_individual_info_em | 总市值、总股本(用于 FCF/市值) |
容错经验:伊利/茅台 2025 实测
IR_DEPR(无形资产摊销) 与ADVANCE_RECEIVABLES(预收款项) 在补充资料中本身为 NaN(新准则并入合同负债/不单列),脚本已按 0 容错并告警。
AKShare 限频实测(非官方,限流来自上游东方财富/新浪)
- AKShare 自身无限流;单 IP 安全区间 ≤1 次/秒(随机 1~3s 间隔,约 20~60 次/分钟远低于红线);云/IDC 服务器 IP 配额比家宽低。
- 脚本已加固:
_ak_call带 24h 本地 pkl 缓存(同代码同年只拉一次)+_throttle抖动;每支股票仅 3~4 次取数 → 全 A 批量扫描可行。
怎么用结果做"现金流估值"(落地判断)
- FCF/净资产 ≈ 19.3%(如伊利):生意自身很能赚现金,质量好(现金版 ROE)。
- FCF/市值 ≈ 6.8%(如伊利):你按当前价买入,每年真金白银回报约 6.8%——这是估值视角的核心数。
- 派息率两端的统一公式(巴菲特留存检验):
- 全分(派息率 100%、留存 0)→ 长期年化 ≈ FCF ÷ 市值(落袋收益率)。
- 全留(留存率 100%、派息 0)→ 长期年化 ≈ ROIC(纯资本利得)。
- ROIC > FCF 收益率 → 留存创造价值;ROIC < FCF 收益率 → 留存毁灭价值(你本可落袋的现金被低效再投资吃掉)。
- 边界:FCF 受资本开支节奏/营运资本波动/一次性项目影响,单年会抖 → 用多年平均 FCF;FCF/市值 是名义、未风险调整的,真实回报 = 名义 − 通胀;分红要交税(A 股 0–20%),到手低于税前。
FCF 指标家族(定位本公式)
- OCF/CFO(经营活动现金流):最原始主业回款,没扣资本开支,很多人误当 FCF。
- FCF 简易 = CFO − CapEx(海外 FCFY 最常用)。
- FCFF = EBIT(1−t)+折旧−ΔWC−CapEx,÷EV(无杠杆,给所有资本方前的自由现金)。
- FCFE = 净利+折旧−ΔWC−CapEx−偿债,÷市值/净资产(股东口径)。
- Owner Earnings = 净利+折旧−维护性CapEx−ΔWC(巴菲特口径,维护而非扩张)。
- 本公式(BOSS) = 近似 FCFF ÷ 净资产,定位"现金版 ROE / 报酬率"视角,与上面不冲突、可互补。
数据口径(重要·实测结论)
- 当前仅能取到【合并报表】。数据源 AKShare 东财 HSF10 年度报表(
stock_*_sheet_by_yearly_em)只有合并口径;东财 HSF10 的reportType=2、新浪type0/1、东财 datacenter 财务表reportName经实测均无法取得母公司报表(单体)(详见脚本fetch_reports注释)。 - 母公司报表待集成:若要严格按 BOSS 要求的母公司口径,需接入 CNINFO(巨潮资讯)官方 XBRL,或东财 datacenter 正确的母公司
reportName。这是独立的后续工程,未含在当前 Skill 内。 - 净资产取【归母净资产】(合并口径已剔除少数股东权益);分子为近似 FCFF。
金融 / 地产:为什么 FCF 失效,改用 PB-NAV(核心方法论)
FCF/Owner-Earnings 公式依赖「营运资本 ΔWC + 资本性支出」刻画现金投入,这俩概念对资产负债表生意要么不成立、要么严重失真:
- 银行/证券/保险:资产负债表本身就是生意(存贷利差、承销、承保),没有制造业那种「应收/存货/应付」营运资本;生息资产规模用的是另一种风险加权资产逻辑。硬套 FCF 公式会把金融股算成巨大的负或离谱正值。
- 房地产/园区开发:预售制下「合同负债(预收购房款)」常年几百亿,把 WC 一把减掉会严重扭曲;且地产价值核心在土储与在建的重估,不是当年经营现金流。
→ 结论:金融、地产不走 FCF,走 PB/NAV。这是估值方法的选择,不是数据缺失。
行业识别(scripts/sector_map.py)
- 内置 A股 金融/地产代码白名单(银行 ~42、证券 ~44、保险 6、房地产 ~32、园区开发 ~12),命中即返回细类。
- 细类→大类映射:
银行/证券/保险 → financial,房地产/园区开发 → realestate。 is_pb_nav_sector(sector)= 大类属 financial/realestate 即路由 PB/NAV。- 用户可用
--sector强制覆盖(细类名 /financial/realestate/general);--sector general可让任意股按 FCF 算(包括被白名单误识别的)。 - 白名单未覆盖的小市值/非主流金融地产股回落
general走 FCF,影响有限(主流标的已全覆盖)。
金融估值:PB-ROE(RIM 简化合理 PB)
- 数据源(全部免 push2,稳定):
- 当前 PB:百度估值
stock_zh_valuation_baidu(symbol, indicator="市净率", period="近一年")。 - ROE / BVPS / 股息发放率:
stock_financial_analysis_indicator(symbol, start_year="2023")(新浪源,取最新年报)。
- 当前 PB:百度估值
- 合理 PB(剩余收益模型 RIM 的 Gordon 简化):
PB* = (ROE − g) / (r − g)ROE、r(要求回报率,默认 9%)、g(永续增长,默认 0%)均以小数代入;分母需 > 0。- 当前 PB < PB*×0.9 → 低估;≤ PB*×1.1 → 合理;否则 高估。
- 含义:回答「价格贵不贵」——好生意(高 ROE)配高 PB 未必贵,要看 PB 相对其合理 PB*。
- 保险更准确应为内含价值(EV)法,免费无 EV 数据,暂退化为 PB/ROE 并明确标注。
地产估值:NAV(重估净资产)为主 + PB 为辅
- 数据源同上(PB + BVPS)。
- NAV 框架:
NAV = BVPS × (1 + nav_premium)。免费数据源只有账面 BVPS,无法自动重估土储/在建/投资性房地产公允价值 → 默认nav_premium=0(即 NAV=账面净资产,保守)。 - 用户凭行业判断传
--nav-premium(如土储升值 30% 用0.3)即可得重估 NAV;脚本诚实标注「重估需人工判断」,不假装能自动重估。 - 地产核心看 NAV 折价/溢价(价格相对重估净资产),PB 仅作辅助。
PB/NAV 输出
- 单股
--html输出独立 PB/NAV 研报:当前 PB 大数 + 估值判断、ROE/BVPS/股息发放率/合理 PB*/账面 NAV/含重估 NAV 表、方法说明(为何 FCF 不适用)、免责声明。 - 批量
--codes模式自动跳过金融/地产(stderr 提示改走 PB/NAV),不进 FCF 对比榜;除非--sector general强制覆盖。
输出
单次计算(单股)报告分三块,全部基于年报口径(当前为合并报表):
- 近三年最细粒度参数表(亿元):列出参与公式计算的全部 20 个原始科目(利润表 8 项:营业收入/营业成本/税金及附加/销售费用/管理费用/研发费用/所得税费用/利润总额;资产负债表 8 项:应收/预付/存货/应付票据/应付账款/预收款项/合同负债/净资产;现金流量表 4 项:固定资产折旧/使用权资产摊销/无形资产摊销/资本性支出),按
年列展示最近三个年报数据(不足三年则按实际列示)。缺失/为空字段标—(计算时按 0 处理并告警)。 - 中间过程计算(仅最近一年):主营利润、期末营运资本、期初营运资本、非现金支出合计、所得税率、税前 FCF 分子、净资产、平均净资产——只算最新一年,不跨年堆叠(避免单年抖动误导)。
- 结论指标:FCF/净资产(现金版 ROE·质量)、FCF/平均净资产口径、FCF/市值(FCF Yield·估值视角);并附 FCFE 口径(净利润/净筹资/FCFE/FCFE/市值/FCFE/平均净资产)与**【参考价值评价】**(自动判定经营 FCF vs FCFE 哪个更具参考价值),缺失字段告警,固定免责声明。
--json输出同样含history(三年最细粒度参数)与一年中间值,便于二次加工。--html输出单股研报;--codes批量模式仍走对比榜(单列摘要,不展开三年明细)。- 金融/地产走 PB/NAV 路径时:
--html输出独立 PB/NAV 研报(PB/合理 PB*/估值判断 + NAV 表 + 方法说明),--json输出 PB/NAV 字典(pb/roe/bvps/fair_pb/valuation/nav/...),不再含 FCF 字段。
合规与边界(务必遵守)
- 数据获取在用户本机完成,Skill 不提供、不缓存、不转发任何第三方数据接口。
- 输出仅展示计算过程与结果,不给出具体买卖 / 选股 / 价格预测建议,严守「非投资建议」红线。
- 微信小程序等载体涉及金融类目资质限制(个人主体不可做股票查询类目),更现实是 Web/H5 + 云开发后端形态;本 Skill 仅做历史年报财务指标计算/展示,合规风险最低。
真实实证(来自本次经验,非手填)
- 伊利股份 600887 · 2025 年报:FCF报酬率 ≈ 18.60%(净资产 546 亿、税前 FCF 分子 114.7 亿、税率 11.4%)。
- 贵州茅台 600519 · 2025 年报:FCF报酬率 ≈ 30.85%(高端现金牛,符合直觉)。
微信扫一扫