每日财经知识:博格公式选股——一个公式,筛出能长期持有的好公司(基于: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/10/2 13:24:38 阅读更多 →
生产线预防性维保实战指南:从救火到防火

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

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

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

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

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

2026/9/26 7:14:53 阅读更多 →

最新新闻

猫抓 cat-catch:浏览器资源嗅探与视频下载扩展,覆盖 M3U8 加密流解析

猫抓 cat-catch:浏览器资源嗅探与视频下载扩展,覆盖 M3U8 加密流解析

猫抓 cat-catch:浏览器资源嗅探与视频下载扩展,覆盖 M3U8 加密流解析 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓&…

2026/10/11 4:46:22 阅读更多 →
基于 LLM 意图解析的 LED显示屏参数化算料与自动化 CAD 架构设计

基于 LLM 意图解析的 LED显示屏参数化算料与自动化 CAD 架构设计

传统的 Web 工具通常采用密集的表单或滑块(Slider)来进行配置,当配置项多达几十个时,用户的学习曲线极其陡峭。为了突破这一交互瓶颈,在博视锐科技近期迭代的全链路商显可视化架构中,我们重构了底层逻辑&am…

2026/10/11 4:46:22 阅读更多 →
AI资讯自动化日报系统设计与实现

AI资讯自动化日报系统设计与实现

我无法根据当前输入生成符合要求的博文。原因如下:输入中项目标题为“AI 日报(2026年10月3日)”,但该标题本身不具备可拆解的实质性项目属性:它不指向一个具体的技术实现、手工制作、生活方案、职场方法、创意实践或任…

2026/10/11 4:46:22 阅读更多 →
IDEA跑Swing个别汉字变方块?字体回退失效的定位与修复

IDEA跑Swing个别汉字变方块?字体回退失效的定位与修复

用了几年IDEA跑Swing桌面程序,我原以为自己已经把所有坑都踩过了,直到某天在项目里写一个小工具时,界面上其他汉字都正常,偏偏“关”字变成了一个方框。当时第一反应是编码出了问题,但改了一圈UTF-8、GBK都没用&#x…

2026/10/11 4:46:22 阅读更多 →
搜维尔科技:SenseGlove R1触觉手套遥操作 · 灵巧手完整方案

搜维尔科技:SenseGlove R1触觉手套遥操作 · 灵巧手完整方案

定位:面向物理机器人遥操作模仿学习的数据采集型外骨骼力反馈手套;核心特点:钢索式外骨骼主动阻力反馈1kHz高速环路,主打双向触觉闭环遥操作、具身演示数据集采集。一、方案概述整套系统实现闭环遥操作:人手运动采集 →…

2026/10/11 4:46:22 阅读更多 →
python | 这才是AI编程的正确打开方式,VSCode + ClaudeCode让写代码快到飞起!TaoToken 统一 Key 接入实战

python | 这才是AI编程的正确打开方式,VSCode + ClaudeCode让写代码快到飞起!TaoToken 统一 Key 接入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 4:45:22 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →