每日财经知识:博格公式选股——一个公式,筛出能长期持有的好公司(基于:TuShare API)
原创 | 来自北方狼 · StockStudy园地 | 2026年8月5日 17:41 重庆前置说明如需要下载本文代码共有 360M 左右基础数据请大家关注微信公众号“StockStudy园地” 后台回复回复基础数据就可以下载基础数据。回复博格选股代码就可以下载本文算法代码。回复博格选股结果就可以下载本文代码运行的结果文件基于 2026年8月5日 收盘数据为准这样大家仅靠这个数据都可以参考很久因为长期数据变化不大。【核心观点】长期收益 股息率 盈利增速估值噪音抵消股息率 0.5% 淘汰增速打折封顶 15%公式仅作初筛须叠加基本面人工复核前言投资最核心的难点是在纷繁复杂的市场中找到稳定赚钱的公司。很多散户追热点、炒题材最后只拿到纸面浮盈拿不到真实现金流。先锋集团创始人约翰·博格提出的博格公式剥离股价短期波动噪音只抓长期收益两大核心来源普通人零基础也能学会既可手动在炒股软件测算也能用 Python Tushare 全自动批量选股。一、通俗故事看懂博格公式底层逻辑假设两个合作对象朋友 A每年稳定给你现金分红分红逐年上涨去年分 5 万今年预期 5.5 万收益实打实落袋朋友 B从不分红只会口头承诺明年暴富年年画饼无现金兑现。理性人都会选择 A但股市里大量投资者偏爱讲故事、无分红的 B 类公司。博格公式就是一套量化筛选标准专门锁定持续分红、盈利稳定增长的优质企业。约翰·博格核心结论持有周期拉长至 10 年以上市盈率估值涨跌会相互抵消股票长期年化收益仅由两部分决定现金分红、企业净利润长期增长。简化核心公式个股长期测算版预期年化收益率 ≈ TTM 股息率 保守修正永续利润增速判定标准两者相加≥ 10%纳入长期观察池。二、三大核心基础概念大众易懂版2.1 TTM 股息率确定现金收益定义过去 12 个月每股现金分红 ÷ 当前股价反映当下买入每年能拿到的现金回报实操举例个股全年两次分红10 派 5每股 0.5 元、10 派 3每股 0.3 元全年合计每股分红 0.8 元现价 16 元。TTM 股息率 0.8 ÷ 16 5%作用唯一不依赖市场行情、能直接到手的收益是投资安全垫快速过滤标准股息率 0.5% 直接淘汰。2.2 CAGR 复合年均增长率剔除短期水分定义把多年波动的净利润增速折算成匀速复利增长年化值避免单一年份一次性收益卖资产、政府补贴干扰判断错误算法直接算术平均忽略复利效应标准计算公式CAGR (期末值 / 期初值)^(1 / 年数) - 1举例3 年净利润增速 15%、10%、9%。2.3 保守永续增速历史增速打折理性预判未来核心逻辑历史增速越高长期维持难度越大必须阶梯打折同时设置上限 15%没有企业能永久超 15% 复利增长亏损企业保底 -5%。历史加权 CAGR 区间留存折算比例案例演示25%35%历史 50% 增速折算后 17.5%20%45%历史 30% 增速折算后 13.5%15%55%历史 20% 增速折算后 11%10%65%历史 15% 增速折算后 9.75%5%75%历史 8% 增速折算后 6%0%85%历史 3% 增速折算后 2.55%≤0%保底 -5%盈利下滑最低按 -5% 计算三、通达信软件手工完整测算流程长城证券烽火版通用步骤 1提取 TTM 股息率输入股票代码按 F10进入「分红融资」统计近 12 个月现金分红总额行情页面右键自定义列直接添加「股息率 (TTM)」一键查看前置筛选股息率低于 0.5% 直接放弃无需后续计算。步骤 2提取 7 年净利润同比增速快捷键 F11 打开成长能力页面查看系统自带 3-5 年净利润同比数据不足 7 年F10 利润表翻历史年报手动计算每年同比当年净利润增速 (当年净利润 - 上年净利润) ÷ |上年净利润| × 100%步骤 3分别计算 3 / 5 / 7 年期 CAGR统一使用复利开方公式取完整年度净利润增速数据代入。步骤 4加权合并多周期增速权重分配7 年 CAGR × 0.4 5 年 CAGR × 0.35 3 年 CAGR × 0.25示例数据7 年 CAGR 13.38%、5 年 14.72%、3 年 11.29%加权原始 CAGR 13.38 × 0.4 14.72 × 0.35 11.29 × 0.25 13.33%步骤 5阶梯衰减打折13.33% 落在 10%~15% 区间留存 65%衰减后增速 13.33% × 0.65 8.66%步骤 6增速封顶限制保守永续增速 min(衰减后数值15%) 8.66%步骤 7博格公式计算预期年化收益预期年化 TTM 股息率 保守永续增速若个股股息率 5%总收益 5% 8.66% 13.66% ≥ 10%达标入选。四、Python Tushare 自动化选股完整方案4.1 数据接口对应说明Tushare 函数对照表需要数据Tushare Pro 接口关键字段口径说明TTM 股息率、股价、市值、PE/PBdaily_basicdv_ratiodv_ratio 原生为 TTM 股息率与手工计算口径一致年报净利润同比增速fina_indicatornetprofit_yoy仅筛选 end_date1231 的年度数据剔除季报股票名称、行业分类stock_basicts_code、name、industry个股基础信息补充ROE、净利率fina_indicatorroe、netprofit_margin辅助基本面校验指标4.2 完整代码分步实现1环境初始化与 Token 配置importtushareastsimportpandasaspdimportnumpyasnpimportmath# 替换为个人Tushare Pro Tokents.set_token(你的Tushare Token)prots.pro_api()2单只股票提取 7 年年报净利润同比增速defget_yoy_data(ts_code):获取单只股票近7年年报净利润同比增速dfpro.fina_indicator(ts_codets_code,fieldsts_code,end_date,netprofit_yoy,ann_date)# 仅保留12月31日年报数据df_annualdf[df[end_date].str.endswith(1231)]# 按公告日期去重保留最新年报df_annualdf_annual.sort_values(ann_date,ascendingFalse)df_annualdf_annual.drop_duplicates(subset[end_date])ifdf_annual.empty:return[],0latest_yearint(df_annual[end_date].iloc[0][:4])yoy_list[]# 提取近7年数据foryearinrange(latest_year-6,latest_year1):rowdf_annual[df_annual[end_date].str.startswith(str(year))]ifnotrow.emptyandpd.notna(row.iloc[0][netprofit_yoy]):yoy_valfloat(row.iloc[0][netprofit_yoy])yoy_list.append(yoy_val)returnyoy_list,latest_year3CAGR 计算函数极端增速约束defcalc_cagr(yoy_list):计算单周期复合年均增速限制极端波动ifnotyoy_listorlen(yoy_list)3:returnNone# 约束增速极值避免异常值干扰ratios[]foryinyoy_list:y_clampmax(-95,min(300,y))ratios.append(1y_clamp/100)product1.0forrinratios:product*r yearslen(yoy_list)returnproduct**(1/years)-1defget_cagrs(yoy_list):分别输出3/5/7年期CAGRcagr_3ycalc_cagr(yoy_list[-3:])iflen(yoy_list)3elseNonecagr_5ycalc_cagr(yoy_list[-5:])iflen(yoy_list)5elseNonecagr_7ycalc_cagr(yoy_list[-7:])iflen(yoy_list)7elseNonereturncagr_3y,cagr_5y,cagr_7y4历史增速加权 阶梯衰减 封顶函数defconservative_growth(cagr_3y,cagr_5y,cagr_7y):# 加权计算weight_map[]ifcagr_7yisnotNone:weight_map.append((cagr_7y*100,0.40))ifcagr_5yisnotNone:weight_map.append((cagr_5y*100,0.35))ifcagr_3yisnotNone:weight_map.append((cagr_3y*100,0.25))ifnotweight_map:return0.0total_wsum(wfor_,winweight_map)weighted_cagrsum(v*wforv,winweight_map)/total_w# 阶梯打折ifweighted_cagr25:decayedweighted_cagr*0.35elifweighted_cagr20:decayedweighted_cagr*0.45elifweighted_cagr15:decayedweighted_cagr*0.55elifweighted_cagr10:decayedweighted_cagr*0.65elifweighted_cagr5:decayedweighted_cagr*0.75elifweighted_cagr0:decayedweighted_cagr*0.85else:decayedmax(weighted_cagr,-5.0)# 增速上限15%cappedmin(decayed,15.0)returncapped5主选股函数批量全市场筛选defbogle_screening(target_return10.0,trade_date20260804):# 获取全市场每日基础指标过滤股息率≥0.5%df_dailypro.daily_basic(trade_datetrade_date,fieldsts_code,dv_ratio,close,pe_ttm,pb,total_mv)df_dailydf_daily[df_daily[dv_ratio]0.5]result_list[]total_countlen(df_daily)# 遍历每只股票计算博格预期收益foridx,rowindf_daily.iterrows():ts_coderow[ts_code]dvrow[dv_ratio]yoy_data,_get_yoy_data(ts_code)iflen(yoy_data)3:continuec3,c5,c7get_cagrs(yoy_data)safe_growthconservative_growth(c3,c5,c7)exp_returndvsafe_growth result_list.append({ts_code:ts_code,TTM股息率:round(dv,3),保守永续增速%:round(safe_growth,3),博格预期年化%:round(exp_return,3),3年CAGR%:round(c3*100,2)ifc3elseNone,5年CAGR%:round(c5*100,2)ifc5elseNone,7年CAGR%:round(c7*100,2)ifc7elseNone})# 每100只打印进度if(idx1)%1000:print(f已处理{idx1}/{total_count})# 筛选达标标的并排序df_respd.DataFrame(result_list)df_passdf_res[df_res[博格预期年化%]target_return]df_passdf_pass.sort_values(博格预期年化%,ascendingFalse)returndf_pass# 执行选股trade_date替换为最新交易日qualified_dfbogle_screening(target_return10.0,trade_date20260804)print(f博格公式筛选达标个股总数{len(qualified_df)})print(qualified_df.head(20))6补充个股行业、ROE、净利率辅助信息defenrich_fundamental(df):enrich_list[]for_,rowindf.iterrows():coderow[ts_code]# 获取股票名称、行业stock_infopro.stock_basic(ts_codecode,fieldsts_code,name,industry)namestock_info.iloc[0][name]ifnotstock_info.emptyelseindustrystock_info.iloc[0][industry]ifnotstock_info.emptyelse# 获取最新ROE、净利率fin_indpro.fina_indicator(ts_codecode,limit1,fieldsroe,netprofit_margin)roeround(fin_ind.iloc[0][roe],2)ifnotfin_ind.emptyelseNonemarginround(fin_ind.iloc[0][netprofit_margin],2)ifnotfin_ind.emptyelseNonelinerow.to_dict()line.update({股票名称:name,行业:industry,最新ROE%:roe,净利率%:margin})enrich_list.append(line)returnpd.DataFrame(enrich_list)# 调用补充信息full_dfenrich_fundamental(qualified_df)# 导出Excel本地保存full_df.to_excel(博格公式选股结果.xlsx,indexFalse)五、关键口径统一说明手工计算与 Tushare 对齐dv_ratioTushare 原生为 TTM 过去 12 个月股息率和软件 F10 手工统计分红计算结果完全匹配netprofit_yoy单年度净利润同比增速仅使用 1231 年报数据季报、中报不参与 CAGR 运算数据清洗规则净利润增速正负极端值强制约束避免一次性资产处置、政府补贴扭曲长期增长判断时间窗口仅上市满 3 年个股参与计算新股无完整历史盈利数据直接剔除。六、博格公式选股局限性与风险提示1适用范围限制仅适配持续稳定盈利、常年现金分红的消费、公用、高股息蓝筹强周期行业有色、煤炭、钢铁净利润周期性大幅波动CAGR 失真筛选结果参考性低银行、保险等金融行业财务指标特殊ROE、盈利增速解读需额外专业分析上市未满 3 年新股、常年亏损无分红企业无法使用该模型。2模型本身短板博格公式只是量化初筛工具非直接买入决策依据筛选出标的后必须额外人工复核企业商业模式、行业长期景气度管理层经营稳定性、分红政策持续性资产负债表、现金流健康度当前估值历史分位规避高位买入。3投资核心逻辑重申博格公式放弃预测短期股价涨跌、主力资金、题材热点只锚定两个长期核心当下买入能稳定拿到多少现金分红企业历史能否持续稳定创造净利润增长。长期投资不需要复杂指标堆砌抓住现金流与成长两大锚点即可大幅规避题材炒作陷阱。七、文档总结理论层博格公式剥离短期估值波动长期收益 TTM 股息率 保守永续净利润增速年化 ≥ 10% 为优质观察标的实操层通达信软件 7 步手工测算零基础投资者可单只个股复盘自动化层依托 Tusharedaily_basic、fina_indicator、stock_basic三大接口完整 Python 代码实现全市场批量选股自动导出结果表格风控层明确行业、标的适配边界量化筛选仅作初筛必须叠加基本面人工复核不可单一公式直接重仓。数据来源Tushare Pro 金融数据 API创作时间2026-08-05附程序运行后选出的部分股票参考详见公众号后台回复博格选股结果下载。本文转载自微信公众号「StockStudy园地」作者北方狼原文发布于 2026年8月5日。仅供学习交流版权归原作者所有。

