> Source: https://ashareapi.com/docs/guides/screen-expressions/  ·  Markdown version for LLMs / AI agents

教程

# 因子表达式语法与因子字典
 上一篇讲了"怎么筛"，这篇讲清"怎么写条件"：表达式的结构、运算符、单位的陷阱，以及一份可直接查的 85 因子字典——写作风格是"照抄就能跑"。

## 一、表达式只有一种结构
 因子表达式就是一个 `intersect([...])` 调用，括号里是**逗号分隔的条件列表**，表示**全部满足**（AND 逻辑）：

 结构
```
intersect([因子1 运算符 值, 因子2 运算符 值, ...])

# 例：PE 在 0~20、ROE 大于 15%、股息率大于 2%
intersect([PE_TTM > 0, PE_TTM < 20, ROETTM > 15, DividendRatioTTM > 2])
```

-
 **只支持 `intersect`（交集/AND）** —— 没有 `union` / `or`，多条件之间一律"且"

-
 **不支持 `between` / `in` / 括号嵌套** —— 用两个比较（`> 0` 且 `

-
 **同一个因子可以出现多次**（如上面的 `PE_TTM > 0` 和 `PE_TTM

## 二、6 种比较运算符（就这些）
 |
| | 运算符 | 含义 | 示例

| | > | 大于 | PE_TTM > 0

| | | 小于 | PE_TTM

| | >= | 大于等于 | ROETTM >= 15

| | | 小于等于 | TotalMV

| | = | 等于（少用） | —

| | != | 不等于（少用） | —

 >
 大于
 PE_TTM > 0

 <
 小于
 PE_TTM >=
 大于等于
 ROETTM >= 15

 <=
 小于等于
 TotalMV =
 等于（少用）
 —

 !=
 不等于（少用）
 —

 **可以带算式**：词典实测支持 `因子A > 因子B * 系数` 这种形式，例如"收现比"模板 `GoodsSaleServiceRenderCash > OperatingRevenue * 0.9`。

## 三、单位规则（最容易出错的两条）

 对 vs 错
```
# OK：ROE 大于 15%、市值小于 50 亿、股息率大于 2%
intersect([ROETTM > 15, TotalMV < 5000000000, DividendRatioTTM > 2])

# WRONG：把百分数写成小数（会被当成 0.15%）
intersect([ROETTM > 0.15])
```

-
 **百分数字段直接写数字**：`ROETTM > 15` = "ROE 大于 15%"（**不是** `0.15`）；`DividendRatioTTM > 2` = 股息率大于 2%

-
 **金额单位是"元"**：`TotalMV`（总市值）单位是元，50 亿要写 `5000000000`；`NetOperateCashFlowTTM` 等也是元

-
 **比率/倍数单位是"倍"**：`PE_TTM` / `PB` / `PS_TTM` / `CurrentRatio` 直接写倍数

## 四、85 个已验证因子（分类速查）
 下面按类别列出全部因子；「验证」列表示该字段已在实跑中确认可用。

## 4.1 估值（6）
 |
| | 因子 | 含义 | 单位 | 注意

| | PE_TTM | 市盈率 TTM | 倍 | 筛选前先加 > 0（排除亏损）

| | PB | 市净率 | 倍 | 没有 PB_TTM，写 PB_TTM 会报错

| | PS_TTM | 市销率 TTM | 倍 | 市值 / 营收 TTM

| | TotalMV | 总市值 | 元 | 市场唯一的市值因子

| | DividendRatioTTM | 股息率 TTM | % | 直接写数字（> 3 表示 3%）

| | DividendTTM | 分红总额 TTM | 元 | 金额类，别和股息率混

 PE_TTM
 市盈率 TTM
 倍
 筛选前先加 > 0（排除亏损）

 PB
 市净率
 倍
 没有 PB_TTM，写 PB_TTM 会报错

 PS_TTM
 市销率 TTM
 倍
 市值 / 营收 TTM

 TotalMV
 总市值
 元
 市场唯一的市值因子

 DividendRatioTTM
 股息率 TTM
 %
 直接写数字（> 3 表示 3%）

 DividendTTM
 分红总额 TTM
 元
 金额类，别和股息率混

## 4.2 盈利（部分最常用）
 |
| | 因子 | 含义

| | ROETTM | 净资产收益率 TTM（最常用）

| | ROE | 净资产收益率（当期口径）

| | ROECut | 扣非 ROE（体检必备）

| | ROEWeighted | 加权净资产收益率

| | ROIC | 投入资本回报率

| | GrossIncomeRatioTTM | 毛利率 TTM

| | NetProfitRatioTTM | 净利率 TTM

| | NPParentCompanyOwners | 归母净利润（当期）

| | NPParentCompanyOwnersTTM | 归母净利润 TTM

| | OperatingRevenue | 营业总收入

| | GrossProfitTTM | 毛利 TTM

