Schema 与字段

AxData Schema 与字段规范

本文说明 AxData 当前核心用户表:stock_basic_exchangetrade_caldailyadj_factor,以及源端接口进入 Downloader/Collector 写出链路时使用的字段规范。主键、日期格式、价格/成交量/成交额单位和 provider 原始字段兼容策略属于稳定契约;新增字段应保持向后兼容,字段改名或单位变化必须进入新版本或显式映射。

通用约定

兼容说明:旧的 stock_basic 查询名保留为 stock_basic_exchange 的兼容别名;新文档、示例和用户主路径统一使用 stock_basic_exchange

字段命名规范 v1

字段规范优先尊重已经闭环的 core 表,不为了统一命名破坏现有查询:

概念对外稳定字段当前兼容/源端字段说明
统一证券代码instrument_idts_codesymbol 概念名、provider_symbolstock_basic_exchange 使用 instrument_iddailyadj_factor 保留 Tushare 风格 ts_code。文档中“统一证券代码 / canonical symbol”指 000001.SZ 这一语义,不把既有 stock_basic_exchange.symbol 粗暴改名。
原始证券代码provider_symbolraw_code既有 symbol既有 stock_basic_exchange.symbol 是交易所六位代码,例如 000001;新 source/raw 字段如需保留原始代码,优先使用 provider_symbolraw_code
交易所/市场源代码exchangesecidtdx_codeexchange 使用 AxData 交易所代码;secidtdx_code 等只作为 provider 原始字段保留,不能替代统一证券代码。
交易日期trade_datecal_datedate行情、复权、专题快照使用 trade_date=YYYYMMDD;日历表使用 cal_date=YYYYMMDD;源端 date 必须映射。
更细粒度时间datetimetrade_timequote_timeprovider 原始时间分钟、逐笔、快照等可以使用更具体字段;进入 core 日线时仍需可映射到 trade_date
价格openhighlowclosepre_closeprovider 原始价格列A 股 core 价格单位为人民币元,未复权。
成交量volvolumecore daily 使用 vol,源端常见 volume 通过 profile field_mappings 标明。
成交额amountprovider 原始成交额core daily.amount 单位为千元;source/snapshot 接口如为元或其它单位,字段说明必须写清。
复权因子adj_factorprovider 原始因子必须大于 0。
采集来源metadata 中的 providersourceinterface_name不进入常规用户表写出链路在 run metadata/quality 中保留来源,core 用户表默认不加采集追踪列。

字段兼容策略:

当前可用能力说明:以下 schema、主键、storage 和 query 路径已经可用,并有小样本测试覆盖。第一批内置交易所/HTTP 源接口保留轻量 DownloaderProfile 和 source_request 能力,可服务 stock_basic_exchange / trade_cal 的小样本检查,但不再提供默认 CollectorSpec。TDX 插件中保留 DownloaderProfile 作为 /v1/downloaders 兼容入口,同时 8 个 TDX 核心采集器由 axdata.collector.tdx 独立 CollectorSpec 提供;stock_capital_changes_tdxstock_adj_factor_tdx 保留为源端接口和兼容 DownloaderProfile,不再作为采集器进入采集页。TDX source Provider manifest 不再声明 collectors。stock_kline_daily_tdx 可通过默认独立采集器写显式代码小样本;stock_adj_factor_tdx 保留 schema、source_request 和兼容下载入口,用于复权因子口径验证和重建能力,不作为默认高频采集任务。文档中的其它写入策略表示推荐设计,不应理解为所有真实源都已经具备全市场长期采集能力。

第一批源端接口 schema 摘要

