跳到主要内容

数据模型与 Schema 参考

金融工具的身份分为三个层级:

  • assets——金融工具,每个 ISIN 一个;
  • asset_listings——其报价位置:代码、交易所、货币;
  • asset_mappings——金融工具或某个上市品种在特定数据提供方处的标识符(Yahoo 代码、页面 URL……)。

同一个 ISIN 会以多个代码和货币上市;同一个代码在不同市场上可能指代不同的金融工具;而各数据提供方接受的标识符也不尽相同。models.py 是所有列的权威参考。

身份​

表规则
assets每个 ISIN 一行:部分唯一索引 uq_assets_isin_not_null(WHERE isin IS NOT NULL)
asset_listings在 (asset_id, ticker, exchange, currency) 上唯一(uq_asset_listing_identity);is_primary 标记默认上市品种
asset_mappings在 (asset_listing_id, provider_name) 上唯一。不关联上市品种的映射适用于该金融工具的所有上市品种。source 说明标识符的来源:csv_import、manual、isin_search、ticker_check、symbol_not_found

上市品种的 Yahoo Finance 映射保存其已验证的代码——根据 ISIN 查得并按上市品种的货币核对——或者在 source = 'manual' 时,保存你手动设置的代码。

价格​

表说明
prices_eodTimescaleDB 超表。键为 (asset_listing_id, resolution, time):每个上市品种和分辨率对应一个序列。time 是交易日日期,取 UTC 午夜时刻。open、high、low、close 是已针对拆股调整的成交价格;adj_close 还针对分红进行了调整。超过 14 天的分块会被压缩(按上市品种和分辨率分段)
price_series_adjustments每个序列(上市品种和分辨率)一行:其 K 线的调整方式(scheme)以及最后一次整体获取的时间(fetched_at)。没有对应行的序列会在下一次采集时被完整地重新获取
prices_weekly, prices_monthly基于日线的连续聚合,按上市品种计算,每天刷新;当该上市品种没有存储 1W/1M 行时使用
prices_intraday来自实时数据流的 1 分钟 K 线超表,按金融工具存储,分块为一天,30 天后清除
realtime_subscriptions正在推送的代码,启动时恢复
ingest_log每次采集一行:状态、来源、行数、区间、耗时、错误

基本面​

表说明
fundamentals_highlights金融工具的最新快照(估值、盈利能力、股息、空头头寸、偿债能力)。dividend_yield 为比率
financial_statements每种报表类型(利润表、资产负债表、现金流量表)、财务期间和频率各一行。一个财年为三行;计算时通过 financials/fiscal_years.py 将它们组合起来
earnings_history, earnings_trend实际与预估每股收益;分析师对 0q、+1q、0y、+1y 的预估
analyst_ratings一致评级、目标价、评级数量
esg_scoresE/S/G 评分及 15 个争议标志
outstanding_shares_history股本数量历史
etf_details, etf_holdings用于读取 ETF 信息,但目前应用不会写入
fundamentals旧版表,不再写入

这些表由基于 Yahoo Finance 的深度补全写入(/fundamental/deep、import_assets.py --enrich-only)。

新闻、宏观与使用情况​

表说明
news_articles在 url 上唯一;为信息流和统计建有索引。旧文章不会自动清除
macro_rates_cache从 FRED 读取的序列,在 (series_id, observation_date) 上唯一
usage_logs每个 API 请求一行,由后台批量写入;除非 USAGE_LOG_IP 要求,否则不保留 IP;在 USAGE_LOG_RETENTION_DAYS 之后清除

监控​

表说明
provider_health_log超表,每个被检查的值一行(check_type 为 canary、realtime 或 consensus),保留 30 天
provider_health_daily每个数据提供方的每日聚合,在 (provider_name, date) 上唯一
provider_alertscanary_failed 和 high_outlier_rate 告警,包括活跃和已解决的