| | NPDeductNonRecurringPL | 扣非归母净利润（体检必备）

 ROETTM
 净资产收益率 TTM（最常用）

 ROE
 净资产收益率（当期口径）

 ROECut
 扣非 ROE（体检必备）

 ROEWeighted
 加权净资产收益率

 ROIC
 投入资本回报率

 GrossIncomeRatioTTM
 毛利率 TTM

 NetProfitRatioTTM
 净利率 TTM

 NPParentCompanyOwners
 归母净利润（当期）

 NPParentCompanyOwnersTTM
 归母净利润 TTM

 OperatingRevenue
 营业总收入

 GrossProfitTTM
 毛利 TTM

 NPDeductNonRecurringPL
 扣非归母净利润（体检必备）

 完整盈利类共 38 个，含各项费用、EBIT、每股指标、三年复合增速等。

## 4.3 成长（部分）
 |
| | 因子 | 含义 | 单位

| | NPParentCompanyYOY | 归母净利同比 | %

| | OperatingRevenueGrowRate | 营收增速 | %

| | TotalAssetGrowRate | 总资产增速 | %

| | NPPCCGrowRate3Y | 归母净利 3 年复合增速 | %

| | ORComGrowRate3Y | 营收 3 年复合增速 | %

| | NetAssetGrowRate | 净资产增速 | %

 NPParentCompanyYOY
 归母净利同比
 %

 OperatingRevenueGrowRate
 营收增速
 %

 TotalAssetGrowRate
 总资产增速
 %

 NPPCCGrowRate3Y
 归母净利 3 年复合增速
 %

 ORComGrowRate3Y
 营收 3 年复合增速
 %

 NetAssetGrowRate
 净资产增速
 %

## 4.4 资产负债（部分）
 |
| | 因子 | 含义 | 单位 | 用途

| | DebtAssetsRatio | 资产负债率 | % | 体检：> 70% 说明杠杆高

| | DebtEquityRatio | 产权比率 | % | 体检：高杠杆放大 ROE

| | CurrentRatio | 流动比率 | 倍 | 短期偿债能力

| | QuickRatio | 速动比率 | 倍 | 更严格的偿债指标

| | TotalShareholderEquity | 股东权益合计 | 元 | 算 ROE 的分母

| | InterestBearDebt | 有息负债 | 元 | 真实债务压力

| | Goodwill | 商誉 | 元 | 减值风险

| | BillAccReceivable | 应收票据及账款 | 元 | 暴雷高发区

| | ARTDays | 应收账款周转天数 | 天 | > 180 说明回款慢

| | Inventories | 存货 | 元 |
| --- | --- | --- | --- |

 DebtAssetsRatio
 资产负债率
 %
 体检：> 70% 说明杠杆高

 DebtEquityRatio
 产权比率
 %
 体检：高杠杆放大 ROE

 CurrentRatio
 流动比率
 倍
 短期偿债能力

 QuickRatio
 速动比率
 倍
 更严格的偿债指标

 TotalShareholderEquity
 股东权益合计
 元
 算 ROE 的分母

 InterestBearDebt
 有息负债
 元
 真实债务压力

 Goodwill
 商誉
 元
 减值风险

 BillAccReceivable
 应收票据及账款
 元
 暴雷高发区

 ARTDays
 应收账款周转天数
 天
 > 180 说明回款慢

 Inventories
 存货
 元

 完整资产负债类共 32 个，含各类周转率、营运资本、合同负债等。

## 4.5 现金流（部分）
 |
| | 因子 | 含义 | 单位

| | NetOperateCashFlowTTM | 经营现金流 TTM | 元

| | NetOperateCashFlow | 经营现金流净额 | 元

| | NetOperateCashFlowYOY | 经营现金流同比 | %

| | FCFF | 企业自由现金流 | 元

| | FCFE | 股东自由现金流 | 元

| | GoodsSaleServiceRenderCash | 销售商品收到的现金 | 元

 NetOperateCashFlowTTM
 经营现金流 TTM
 元

 NetOperateCashFlow
 经营现金流净额
 元

 NetOperateCashFlowYOY
 经营现金流同比
 %

 FCFF
 企业自由现金流
 元

 FCFE
 股东自由现金流
 元

 GoodsSaleServiceRenderCash
 销售商品收到的现金
 元

 完整现金流类共 14 个。

## 4.6 行情（2）
 |
| | 因子 | 含义 | 单位

| | ClosePrice | 收盘价 | 元

| | TurnoverRate | 换手率 | %

 ClosePrice
 收盘价
 元

 TurnoverRate
 换手率
 %

## 五、14 个可直接复制的组合模板
 以下模板来自项目内因子词典的实测记录（2026-08-31 验证），可直接改参数使用。

 三个最常用的模板（可直接复制）
```
# 1) 低估值 + 高盈利 + 分红
intersect([PE_TTM > 0, PE_TTM < 20, ROETTM > 15, DividendRatioTTM > 2])
 --limit 20 --orderby ROETTM --desc

# 2) 格雷厄姆式（保守）
intersect([PE_TTM > 0, PE_TTM < 15, PB < 1.5, DebtAssetsRatio < 50, CurrentRatio > 1.5])
 --limit 20 --orderby PE_TTM --asc

# 3) 成长（双高）
intersect([PE_TTM > 0, PE_TTM < 25, NPParentCompanyYOY > 25,
 OperatingRevenueGrowRate > 20, ROETTM > 12])
 --limit 20 --orderby NPParentCompanyYOY
```