这批接口的字段真相源仍是各自 sources/*/catalog.py 和 Provider manifest,下面只列主键、默认写入层和主要字段,便于判断采集输出形态。

interface_name层级主键主要字段
stock_trade_calendar_exchangecorecal_datecal_dateis_openpretrade_datenext_trade_date
stock_historical_list_exchangesnapshottrade_date + instrument_idtrade_dateinstrument_idsymbolexchangenamemarketlist_datedelist_datelisting_status
stock_basic_info_exchangecoreinstrument_id复用 stock_basic_exchange 字段
cninfo_announcementsrawinstrument_id + announcement_idinstrument_idannouncement_idtitlepublish_datefile_typefile_size_kbdownload_url
cninfo_announcement_detailrawdownload_urlannouncement_idtitlecontent_typefile_size_bytesdownload_url
tencent_realtime_snapshotsnapshotinstrument_idinstrument_idquote_timelast_pricepre_closeopenhighlowchange_pctamountturnover_ratepe_dynamicpblimit_up_pricelimit_down_price
eastmoney_dragon_tiger_dailyrawtrade_date + instrument_id + reasontrade_dateinstrument_idreasonclose_pricechange_pctbuy_amountsell_amountnet_buy_amounttotal_amount
eastmoney_margin_tradingrawtrade_date + instrument_idtrade_dateinstrument_idmargin_balancemargin_buy_amountmargin_repay_amountshort_balancetotal_balance
eastmoney_research_reportsrawreport_idreport_idinstrument_idtitlepublish_dateorg_nameratingresearchereps_forecast_this_yearpe_forecast_this_year
stock_financial_report_sinarawstatement_type + instrument_id + report_date + item_namestatement_typeinstrument_idreport_datestatement_nameitem_nameitem_valuepublish_datecurrency

第二批 TDX 源端接口 schema 摘要

这两个接口进入 TDX 插件的源端接口和兼容 DownloaderProfile 链路,用于显式代码样本或小批量检查。其中 stock_kline_daily_tdx 另有默认独立 CollectorSpec 可写日线小样本;stock_adj_factor_tdx 只保留接口、schema 和兼容下载能力,不作为默认采集器。如需全市场长期更新,应按采集器规范补充专用转换任务。

interface_name层级主键主要字段
stock_kline_daily_tdxcoreinstrument_id + trade_time + periodinstrument_idsymboltdx_codeexchangetrade_timeperiodopenhighlowclosevolumeamount
stock_adj_factor_tdxcorets_code + trade_dateinstrument_idts_codesymboltdx_codeexchangetrade_dateadj_factor

TDX 日 K 线目前是源端 core 样本口径,保留 instrument_idtrade_timevolume 等源端字段;profile 已声明 instrument_id -> ts_codetrade_time -> trade_datevolume -> vol 映射。真正写入稳定 core.daily 生产分区前仍需 raw/staging -> core 转换任务把这些字段落到 daily schema。

写入策略说明:stock_adj_factor_tdx 的推荐目标是 upsert_by_key ts_code + trade_date 并按 trade_date 分区,但当前不作为默认采集器进入采集页。stock_kline_daily_tdx 的推荐目标是 upsert_by_key instrument_id + trade_time + period 或转换后 upsert_by_key ts_code + trade_date;在正式写入稳定 core.daily 前,仍需确认 trade_time -> trade_datevolume -> vol 等映射和质量规则。

写出质量摘要 v1

Downloader/Collector 写出链路的 quality 字段保留旧键:

同时新增以下摘要字段,供 CLI/API/Web 现有 JSON 展示直接序列化:

字段含义
quality_statusokwarnerror。有 blocking 错误为 error,只有非阻塞提示为 warn
row_count_value实际写出行数。
required_columns_presentprofile/schema 声明的 required columns 是否全部存在。
missing_required_columns缺失的 required columns。
null_countsrequired columns 的空值行数。
duplicate_key_count主键重复影响的行数。
duplicate_key_samples主键重复样本,限制条数,避免 quality JSON 过大。
date_fielddate_range声明日期/时间字段及最小、最大值。
min_datemax_dateactual_date_count日期字段归一化到 YYYYMMDD 后的最小/最大日期和实际日期数。
schema_columnsexpected_columnsunexpected_columns实际列、期望列和额外列。
numeric_positive_checks对价格、成交量、成交额、复权因子等非负/正数列的检查摘要。
field_mappingsprovider/source 字段到 core canonical 字段的兼容映射。
write_mode本次写入模式,例如 snapshotappendoverwrite_partitionreplace_rangeupsert_by_key
partition_bywrite_primary_keywrite_date_field写入策略使用的分区字段、主键和日期字段;primary_key 旧键仍表示质量检查状态。
replace_range_startreplace_range_endreplace_range 本次替换的日期闭区间。
rows_beforerows_writtenrows_after写入前、输入和写入后行数;只在 writer 可低风险获得时填充。
duplicate_rows_droppedpartitions_touchedupsert 去重行数和本次触达的分区标签。
calendar_coverage_status交易日历对齐状态:okwarnerror;缺少本地交易日历时为 warn
expected_trading_day_countactual_trading_day_count数据日期范围内预期交易日数和实际数据日期数。
missing_trading_datesextra_non_trading_dates缺失交易日样本和非交易日多出样本,限制条数。
date_gap_countmissing_date_samples日期缺口数量和样本。
per_symbol_date_coverage按证券代码汇总的小样本日期覆盖摘要。
unexplained_missing_datessuspension_explained_missing_dates缺口解释样本;没有停牌数据时缺口只标记为 unexplained。
price_ohlc_anomaly_countnegative_volume_countnegative_amount_countinvalid_adj_factor_count日 K 线和复权因子专项异常计数。
quality_warningsquality_errors可读的问题摘要。

这些检查按 profile/schema 声明执行:没有日期字段的接口不会因为缺日期而失败;source-only 接口也可以只检查 row_count、required columns 和 primary key。 交易日历检查只对 dailyadj_factorstock_kline_daily_tdxstock_adj_factor_tdx 等行情/复权样本启用。当前采集任务层已经支持 required_datasets=["trade_cal"]:任务运行前会先检查本地交易日历基础数据,缺失或覆盖不足时阻止运行并返回清楚的 dependency_missing 提示;质量检查阶段则在已有日历基础上继续记录日期缺口、非交易日和 calendar_next_action。日期缺口不必然表示源端错误,可能来自停牌、未上市/退市、源端遗漏或采集范围不完整。当前没有历史停牌日期库时,缺口默认归入 unexplained_missing_dates

Data Browser 会直接消费这些字段:列表页优先展示 quality_statusrow_count_valuedate_field/date_rangeschema_columnsquality_warningsquality_errorsfield_mappings 和写入 metadata。旧 run metadata 没有这些 richer 字段时,浏览层会从候选 Parquet 补充 columnsrow_count 和日期范围,写入字段保持空值;补充查询只针对已发现的 parquet 路径,并带默认 limit,不会触发源端请求。

stock_basic_exchange

股票列表(交易所)。一行代表交易所官方股票列表口径下的一只证券。

主键:instrument_id

建议写入策略:交易所当前完整列表每日 22:00 拉取;raw 每次保存,core latest 可整表 snapshot 重建,core history 只在 diff 变化时写入版本;稳定主键路径可演进为 upsert_by_key instrument_id。采集任务、批次、运行参数、质量结果和写入 metadata 写入 metadata/manifest。

调用和识别约定:

概念示例说明
精确查一只股票instrument_id=600000.SH推荐方式;后缀已经说明上市交易所
按交易所查exchange=SSESSE=上交所,SZSE=深交所,BSE=北交所
原始证券代码symbol=600000不带后缀,主要用于和交易所列表核对
字段类型必填说明
instrument_idstringAxData 统一证券代码,例如 000001.SZ600000.SH430047.BJ;后缀已表示上市交易所
symbolstring交易所原始证券代码,例如 000001
exchangestring交易所筛选代码,建议值 SSESZSEBSE
asset_typestring资产类型,本表固定为 stock
namestring证券简称
security_full_namestring证券全称,源不提供时为空
market_codestring市场板块代码
marketstring市场板块,例如主板、创业板、科创板、北交所
industry_codestring行业代码,使用交易所官方列表口径
industrystring行业名称,使用交易所官方列表口径
region_codestring地区代码
regionstring地区名称
company_codestring交易所官方公司代码
company_short_namestring交易所官方公司简称
company_full_namestring公司法定全称
company_short_name_enstring公司英文简称
company_full_name_enstring公司英文全称
listing_statusstringAxData 上市状态,建议值 listeddelistedsuspendedunknown
list_datestring上市日期,YYYYMMDD
delist_datestring退市日期,未退市为空
total_sharedouble总股本,单位:亿股
float_sharedouble流通股本,单位:亿股
is_profitstring是否尚未盈利,保留交易所列表标记
is_viestring是否具有协议控制架构,保留交易所列表标记
has_weighted_voting_rightsstring是否具有表决权差异安排,保留交易所列表标记
sponsorstring保荐机构或主办券商,源不提供时为空
share_report_datestring股本数据报告日期,YYYYMMDD

索引建议:

trade_cal

交易日历表,一行代表一个交易所的一个自然日。

主键:exchange + cal_date

建议写入策略:按交易所和年份 overwrite_partition,或按 cal_date 使用 replace_range;节假日发布后允许修订未来日期。

字段类型必填说明
exchangestring交易所,建议值 SSESZSEBSE
cal_datestring自然日期,YYYYMMDD
is_openboolean是否交易日
pretrade_datestring上一个交易日,YYYYMMDD;非交易日也可填写最近上一交易日

约束:

daily

股票日行情表,一行代表一只股票在一个交易日的未复权日线行情。

主键:ts_code + trade_date

建议写入策略:按 trade_date 分区增量写入;历史修订按分区重写或按 date_field=trade_date 使用 replace_range;稳定 core 写入可使用 upsert_by_key ts_code + trade_date

字段类型必填说明
ts_codestringAxData 统一证券代码
trade_datestring交易日期,YYYYMMDD
opendouble开盘价,未复权,人民币元
highdouble最高价,未复权,人民币元
lowdouble最低价,未复权,人民币元
closedouble收盘价,未复权,人民币元
pre_closedouble昨收价,未复权,人民币元
changedouble涨跌额,人民币元
pct_chgdouble涨跌幅,百分比数值,例如 1.23 表示 1.23%
voldouble成交量,单位:手
amountdouble成交额,单位:千元

约束:

分区建议:

data/core/table=daily/parquet/20260605.parquet

adj_factor

复权因子表,一行代表一只股票在一个交易日的复权因子。

主键:ts_code + trade_date

建议写入策略:按 trade_date 分区增量写入;发生分红送转修订时重建受影响区间;目标写入模式为 upsert_by_key ts_code + trade_date。当前 stock_adj_factor_tdx 保留为源端接口、schema 和兼容下载能力,不作为默认采集器进入采集页。

字段类型必填说明
ts_codestringAxData 统一证券代码
trade_datestring交易日期,YYYYMMDD
adj_factordouble复权因子,必须大于 0

复权视图口径:

约束:

分区建议:

data/core/table=adj_factor/parquet/20260605.parquet