【Python量化实战 #08】想躺收分红?用 Python 算准高股息股票股息率(附选股)
·
系列:Python量化实战 · 第 8 篇
想拿分红做长线收息,第一关就被卡住:去哪查一只股票历年分了多少?股息率到底怎么算才不算错?网上攻略要么给个含糊公式、要么直接用不复权价相除,结果差出一大截。本文用 Python 拉取真实分红数据,给出一套股息率粗算与「连续分红」筛选思路,避开除权除息的坑。
本文你将得到什么
- 用
company_dividends拉取个股历年分红,转 DataFrame 看结构 - 一套「现金分红 ÷ 现价」的股息率粗算函数(含除权除息提醒)
- 「连续 N 年分红」筛选思路,可叠加估值/盈利做过滤
- 3 个容易踩的坑(除权失真、数据截止日、送转与现金分口径)
SDK 文档:https://github.com/MaiRuiApi/mairui
运行环境: Python 3.11+ · pandas 2.0+
环境准备
pip install mairui pandas
import os
import pandas as pd
from mairui import Client
licence = "LICENCE-66D8-9F96-0C7F0FBCD073" # 演示证书,演示证书(读者复制即用,无需替换)
stock_code = "600519.SH"
获取分红数据
with Client(licence=licence) as api:
dividend_raw = api.company_dividends(stock_code)
dividend_df = pd.DataFrame(dividend_raw or [])
print(dividend_df.columns.tolist())
print(dividend_df.tail())
股息率粗算骨架
def rough_dividend_yield(cash_div_per_share: float, price: float) -> float:
if price <= 0:
return float("nan")
return cash_div_per_share / price
with Client(licence=licence) as api:
bars = api.stock_history(stock_code, "d", "n", lt=5)
price_df = pd.DataFrame(bars or [])
print(price_df.tail(1))
print("将现金分红与现价代入 rough_dividend_yield(字段自行对齐)")
连续分红筛选思路
- 按年度统计是否有现金分红
- 要求近 N 年每年都有
- 再叠加估值/盈利指标做过滤
送转与现金分红请分口径处理。
避坑
- 除权除息机制会导致「简单相除」失真。
- 标注数据截止日期,便于复现。
- 非投资建议。
下一篇
第 9 篇:指数行情与 ETF 列表数据拉取。
写在最后
本文只做数据接入与代码演示,不构成任何投资建议,股息率计算仅为方法演示,不对收益作任何承诺。
如果这套「Python量化实战」对你有用,欢迎关注系列持续更新;
更多推荐


所有评论(0)