-
 **现金流健康**：`intersect([PE_TTM > 0, NetOperateCashFlowTTM > 0, ROETTM > 10, DebtAssetsRatio

-
 **低负债稳健**：`intersect([PE_TTM > 0, DebtAssetsRatio 10])`

-
 **小盘价值**：`intersect([PE_TTM > 0, PE_TTM 10])` + `--orderby TotalMV --asc`

-
 **白马（大盘质量）**：`intersect([PE_TTM > 0, TotalMV > 100000000000, ROETTM > 12, DividendRatioTTM > 2])`

-
 **破净修复**：`intersect([PB > 0, PB 5, NetOperateCashFlowTTM > 0])` + `--orderby PB --asc`

-
 **高毛利**：`intersect([PE_TTM > 0, GrossIncomeRatioTTM > 50, ROETTM > 15])`

-
 **应收风险排查**（反向用）：`intersect([BillAccReceivable > 0, ARTDays > 180, ROETTM

 **组合原则**：至少带一个"质量"因子（`ROETTM` 或 `NetOperateCashFlowTTM`），否则纯低估值容易筛出一堆"便宜的差公司"。

## 六、8 个必踩的坑（官方词典实测总结）
 |
| | # | 坑 | 说明

| | 1 | PE_TTM 必须加 > 0 | 亏损公司 PE 为负，不加会当"低 PE"筛进来

| | 2 | 大小写敏感 | A 股是 PE_TTM，港股是 PeTTM，写错直接报错

| | 3 | PB 没有 TTM 版 | 写 PB_TTM 不可用

| | 4 | 市值单位是"元" | TotalMV 50 亿要写 5000000000

| | 5 | 市值只认 TotalMV | TotalMarketCap / MarketCap / MV 都不可用

| | 6 | 股息率 = DividendRatioTTM | DividendTTM 是分红总额，DivTTM 是港股写法

| | 7 | 百分数直接写数字 | ROETTM > 15 表示 15%，不要写 0.15

| | 8 | 财报有滞后 | TTM 按最近披露的财报算，注意披露日

 1
 PE_TTM 必须加 > 0
 亏损公司 PE 为负，不加会当"低 PE"筛进来

 2
 大小写敏感
 A 股是 PE_TTM，港股是 PeTTM，写错直接报错

 3
 PB 没有 TTM 版
 写 PB_TTM 不可用

 4
 市值单位是"元"
 TotalMV 50 亿要写 5000000000

 5
 市值只认 TotalMV
 TotalMarketCap / MarketCap / MV 都不可用

 6
 股息率 = DividendRatioTTM
 DividendTTM 是分红总额，DivTTM 是港股写法

 7
 百分数直接写数字
 ROETTM > 15 表示 15%，不要写 0.15

 8
 财报有滞后
 TTM 按最近披露的财报算，注意披露日

## 七、代码格式（前缀决定市场）
 |
| | 前缀 | 市场 | 示例

| | sh | 上交所 | sh600519

| | sz | 深交所（含创业板） | sz300750

| | bj | 北交所 | bj430047

| | hk | 港股 | hk00700

| | us | 美股 | usAAPL

 sh
 上交所
 sh600519

 sz
 深交所（含创业板）
 sz300750

 bj
 北交所
 bj430047

 hk
 港股
 hk00700

 us
 美股
 usAAPL

 配合 `--market` 参数可限定市场：`hs`（A股）/ `hk`（港股）/ `us`（美股）。

## 常见问题
 支持 OR（或）逻辑吗？
 不支持。表达式只有 intersect([...])，括号内全是 AND。需要"或"的效果时，分多次请求再合并结果。

 能筛区间吗？比如 PE 在 10 到 20 之间。
 用两个条件表达：intersect([PE_TTM > 10, PE_TTM 为什么 ROETTM 写 15 而不是 0.15？
 这个接口的百分数字段直接使用"百分数数值"。写 0.15 会被理解为 0.15%，结果几乎为空。

 因子值为什么有时看起来不合理？
 极端值可能来自口径（TTM 与当期差异、非经常性损益、高杠杆）。用 ROECut（扣非）、多口径 ROE、DebtEquityRatio 交叉验证——详见《因子选股入门》第 4、5 节。

 最后更新: 2026-09-29
 因子清单、8 个坑、14 个模板取自实测验证记录（85 因子，2026-08-31 实跑验证）；表达式结构与方案对比 ashareapi /v1/screen 线上返回（2026-09-29）。

 相关

-
[因子选股入门（含数据体检）](/docs/guides/factor-screening)

-
[22 个现成的选股方案（低估值/高股息/高ROE）](/docs/guides/stock-screening-strategies)

-
[实战：价值投资筛选与异常值排查](/docs/guides/value-stock-screening)

-
[端点参考（screen）](/docs/endpoints/screen)

 [← 全部教程](/docs/guides)
