Skip to content
Back to skills

Quantdb Fields

ASecurity

QuantDB 字段单位速查手册 — 全部数据集实测验证的单位、口径与陷阱(个股 volume=股/amount=万元、指数 volume=手、L2原始逐笔 l2_data/tick_data、technical % vs l1 小数、dividend_rate 百分数、PG 前缀 symbol)。用 QuantDB 数据做分析/回测/报告、判断成交量/成交额/股息率/换手率单位、读逐笔委托/成交/十档盘口、排查数据口径不一致时使用。触发词:字段单位、成交量单位、成交额单位、股还是手、万元、股息率、数据口径、L2、逐笔、委托、成交明细、十档盘口、tick_data、wind

  • 1,703 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 5, 2026
developmentpythonbashapibackend

Works with

  • api

Security analysis

A100/100

Scanned October 5, 2026

npx -y skills add qusong0627/QuantMind --skill quantdb-fields --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Quantdb Fields?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Quantdb Fields
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/qusong0627-quantdb-fields/badge)](https://www.skillsdirectory.com/skills/qusong0627-quantdb-fields)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: quantdb-fields
description: "QuantDB 字段单位速查手册 — 全部数据集实测验证的单位、口径与陷阱(个股 volume=股/amount=万元、指数 volume=手、L2原始逐笔 l2_data/tick_data、technical % vs l1 小数、dividend_rate 百分数、PG 前缀 symbol)。用 QuantDB 数据做分析/回测/报告、判断成交量/成交额/股息率/换手率单位、读逐笔委托/成交/十档盘口、排查数据口径不一致时使用。触发词:字段单位、成交量单位、成交额单位、股还是手、万元、股息率、数据口径、L2、逐笔、委托、成交明细、十档盘口、tick_data、wind"
---

> ⚙️ 本技能遵循公共运行环境契约(最高优先级,先于本文其余内容执行):
> 详见 [_shared/env-contract.md](../_shared/env-contract.md),执行前先读它。

# quantdb-fields — QuantDB 字段单位速查手册

> 用 QuantDB 数据做任何分析/回测/报告前**必读**。所有单位均为
> **2026-08 直接读本地 parquet 实测验证**(不是照抄文档)。
> 单位搞错的后果:成交额差 1 万倍、股息率差 100 倍、换手率差 100 倍——
> 分析结论全部作废。

## 一、通用规则(先记这个)

| 规则 | 说明 |
|---|---|
| **个股 OHLC = 元** | 开高低收统一为人民币元(与市值同量纲) |
| **个股成交量 = 股** | A 股 1 手 = 100 股,但 QuantDB 个股 kline 的 `volume` 单位就是**股**,不是手 |
| **个股成交额 = 万元** | `amount = 5828.37` 表示 5828.37 **万元**(约 5828 万),不是元 |
| **指数成交量 = 手** | `index_daily.volume` 单位是**手**(1 手 = 100 股),与个股相反! |
| **市值 = 元** | valuation 的 `total_mv/float_mv` 单位是**元**(工业富联 float_mv ≈ 1.31 万亿) |
| **比例字段 ≈ 小数或 %** | 没有统一约定,按数据集查下表;% 的字段值 = 百分数(4.06 即 4.06%) |
| **symbol 格式按数据源分** | parquet 用**后缀** `601138.SH`;PG 的 `stock_daily_latest` 用**前缀** `SH601138` |
| **验证公式** | 个股 `close*volume/amount ≈ 1e4`(股+万元);指数 ≈ 2e4(手+万元) |

## 二、1_kline_data 日线(daily_forward / daily_backward / daily_unadjusted)

| 字段 | 单位 | 实测依据 |
|---|---|---|
| `volume` | **股** | 601138 20260814 volume=4704920 股,amount=5828.37 万元,close*volume/amount≈1e4 |
| `amount` | **万元** | 同上(close 66.19 × 470 万股 ≈ 3.1 亿 ≈ 31163 万元,与 amount 同量级吻合) |
| `open/high/low/close` | 元(forward=前复权,backward=**后复权**,unadjusted=不复权) | |
| 单位切换传闻 | **不存在**。20260721 前后 amount 均为万元、volume 均为股。曾有记忆说 20260721 切换到"手/元",实测已无此切换,按股/万元统一处理 | |

**min1/min5**:同单位(volume=股、amount=万元),但数据**停滞在 2026-07-24**,用前先查最新日期。

## 三、L2 原始逐笔与十档盘口(1_kline_data/l2_data + tick_data,2026-08 新增)

万得(Wind) L2 数据,`backend/scripts/wind_l2_import.py` 从**逐日 7z 压缩包**(`20260511.7z`)导入。
**当前实测只有 1 个交易日 20260511**(order 1950 + trade 1721 = 3671 文件,部分标的仅其一),
用前先查日期覆盖:`ls data/quantdb/1_kline_data/l2_data/ | grep -oE '[0-9]{8}' | sort -u`。

文件命名:`order_{code}_{date}.parquet` / `trade_{code}_{date}.parquet`,code 为**下划线**格式
`000001_SZ`(对应后缀 `000001.SZ`)。`time` 单位统一为 **UTC 毫秒**(万得 hhmmssmmm 转 UTC,
北京 09:15:00 = 01:15:00 UTC),覆盖 09:15 集合竞价到 15:00 收盘。

### 逐笔委托 order_
| 字段 | 单位/格式 | 说明 |
|---|---|---|
| `time` | UTC ms | 09:15 集合竞价 → 15:00 收盘 |
| `order_id` | int | 交易所委托号(可与 trade_.ask_order_id/bid_order_id 配对) |
| `channel` | str | 委托编号 |
| `order_type` | str | `'0'`=普通委托、`'U'`=撤单、`'1'`=其余 |
| `direction` | str | `'B'`=买 / `'S'`=卖 |
| `price` | **元** | 万得 ×10000 → 元(已归一);集合竞价未定价委托 price=0 |
| `volume` | **股** | |

### 逐笔成交 trade_
| 字段 | 单位/格式 | 说明 |
|---|---|---|
| `time` | UTC ms | 同上 |
| `trade_id` | int | 成交编号 |
| `trade_type` | str | `'C'`=**集合竞价**成交 / `'0'`=连续竞价 |
| `direction` | str | `'B'`/`'S'`/`' '`(集合竞价段=空格) |
| `price` | **元,未复权** | 与 `daily_unadjusted` 对齐(实测 000001.SZ 20260511 末笔 11.28 = unadjusted close 11.28);与 `daily_forward` 前复权 close 有除权差(有分红送转者差数十%) |
| `volume` | **股** | ⚠️ 沪≈日线量、深≈2×日线量(见坑1) |
| `ask_order_id` / `bid_order_id` | int | 叫卖/叫买序号 → 配对逐笔↔委托 |

### tick_data 十档盘口快照(18 列)
| 列 | 单位 | 说明 |
|---|---|---|
| `lastPrice/open/high/low/lastClose` | 元 | |
| `amount` | **混源** | ⚠️ 见坑2 |
| `volume` | **混源** | 当日累计成交量 |
| `pvolume` | 笔 | 连续竞价成交笔数(wind 导入有值);旧导入=0(**可作来源判据**) |
| `askPrice/bidPrice` | array(10) | 十档价,元 |
| `askVol/bidVol` | array(10) | 十档量,股 |
| `stockStatus` | int | BS 标志 |
| `openInt/settlementPrice/lastSettlementPrice` | — | 期货占位字段,A股多为 0 |

### ⚠️ 三个必踩的坑
1. **沪/深成交量双口径**:逐笔成交 volume 求和,**沪 SH = 日线 volume(实测 600714.SH 求和 34825501≈日线 34825500)**;
   **深 SZ ≈ 1.8~2.1× 日线 volume(实测 002830 1.92×、300521 2.11×、000999 1.79×、000001 1.88×)**。
   → 逐笔求和**不能**当当日成交量,深市除 ~2 或直接与日线对账。
2. **tick_data 单位混源**:同一目录内**单位不统一**——wind_l2_import 导入的(如 20260511)volume=**股**、amount=**万元**;
   更早 QuantDB tick 同步的(如 20260720)volume=**手**、amount=**元**。
   实测:20260511 最后快照 volume 93186521≈日线 93186520 股、amount 104743.53≈104743.54 万;
   20260720 volume 1567304 手×100=156730400 股、amount 1713460189 元=171346.02 万。
   → 用前**必须**拿最后一条快照对账日线,或按 `pvolume`(0=旧/手·元,>0=wind/股·万元)区分。
3. **价格=未复权真实成交**:有除权除息时与前复权日线差一个复权因子
   (实测 002830.SZ 20260511 L2 末笔 24.08 vs 前复权 close 17.06);算收益需先统一复权口径。

### 导入命令(手动增量,**不吃 quantdb_daily_sync**)
```bash
python backend/scripts/wind_l2_import.py --archive /path/to/20260511.7z                      # 全市场
python backend/scripts/wind_l2_import.py --archive ... --symbols 000001.SZ,600519.SH         # 指定标的
python backend/scripts/wind_l2_import.py --archive ... --force                               # 覆盖重导
```
文件名即日期(`20260511.7z` → 20260511),流式逐股解压导入、可断点续跑(已存在三件套自动跳过)。
容器内 7z 默认 `/opt/p7zip-legacy/bin/7z`,数据目录自动探测 `/data/quantdb` 或本地 `data/quantdb`。

## 四、1_kline_data/index_daily 指数日线(⚠️ 与个股相反)

| 字段 | 单位 | 实测依据 |
|---|---|---|
| `volume` | **手**(×100=股) | 上证 000001.SH 20260814 volume=499525600 手 = 499.5 亿股(合理);close*volume/amount=19808≈2e4 |
| `amount` | **万元** | 99037192 万元 = 9903.7 亿元 ≈ 上证单日成交额 ✓ |
| `close` | 点位 | 3927.18 |

> 反推:指数平均股价 = close×100/(close×volume/amount) = close×100/19808 ≈ 19.8 元/股,符合 A 股平均股价,故 volume 必为手。

## 五、5_technical_derived 技术衍生

### valuation(估值)
| 字段 | 单位 | 注意 |
|---|---|---|
| `close` | 元,**不复权** | 601138 close=66.19(与 technical_indicators 的后复权 close=70.05 不同) |
| `total_mv / float_mv` | **元** | float_mv=1313480468277.96 ≈ 1.31 万亿 ✓ |
| `total_capital / circulating_capital` | 股 | 19844092284 股 ≈ 198.4 亿股 |
| `net_profit_ttm / revenue_ttm / equity / annual_net_profit` | 元 | |
| `pe_ttm / pe_static / pb / ps_ttm` | 倍 | |
| `dividend_rate` | **%(百分数值)** | 0.148 = **0.148%**!公式 = 近一年每10股派息/10/close×100。601138: 0.98/10/66.19×100=0.1481 ✓;600519: 51.98/10/1341.99×100=0.3873 ✓。**把它当小数会差 100 倍** |
| `dividend_rate` 口径切换 | **20260814 起** | 此前为小数口径(每10股派息/不复权close,如 0.98/65.60=0.01494);20260814 起切换为百分数口径(×100)。同字段历史不连续,跨 20260814 分析需 ×10 归一 |

### technical_indicators(技术指标)
| 字段 | 单位 | 陷阱 |
|---|---|---|
| `close` | **后复权** | 601138=70.05,与不复权 66.19 不同;凡基于 close 算的指标都是后复权口径 |
| `volume_ma_3/5` | 股 | |
| `amount_ma_5` | 万元 | |
| `pct_change` | **%** | 1.4717 = 1.47% |
| `future_return_1d / future_return_20d` | **未来 N 日收益(标签)** | 2026-09 由 `return_Nd` 改名;勿当历史动量或过滤条件(标签泄漏)。历史动量用 `pct_change` / l1 `mom_ret_*` |
| `vol_std_20` | **%** | 4.0578 = 4.06%(l1 里同名字段是小数 0.0406,差 100 倍!) |
| `vol_atr_14` | **元** | 3.58 元(l1 同名字段也是元,一致) |
| `macd_hist / rsi_14 / kdj_*` | 原始指标值 | 与 l1 一致 |

### market_sentiment(市场情绪)
| 字段 | 单位 |
|---|---|
| `close` | 不复权 |
| `turnover_rate` 等比率 | 小数(0.02 = 2%) |
| `momentum_*` | %(百分数值) |

## 六、6_ml_datasets 因子

### features_daily(技术+估值合并表,**78 列**,2026-09 起新增 30 列)
基础 46 个数值列单位与 technical_indicators / valuation 一致;**新增 30 列全部以字符串存储**,用前先转数值:

| 字段 | 单位 | 实测/注意 |
|---|---|---|
| `dividend_rate` | **小数口径(无 ×100)** | 与 valuation 不同!公式 = 每10股派息/不复权close(0.98/66.19=0.0148),**从未切换口径**。valuation 20260814 起是它的 10 倍。特征快照 generate_feature_snapshots.py 已 ×10 归一到百分数口径 |
| `total_mv / float_mv / pe / pb 等` | 与 valuation 完全一致 | 实测 601138 全部 ✓ |
| `total_cap_yi / float_mv_yi` | **亿元** | 实测 `×1e8/total_mv=1.000`、`×1e8/float_mv=1.000`(与本表 `total_mv/float_mv`(元)差 1e8) |
| `free_float_shares` | **万股**(自由流通股本) | `×1e4` 转股;000001.SZ=816056.58 万股≈81.6 亿股(**自由流通 < 流通股本**,勿与 `circulating_capital` 混用) |
| `hs_turnover` | **%**(换手率) | 如 0.43 / 1.71,max≈76 |
| `zaf` | **%**(当日涨跌幅) | 与 `pct_change` 高度一致(corr=0.986,-0.93 vs -0.928) |
| `seal_strength` | 无量纲(封板强度,≈1.0 封住) | 如 1.02 |
| `ever_zt_count` / `year_zt_days` | 计数(整数) | 曾涨停次数 / 年内涨停天数 |
| `ipo_price` | 元 | 发行价 |
| `zt_price` / `dt_price` | **元(基于不复权价)** | 涨停价/跌停价;⚠️ 与表内**前复权** close 不同口径(勿直接比;000001.SZ: zt=13.04/dt=10.67 vs 前复权 close=18.16) |
| `beta_now` | 无量纲(beta) | 与 `beta_20` corr≈0.71(窗口/口径不同) |
| `dyna_pe` / `static_pe_ttm` | 倍 | ⚠️ 含负哨兵(实测 -686 / -897),亏损股勿直接用 |
| `div_yield` | **%(百分数值)** | 5.14=5.14%;与本表 `dividend_rate`(小数 0.0508)**差 100 倍** |
| `pb_mrq` | 倍 | ≈`pb`(`pb_mrq/pb` median=1.000) |
| `list_date` | 字符串 `YYYYMMDD` | 如 '19910403' |
| `industry_code / industry_name` | 字符串 | 128 细分行业(X5001 / 全国性银行) |
| `sector_code` | 字符串 | 如 881386 |
| `region_area_code / region_area_name` | 字符串 | 32 地区板块(18 / 深圳板块) |
| `main_business` | 中文文本 | 主营业务 |
| `in_hs300 / is_hsgt / is_margin / is_kcb_creatable / is_st / is_quit_risk / is_hk` | 字符串 `'0'/'1'` | 标记位(转 int 后再过滤/统计) |

### l1_factors(一级因子,decimal 为主)
| 字段 | 单位 |
|---|---|
| 收益率类 `mom_ret_*` | 小数(0.0147 = 1.47%) |
| `vol_std_*` | **小数**(0.0406 = 4.06%;与 technical_indicators 的 % 版本差 100 倍) |
| `vol_atr_14` | **元**(3.55 元) |
| `fun_total_mv` | **ln(市值元)** —— 用时要 exp() |
| 分位数/percentile 字段 | 0~1 小数 |
| `liq_* / fun_turnover / fun_mv` | 部分日期为 None,注意补缺 |

### l2_factors(二级因子,flow 金额注意)
| 字段 | 单位 | 实测依据 |
|---|---|---|
| `flow_net_amount / flow_buy/sell / flow_super/large/medium/small_net` | **万元**(2026-09 起) | 与同表 `amount` 同量纲:`flow_net_amount/amount≈flow_net_ratio`;此前为**元**(`flow/(amount×1e4)≈ratio`) |
| `flow_*_ratio` | 小数 | |
| `vol_turnover_total` | **股** | 与 kline volume 完全相等 ✓ |
| 分区 | 已恢复日更 | ⚠️ top 少数净流入可能厂商同值封顶 |

**读入归一**:`backend/shared/quantdb_flow_units.py` 自动把万元→元(兼容旧分区),下游再 `/1e8`→亿、`×1e-6`→百万元。

**flow 灌入口径**(update_sdl_complete_pipeline.py):假定源为元时 `/1e6`→百万元;新版万元源须先 ×1e4。

## 七、PG 表 stock_daily_latest(API 服务数据源)

| 列 | 单位 / 格式 | 实测依据 |
|---|---|---|
| `symbol` | **前缀格式** `SH601138`(不是 601138.SH) | suffix 查询 0 行,prefix 查询 1072 万行 |
| `volume` | 股 | 601138 max_volume=633217088 股 |
| `amount` | **万元** | 601138 amount=5828.37,max_amount=3306339(万元) |
| `float_mv / total_mv` | 元 | float_mv=7095151630 元 |
| `turnover_rate / flow_net_amount / main_flow` | **NULL**(未灌) | 风险评分里"缺少换手率"由此而来 |
| `volume_ratio_5` | 倍(0.934) | |

## 八、research API 换算表(/research/features 等接口返回)

API 层 `_UNIT_SCALES` 把部分字段缩放后输出(L2 金额先归一为元):

| 输出字段 | 缩放 | 输出单位 | 例 |
|---|---|---|---|
| `totalMv / floatMv` | ×1e-8 | 亿元 | |
| `mainFlow / flowNetAmount / flowLargeNet / flowMediumNet / flowSmallNet / flowSuperNet` | ×1e-6 | 百万元 | 统一口径 |
| `turnoverRate` | — | % 小数 | |

## 九、3_financial_data 财务数据

| 数据集 | 字段 | 单位 |
|---|---|---|
| `balance / income / cashflow` | 各科目 | 元 |
| `capital` | 股本 | 股 |
| `holder_num` | 股东户数 | 户 |
| `dividend_factors` | `interest` | **每10股派息(元)**——600519 每10股派 51.98 元,601138 派 0.98 元。算每股股息要 /10 |
| `dividend_factors` | `stockBonus / stockGift / allotNum` | 每10股送/转/配股数 |
| `dividend_factors` | `dr` | 除权因子(复权用) |

## 十、2_base_sector

| 数据集 | 字段 | 单位 | 注意 |
|---|---|---|---|
| `instrument_detail` | `Symbol` | 后缀 601138.SH | HqDate 停滞 **20260720**,市值/估值滞后 |
| | `J_zgb / FreeLtgb` | **万股**(1984409.25 万股 = 198.4 亿股) | 与 valuation 的 circulating_capital(股) 差 1e4 |
| | `J_yysy / J_jly / J_zzc` 等 J_* | **万元**(25107808 万 = 251 亿) | 与 financials 的元差 1e4 |
| | `Zsz / Ltsz` | **亿元**(11211.91 亿 ✓) | |
| | `J_mgsy` | 元(2.14 元/股) | |
| | `fHSL` | 不明(0.56,非换手率%,与自算 0.74% 不符),**别当换手率用** | |
| | `TotalBVol` | 不明(43555,量级像手,但远小于全天量) | L2 快照字段,非全天 |
| | `DYRatio` | 不可靠(600519=4.15 vs 真实 0.39%),**别当股息率**,用 valuation.dividend_rate | |
| | `Yield` | 不明(6078.44),勿用 | |
| `index_weights` | `Weight` | **%** | 文件名 `000300.SH.parquet` 不是 `000300.parquet` |
| `trading_calendar` | `TradingDate` | YYYYMMDD int | |

## 十一、其他数据集

| 数据集 | 字段 | 单位 | 状态 |
|---|---|---|---|
| `margin_trading` | `finance_*` | 万元 | |
| | `slo_volume / slo_net` | 股 | |
| `hsgt_north` | `holding_quantity` 股 / `holding_value` 元 / 比率 % | | **停滞 2024-08**(北向改季度披露后) |

## 十二、已知数据缺口(2026-08 实测)

1. **min1/min5** 分钟线停更(最新 2026-07-24)
2. ~~l2_factors 分区停更~~ —— **已恢复**(2026-08-19 实测至 20260818)
3. **hsgt_north** 北向明细停更(2024-08,改季度披露所致)
4. **instrument_detail** HqDate 滞后(20260720)
5. **dt=20260729~20260802** 个股日线有同步缺口(非交易日+同步中断)
5b. **valuation dt=20260813** 只有 101 行(同步缺口,dividend_rate 全 NaN),features_daily 同日 5543 行正常
6. **technical_indicators / features_daily 的 `future_return_*`(旧 `return_*`)是未来收益标签**,勿当历史动量过滤
7. **stock_daily_latest** 的 turnover_rate/flow_net_amount/main_flow 常为 NULL
8. **l2_data 原始逐笔仅 20260511 单日** —— 万得按日 7z 手动导入(`wind_l2_import.py`),非自动日更
9. **tick_data 单位混源** —— wind=股/万元,旧同步=手/元,对账前勿直接用

## 十三、分析前检查清单

- [ ] 确认数据源是 parquet 还是 PG/API(单位体系不同)
- [ ] symbol 格式匹配数据源(parquet 后缀 / PG 前缀)
- [ ] 成交量:个股=股,指数=手
- [ ] 成交额:万元(API 输出已缩放为亿/百万)
- [ ] 波动率:technical_indicators 是 %,l1 是小数(差 100 倍)
- [ ] 股息率:valuation.dividend_rate 是 % 百分数值(0.148=0.148%),不是小数
- [ ] close 口径:technical_indicators 是后复权,valuation 是不复权
- [ ] 市值:parquet 是元,instrument_detail 是亿元/万股,API 是亿元
- [ ] 财务:financials 是元,instrument_detail J_* 是万元
- [ ] 用前查数据最新日期(分钟线、l2、hsgt 都可能已停更)
- [ ] L2 原始逐笔(l2_data):先查日期覆盖(当前仅 20260511 单日),价格是未复权,逐笔求和沪≈日线量/深≈2×,别当成交量
- [ ] tick_data:先拿最后一条快照对账日线(wind=股/万元 vs 旧同步=手/元,单位混源)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…