相关新闻

集成电路核心元件解析:从晶体管、电阻电容到互连与设计验证

集成电路核心元件解析:从晶体管、电阻电容到互连与设计验证

1. 从“黑盒子”到“积木块”:理解集成电路元件的本质当我们谈论“集成电路”时,脑海里浮现的往往是手机、电脑里那些指甲盖大小、布满金属引脚的小方块。我们习惯于把它看作一个功能完整的“黑盒子”——给它输入信号,它就能输出我们想要的结…

2026/8/7 15:07:08 阅读更多 →
生产线预防性维保实战指南:从救火到防火

生产线预防性维保实战指南:从救火到防火

1. 项目概述:为什么生产线维保不能"救火式"处理?上个月拜访一家电子元器件制造厂时,看到他们的SMT贴片机突然宕机,整个车间陷入停滞。维修组花了6小时抢修,最终发现只是皮带轮润滑脂干涸导致传动失效——这个…

2026/8/7 15:02:59 阅读更多 →
2026电子会计档案管理系统排名:企业如何选择?哪些产品更适合中大型企业?

2026电子会计档案管理系统排名:企业如何选择?哪些产品更适合中大型企业?

2026电子会计档案管理系统排名:企业如何选择?哪些产品更适合中大型企业?TL;DR如果企业希望电子会计档案真正落地,建议优先关注产品成熟度、财务生态兼容能力、实施交付能力三个维度,而不是单纯比较功能数量。从企业实践…

