← 返回博客列表

【Python量化实战 #08】Python筛选高股息股票:分红数据与股息率计算

2026年07月28日 11:18 · 麦蕊智数 MyData

做红利策略,第一步通常是「拿到可靠的分红记录,再算股息率」。本文是「Python量化实战」第 8 篇,使用 company_dividends 拉取近年分红,并给出股息率粗算骨架。

Playground:https://www.mairuiapi.com/playground
文档:https://www.mairuiapi.com/hsdata

环境准备

pip install mairui pandas

SDK 文档:https://github.com/MaiRuiApi/mairui

拉取分红数据

import os
import pandas as pd
from mairui import Client

licence = os.environ.get("MAIRUI_LICENCE", "your_licence")
code = "600519.SH"

with Client(licence=licence) as api:
    divs = api.company_dividends(code)

div_df = pd.DataFrame(divs or [])
print(div_df.columns.tolist())
print(div_df.tail())

股息率粗算骨架

# 注意:字段名、单位(元/股、送转)以实际返回为准
# 下面仅演示结构,请按 columns 映射后再计算

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(code, "d", "n", lt=5)
bar_df = pd.DataFrame(bars or [])
print(bar_df.tail(1))
print("请将现金分红与现价代入 rough_dividend_yield")

连续分红筛选思路

  • 按年度聚合现金分红次数 / 金额
  • 要求近 N 年每年都有现金分红
  • 再叠加 PE/PB、ROE(可用财报接口,见第 5 篇)

避坑

  • 送转与现金分红不要混在一个口径里。
  • 除权除息日与「能否按当日价简单相除」要分清。
  • 非投资建议;回测请标注区间与数据截止日期。

下一篇:指数与 ETF 数据。Playground:https://www.mairuiapi.com/playground

麦蕊智数 · Python量化实战 #08

QQ 客服 3826425416 咨询时请提供证书号或订单号,便于快速处理
咨询