AI 原生量化投研平台AI-native quantitative research platform
正在加载…Loading…
页面仍在加载,可以继续等待,或重新加载。The page is still loading. You can keep waiting or reload.
部分页面资源未能加载,请重新加载。Some page resources could not load. Please reload.
设备当前处于离线状态,恢复连接后可以继续等待或重新加载。Your device is offline. Once connected, you can keep waiting or reload.
该表提供了中国股票市场上各上市公司的每股指标数据,包括了从基本每股收益到每股自由现金流等多个维度的数据,涵盖最新一期、单季度和滚动十二期数据。旨在给出一个全面的视角来分析公司的盈利能力、资产价值、营运效率和财务健康状况。数据非日频,根据财报的发布更新。
44 个字段
请注意:该表不是日频数据,不能直接作为因子使用。该表适合对财务数据有深入研究的用户,日频财务数据的加工方法见文末“通用文档”。
每股指标(Per Share Metrics)是指公司财务状况和经营成果的重要指标,它们能帮助投资者评估公司的盈利能力和财务健康状况。
| 关键字 | 释意 |
|---|---|
| date | 公告日,表示站在这一天能看到的财务数据(shift = 0 为当时最新一期),不是报告期(报告期见 report_date),可能不是交易日;与 cn_stock_financial_changedate 中的 changedate 对应,详见文末“通用文档” |
| instrument | 股票代码 |
| report_date | 财务报告期,规则见文末“通用文档” |
| shift | 偏移期,站在 date 这一天,向前偏移 n 期的财务数据,0 为当时最新一期,单位为季度 |
字段名由下表的英文字段加后缀组成,后缀表示取数口径:_lf 最新一期,_mrq 单季度,_ttm 滚动十二期。不是每个指标都有三种后缀,具体字段以表结构为准。
| 中文名 | 英文字段 | 中文公式 | 英文公式 |
|---|---|---|---|
| 基本每股收益(原始) | basic_eps_raw | 取自“财务数据” | 取自“财务数据” |
| 基本每股收益 | basic_eps | 归属于母公司所有者的净利润 / 当期实际发行在外的普通股加权平均数 | Net profit attributable to parent company / Weighted average number of ordinary shares outstanding during the period |
| 基本每股收益(期末股本摊薄) | basic_eps_period_capital | 归属于母公司所有者的净利润 / 报告期期末总股本 | Net profit attributable to parent company / Total shares at the end of the reporting period |
| 基本每股收益(最新股本摊薄) | basic_eps_latest_capital | 归属于母公司所有者的净利润 / 最新总股本 | Net profit attributable to parent company / Latest total shares |
| 稀释每股收益(原始) | diluted_eps_raw | 取自“财务数据” | 取自“财务数据” |
| 稀释每股收益 | diluted_eps | 稀释归属于母公司所有者的净利润 / 当期实际发行在外的普通股加权平均数 | Diluted net profit attributable to parent company / Weighted average number of ordinary shares outstanding during the period |
| 基本每股收益(扣除) | real_basic_eps | 扣除非经常损益后的归属母公司净利润 / 当期实际发行在外的普通股加权平均数 | Net profit attributable to parent company after excluding non-recurring gains and losses / Weighted average number of ordinary shares outstanding during the period |
| 基本每股收益(扣除,期末股本摊薄) | real_basic_eps_period_capital | 扣除非经常损益后的归属母公司净利润 / 报告期期末总股本 | Net profit attributable to parent company after excluding non-recurring gains and losses / Total shares at the end of the reporting period |
| 基本每股收益(扣除,最新股本摊薄) | real_basic_eps_latest_capital | 扣除非经常损益后的归属母公司净利润 / 最新总股本 | Net profit attributable to parent company after excluding non-recurring gains and losses / Latest total shares |
| 稀释每股收益(扣除) | diluted_eps_real | 扣除非经常损益后的归属母公司净利润 / 稀释总股本 | Net profit attributable to parent company after excluding non-recurring gains and losses / Diluted total shares |
| 每股净资产 | bps | (归属于母公司所有者权益合计- 其他权益工具) / 最新总股本 | (Total equity attributable to parent company - Other equity instruments) / Latest total shares |
| 每股营业总收入 | total_revenue_ps | 营业总收入 / 最新总股本 | Operating revenue / Latest total shares |
| 每股营业收入 | revenue_ps | 营业收入 / 最新总股本 | Operating income / Latest total shares |
| 每股资本公积 | capital_reserves_ps | 资本公积 / 最新总股本 | Capital reserves / Latest total shares |
| 每股盈余公积 | surplus_reserve_ps | 盈余公积 / 最新总股本 | Surplus reserve / Latest total shares |
| 每股未分配利润 | undistributed_profit_ps | 未分配利润 / 最新总股本 | Undistributed profit / Latest total shares |
| 每股留存收益 | retained_income_ps | 留存收益 / 最新总股本 | Retained earnings / Latest total shares |
| 每股现金流量净额 | cce_ps | 现金及现金等价物净增加额 / 最新总股本 | Net increase in cash and cash equivalents / Latest total shares |
| 每股息税前利润 | ebit_ps | 息税前利润 / 最新总股本 | EBIT / Latest total shares |
| 每股息税折旧摊销前利润 | ebitda_ps | 息税折旧摊销前利润 / 最新总股本 | EBITDA / Latest total shares |
| 每股企业自由现金流量 | fcff_ps | 企业自由现金流量 / 最新总股本 | Free cash flow to firm / Latest total shares |
| 每股股东自由现金流 | fcfe_ps | 股东自由现金流量 / 最新总股本 | Free cash flow to equity / Latest total shares |
2026-10-28 至 2026-11-04 的数据,字段较多,只展示 7 个字段,按日期、股票代码、报告期排序,展示前 5 行和后 5 行。
| date | instrument | report_date | shift | basic_eps_raw_lf | basic_eps_period_capital_lf | basic_eps_latest_capital_lf | diluted_eps_raw_lf | real_basic_eps_period_capital_lf | real_basic_eps_latest_capital_lf | bps_lf | total_revenue_ps_lf | revenue_ps_lf | capital_reserves_ps_lf | surplus_reserve_ps_lf | undistributed_profit_ps_lf | retained_income_ps_lf | cce_ps_lf | ebit_ps_lf | ebitda_ps_lf | fcff_ps_lf | fcfe_ps_lf | basic_eps_period_capital_mrq | basic_eps_latest_capital_mrq | real_basic_eps_period_capital_mrq | real_basic_eps_latest_capital_mrq | total_revenue_ps_mrq | revenue_ps_mrq | cce_ps_mrq | ebit_ps_mrq | ebitda_ps_mrq | fcff_ps_mrq | fcfe_ps_mrq | basic_eps_period_capital_ttm | basic_eps_latest_capital_ttm | real_basic_eps_period_capital_ttm | real_basic_eps_latest_capital_ttm | total_revenue_ps_ttm | revenue_ps_ttm | cce_ps_ttm | ebit_ps_ttm | ebitda_ps_ttm | fcff_ps_ttm | fcfe_ps_ttm |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-10-28 00:00:00 | 000025.SZ | 2008-12-31 00:00:00 | 71 | 0.0208 | 0.0208111 | 0.010635 | 0.0208 | nan | nan | 0.379785 | 1.47984 | 1.47984 | 0.0166165 | 0.00684962 | -0.154706 | -0.147857 | -0.0839752 | 0.034487 | 0.0736304 | 0.0663466 | -0.012631 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| 2026-10-28 00:00:00 | 000025.SZ | 2009-03-31 00:00:00 | 70 | -0.0354 | -0.035407 | -0.0180938 | -0.0354 | nan | nan | nan | 0.219644 | 0.219644 | nan | nan | nan | 0 | 0.00142775 | -0.012181 | -0.012181 | -0.452704 | -0.47259 | -0.035407 | -0.0180938 | nan | nan | 0.219644 | 0.219644 | 0.00142775 | -0.012181 | -0.012181 | -0.452704 | -0.47259 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| 2026-10-28 00:00:00 | 000025.SZ | 2009-06-30 00:00:00 | 69 | 0.013 | 0.0125891 | 0.00643335 | 0.013 | nan | nan | nan | 0.475717 | 0.475717 | nan | nan | nan | 0 | 0.0176486 | 0.0186643 | 0.0403856 | -0.402277 | -0.501039 | 0.0479961 | 0.0245272 | nan | nan | 0.256073 | 0.256073 | 0.0162208 | 0.0308453 | 0.0308453 | 0.0297617 | -0.0491139 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| 2026-10-28 00:00:00 | 000025.SZ | 2009-09-30 00:00:00 | 68 | 0.006 | 0.00594166 | 0.00303634 | 0.006 | nan | nan | nan | 0.759683 | 0.759683 | nan | nan | nan | 0 | 0.0236727 | 0.022486 | 0.022486 | -0.424089 | -0.427272 | -0.00664744 | -0.00339701 | nan | nan | 0.283966 | 0.283966 | 0.00602411 | 0.00382169 | 0.00382169 | 0.00433149 | 0.0999102 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| 2026-10-28 00:00:00 | 000025.SZ | 2009-12-31 00:00:00 | 67 | 0.0286 | 0.0286268 | 0.014629 | 0.0286 | -0.0253553 | -0.0129572 | 0.396452 | 1.00375 | 1.00375 | 0.0181871 | 0.00684962 | -0.13961 | -0.13276 | 0.0758633 | 0.0423326 | 0.0817107 | -0.172241 | -0.153171 | 0.0226851 | 0.0115927 | nan | nan | 0.244071 | 0.244071 | 0.0521906 | 0.0198466 | 0.0198466 | 0.210115 | 0.232368 | 0.0286268 | 0.014629 | nan | nan | 1.00375 | 1.00375 | 0.0758633 | 0.0423326 | 0.0423326 | -0.211619 | -0.192549 |
| 2026-11-02 00:00:00 | 001381.SZ | 2025-09-30 00:00:00 | 4 | 0.59 | nan | nan | 0.59 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| 2026-11-02 00:00:00 | 001381.SZ | 2025-12-31 00:00:00 | 3 | 0.75 | nan | nan | 0.75 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| 2026-11-02 00:00:00 | 001381.SZ | 2026-03-31 00:00:00 | 2 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| 2026-11-02 00:00:00 | 001381.SZ | 2026-06-30 00:00:00 | 1 | 0.38 | nan | nan | 0.38 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| 2026-11-02 00:00:00 | 001381.SZ | 2026-09-30 00:00:00 | 0 | 0.55 | nan | nan | 0.55 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
平台的财务数据分四类,从原始披露到加工指标逐层派生:
| 类别 | 数据表 | 说明 |
|---|---|---|
| 原始数据 | 资产负债表、利润表、现金流量表 PIT(cn_stock_financial_*_pit),财报变更日期(cn_stock_financial_changedate),财务附注(cn_stock_financial_note_*) | 公司披露什么就记录什么,只在披露财报时有记录,不是日频 |
| 衍生数据 | cn_stock_financial_lf_shift、ly_shift、mrq_shift、ttm_shift、notes_shift | 把原始数据加工成最新一期(LF)、最新年报(LY)、单季度(MRQ)、滚动十二期(TTM),并用 shift 带出历史各期 |
| 财务分析 | cn_stock_financial_profitability、growth、operating、debt_repay、capital、cash_flow、earning_quality、xps、derivative | 在衍生数据的基础上做加减乘除得到的财务指标 |
| 盈利预期 | cn_stock_financial_earnings_preview、cn_stock_financial_forecast_consensus_rolling | 业绩快报和机构一致预期,口径独立,见各表文档 |
以上财务表都不是日频数据,不能直接当作每日因子使用,需要先按公告日对齐到交易日,做法见本文五。衍生数据和财务分析适合对财务数据有较深了解、希望构建复杂财务因子的用户。
财务表里有两个时间概念,含义不同,使用时不要混淆:
date:公告日,即这条财务数据对外公布(首次披露或更正)的日期,也是这条数据可以被使用的最早日期。date 不是报告期。report_date:报告期,即这条数据属于哪一期财报。关于 date 的几点说明:
date 就是公告日,原样记录,公告日不是交易日(周末、节假日)时也不会顺延,所以 date 可能不是交易日。按交易日使用时,用 date <= 交易日 取最新的记录即可(见本文五的 ASOF JOIN)。date 来自 cn_stock_financial_changedate 的 changedate,二者约等于同一个日期。数据入库时会去重,所有字段的取值完全相同的记录只保留一条。report_date 首次披露和后来更正,会有不同的 date。date 同样是公告日,表里只有公司有公告的日期。站在这一天,shift = 0 是当时能看到的最新一期,shift = 1, 2… 是更早的各期,数值是当时能看到的版本,示例见本文四。报告期的取值:
上市公司一年内披露四次财务报告,披露时限如下:
判断某一天能看到哪些数据要用 date,不能用 report_date,否则会用到当时还没有公布的数据。
上市公司除了正常披露财务报表外,后续会时常对历史财务数据进行修正。因此在量化投资领域,加工财务数据时不能只用最新修正后的数据,而要基于历史时间节点获取当时能获取的最新数据。PIT(Point In Time)数据指的是在某个时间点上,基于已公布的财务报表获取的某个财务指标的取值。
以 002473.SZ 的财务数据为例,在平台上调用以下代码:
import daiimport pandas as pdpd.set_option('display.float_format', '{:.2f}'.format)
dai.query("""SELECT date, instrument, report_date, change_type, total_current_assetsFROM cn_stock_financial_balance_general_pitWHERE instrument='002473.SZ'AND report_date='2019-12-31'AND date>'2020-01-01'""").df()运行上述代码,能得到以下数据:
| date | instrument | report_date | change_type | total_current_assets |
|---|---|---|---|---|
| 2020-04-30 | 002473.SZ | 2019-12-31 | 0 | 223449880.95 |
| 2020-08-27 | 002473.SZ | 2019-12-31 | 1 | 228470428.90 |
| 2020-10-26 | 002473.SZ | 2019-12-31 | 1 | 228470428.90 |
| 2021-04-29 | 002473.SZ | 2019-12-31 | 1 | 228470428.90 |
该公司于 2020 年 4 月 30 日首次公布 2019 年年报,披露的流动资产(total_current_assets)为 223449880.95,又于 2020 年 8 月 27 日对 2019 年年报的流动资产进行修正,修正为 228470428.90,因此 2019 年年报在表中有多条记录。
date 为 2020-08-27、2020-10-26、2021-04-29 的 total_current_assets 取值相同,这些重复记录是必要的:公司每披露某一期财报,都会附带上年同期或上年年末的数据作对比,极少部分公司即使不发布修正公告,也会通过这种方式修改历史财务数据,所以每次披露都保留一条记录。
原始数据表里与此相关的字段:
| 字段 | 释意 |
|---|---|
| change_type | 0 表示首次披露的财务数据,1 表示非首次披露或有更改的财务数据 |
| fs_quarter_index | 对应季度,1 指一季报,2 指半年报,3 指三季报,4 指年报,仅报表 PIT 表有 |
原始财务数据只在公司披露财报时才有记录,这类非规整的数据很难直接用于量化投资。衍生数据把原始数据加工成四类,字段名就是原始财务字段加上对应的后缀。要查具体字段,先在原始财报的文档里找到财务字段,再加上后缀,比如利润表的 net_profit 对应 net_profit_lf、net_profit_ttm。
cn_stock_financial_lf_shiftcn_stock_financial_ly_shiftcn_stock_financial_mrq_shiftcn_stock_financial_ttm_shift在平台加工的“衍生数据”和“财务分析”两大类财务数据中,我们同样进行 PIT 处理,以 002473.SZ 这只股票的流动资产(total_current_assets)数据举例:
import daiimport pandas as pdpd.set_option('display.float_format', '{:.2f}'.format)
dai.query("""SELECT date, instrument, report_date, shift, total_current_assets_lfFROM cn_stock_financial_lf_shiftWHERE instrument='002473.SZ'AND shift < 3AND ((date='2020-04-30')OR (date='2020-08-27'))""").df().sort_values("date")通过上述代码,我们得到以下数据,可以看出,站在 2020 年 4 月 30 日这一天,我们能获取到的 2019 年年报的流动资产为 223449880.95,但站在 2020-08-27 这一天时,我们能获取到的 2019 年年报的流动资产为 228470428.90。
| date | instrument | report_date | shift | total_current_assets_lf |
|---|---|---|---|---|
| 2020-04-30 | 002473.SZ | 2019-09-30 | 2 | 268546184.69 |
| 2020-04-30 | 002473.SZ | 2019-12-31 | 1 | 223449880.95 |
| 2020-04-30 | 002473.SZ | 2020-03-31 | 0 | 213964081.16 |
| 2020-08-27 | 002473.SZ | 2019-12-31 | 2 | 228470428.90 |
| 2020-08-27 | 002473.SZ | 2020-03-31 | 1 | 233220236.75 |
| 2020-08-27 | 002473.SZ | 2020-06-30 | 0 | 222315509.19 |
衍生数据按公告日存储,不是日频。要得到日频数据,把财务表按公告日对齐到交易日:某一天只使用当天及之前已经公告的最新一期(shift = 0),在下一次公告之前沿用上一期的值。DAI SQL 用 ASOF JOIN 完成。
下面以日频 ROE 为例,ROE = 滚动十二期归属母公司股东的净利润 / 最新一期归属母公司股东的所有者权益:
import dai
df = dai.query("""SELECT b.date, b.instrument, t.net_profit_to_parent_shareholders_ttm / l.total_equity_to_parent_shareholders_lf AS roe_ttmFROM cn_stock_bar1d bASOF JOIN (SELECT * FROM cn_stock_financial_ttm_shift WHERE shift = 0) t ON b.instrument = t.instrument AND b.date >= t.dateASOF JOIN (SELECT * FROM cn_stock_financial_lf_shift WHERE shift = 0) l ON b.instrument = l.instrument AND b.date >= l.dateWHERE b.date >= '2024-01-01'ORDER BY b.date, b.instrument""", filters={"date": ["2023-01-01", "2024-12-31"]}).pl()filters 的起点要早于第一个需要的交易日,这里提前一年,这样起点之前已经公告的财报也能取到。cn_stock_financial_profitability 的 roe_avg_ttm、roe_period_ttm 等字段。平台还提供过已按日频处理好的财务表 cn_stock_factors_financial_items,以 002473.SZ 的流动资产(total_current_assets)数据举例(该表已不建议使用,建议基于衍生数据自行计算):
import daiimport pandas as pdpd.set_option('display.float_format', '{:.2f}'.format)
dai.query("""SELECT date, instrument, total_current_assets_lyFROM cn_stock_factors_financial_itemsWHERE instrument='002473.SZ'AND ((date>'2020-04-25' and date<'2020-05-05')OR (date>'2020-08-25' and date<'2020-09-01'))""").df().sort_values("date")通过上述代码,我们得到以下数据。可以看出,当日期来到 2020 年 4 月 30 日这一天时,我们能获取到最新的流动资产(年报)数据是 223449880.95,这个数值一直保持到 2020 年 8 月 27 日,最新一期年报的流动资产变为了 228470428.90,符合预期。
| date | instrument | total_current_assets_ly |
|---|---|---|
| 2020-04-27 | 002473.SZ | 330113974.90 |
| 2020-04-28 | 002473.SZ | 330113974.90 |
| 2020-04-29 | 002473.SZ | 330113974.90 |
| 2020-04-30 | 002473.SZ | 223449880.95 |
| 2020-08-26 | 002473.SZ | 223449880.95 |
| 2020-08-27 | 002473.SZ | 228470428.90 |
| 2020-08-28 | 002473.SZ | 228470428.90 |
| 2020-08-31 | 002473.SZ | 228470428.90 |
shift 的含义都与衍生数据相同,字段名带 _lf、_mrq、_ttm 后缀。各指标的计算公式见各表文档的“字段说明”。report_date 的月份筛选出 06-30 和 12-31 的记录。非经常性损益等少数科目在一季报、三季报中也有数据。import daidf = dai.query(""" SELECT date, instrument, report_date, capital_reserves_ps_lf, undistributed_profit_ps_lf FROM cn_stock_financial_xps WHERE instrument = '000001.SZ' AND shift = 0 ORDER BY date,instrument,report_date""", filters={"date": ["2023-01-01","2024-04-30"]}).df()import daidf = dai.query(""" SELECT * FROM cn_stock_financial_xps WHERE instrument = '000001.SZ' AND shift = 0 ORDER BY date,instrument,report_date""", full_db_scan=True).df()import daidf = dai.query(""" SELECT date, instrument, report_date, shift, fcfe_ps_lf, fcfe_ps_mrq, fcfe_ps_ttm FROM cn_stock_financial_xps WHERE instrument = '000001.SZ' ORDER BY date,instrument,report_date """, full_db_scan=True).df()SELECT date, instrument, report_date, shift, basic_eps_raw_lf, basic_eps_period_capital_lf, basic_eps_period_capital_mrq FROM cn_stock_financial_xps WHERE date >= '2026-10-06' ORDER BY date LIMIT 100
SELECT date, instrument, report_date, shift, basic_eps_raw_lf, basic_eps_period_capital_lf, basic_eps_period_capital_mrq FROM cn_stock_financial_xps WHERE date >= '2026-10-06' ORDER BY date LIMIT 100