2026/8/7 8:41:43 阅读更多 →

最新新闻

Shader Toy高级技巧:自定义Uniforms与键盘交互实现

Shader Toy高级技巧:自定义Uniforms与键盘交互实现

Shader Toy高级技巧:自定义Uniforms与键盘交互实现 【免费下载链接】shader-toy Shadertoy-like live preview for GLSL shaders in Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/sh/shader-toy Shader Toy作为Visual Studio Code中一款强大…

2026/8/7 19:13:08 阅读更多 →
Zotero Style插件终极指南:高效文献管理的视觉革命

Zotero Style插件终极指南:高效文献管理的视觉革命

Zotero Style插件终极指南:高效文献管理的视觉革命 【免费下载链接】zotero-style Ethereal Style for Zotero 项目地址: https://gitcode.com/GitHub_Trending/zo/zotero-style Zotero Style是一款专为Zotero文献管理软件设计的强大插件,通过创新…

2026/8/7 19:13:08 阅读更多 →
廖老师质疑杜达(Duda)——对贝叶斯公式的理解

廖老师质疑杜达(Duda)——对贝叶斯公式的理解

杜达是从依据先验概率判决引入贝叶斯公式的,廖老师指出先验分布(先验概率)比样本分布(类条件概率)更难获取,而且从先验概率判决简直不合理(确实荒谬),他也指出“后验概率…

2026/8/7 19:13:08 阅读更多 →
如何快速解决CK2中文显示问题:十字军之王2双字节补丁完整指南

如何快速解决CK2中文显示问题:十字军之王2双字节补丁完整指南

如何快速解决CK2中文显示问题:十字军之王2双字节补丁完整指南 【免费下载链接】CK2dll Crusader Kings II double byte patch /production : 3.3.4 /dev : 3.3.4 项目地址: https://gitcode.com/gh_mirrors/ck/CK2dll 还在为《十字军之王2》显示中文、日文或…

2026/8/7 19:13:08 阅读更多 →
WPS域与自动图文集:实现图表公式自动编号与交叉引用

WPS域与自动图文集:实现图表公式自动编号与交叉引用

1. 项目缘起:从手动编号到自动化编排的必然之路在撰写技术报告、学术论文或者任何一份包含大量图表、公式的长文档时,最让人头疼的事情之一,莫过于手动维护它们的编号。你肯定经历过这样的场景:在文档中间插入一张新的图片&#x…

2026/8/7 19:13:08 阅读更多 →
TencentDB Agent Memory跨平台兼容性:Windows、Linux、Mac使用差异

TencentDB Agent Memory跨平台兼容性:Windows、Linux、Mac使用差异

TencentDB Agent Memory跨平台兼容性:Windows、Linux、Mac使用差异 【免费下载链接】TencentDB-Agent-Memory TencentDB Agent Memory is a team-level memory hub for AI Agents — turning conversations, docs, and code into four reusable memory assets (Chat…

2026/8/7 19:12:08 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →