docs(factor): 补提被代码引用的选型/红线文档——survey§7口径红线+dsa深查+P0晨报 [nas]
fundamental_adapter/library docstring 引用 survey §7 口径红线与 §3 候选池, 三文档一直未入库(仅存本机),合流后将成悬空引用: - fundamental_factor_survey_20260907.md: 96 候选池+P0 32 选型+§7 五条红线 - dsa_fundamental_factors_20260907.md: dsa 因子库深查(可搬/不搬结论) - factor_fundamental_morning_report_20260908.md: P0 批晨报(存档) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,246 @@
|
||||
# dsa 基本面因子/评分/信号 全量挖掘报告(2026-09-07)
|
||||
|
||||
> 调研对象:`/Users/chufeng/.openclaw/sanguo_projects/daily_stock_analysis/`(git @ 972c3146)
|
||||
> 方法:系统性过 strategies 全部 YAML、src/ 全树 grep(factor/score/fundamental/financial/roe/pe/pb/margin/yoy/growth/revenue/profit/earnings/dividend)、data_provider/ 全部 provider、因子/评分引擎、主 agent 流程。每条结论带 file:line,读码不猜。
|
||||
> 已知背景(不重复):`data_provider/fundamental_adapter.py` AkshareFundamentalAdapter 与 `strategies/growth_quality.yaml` 之前查过,本报告收录并补齐**其余所有层**。
|
||||
|
||||
---
|
||||
|
||||
## 0. 一句话总结论(回答用户问题)
|
||||
|
||||
**dsa 的基本面因子:有,但呈「浅量化、深定性」结构。**
|
||||
- **量化截面层(真因子)**:只有**估值 + 市值**两类——`value` 因子(PE/PB 双截面秩)、`size` 因子(log 市值秩),加一圈 PE/PB/市值硬过滤、PE 无效惩罚、PB 过高风险罚点、value×stability 复合加分。**成长/盈利质量(ROE/毛利率/双 YoY/现金流)从未进入量化截面评分**。
|
||||
- **定性层**:ROE、营收/净利 YoY、毛利率、经营现金流、TTM 分红、业绩预告等 ~15 个基本面字段全部走「单票 fail-open 快照 → LLM prompt 表格 → LLM 定性打分」路径,无截面化、无回测、无 IC。
|
||||
- **总量**:截面可回测真因子 **2 个**(value/size)+ 边界/罚点配置族 **4 处** + 规则复合加分 **1 处**;LLM 定性基本面框架 **3 个**(growth_quality/expectation_repricing/event_driven)+ 估值带宽策略配置 **4 个**(dual_low/blue_chip_income/quality_value/low_volatility_quality);单票基本面字段 bundle **~15 字段**(3 个市场 adapter);公告/业绩事件关键词规则 **2 组词表**。
|
||||
- **对我们的净新增价值**:不在 PE/PB 因子本身(我们 101/158 批已有估值+市值),而在 **① TTM 分红事件级精算口径 ② 业绩预告/快报事件词表与截面化潜力 ③ 「同一因子按策略风格参数化不同带宽」的组织方式**。
|
||||
|
||||
---
|
||||
|
||||
## 1. dsa 架构总览(基本面数据流向)
|
||||
|
||||
dsa 里存在**两套策略体系、一条主分析流程**,基本面在三者中角色完全不同:
|
||||
|
||||
```
|
||||
┌─ 体系A:量化筛选管线(AlphaSift 衍生,src/services/screening/)
|
||||
│ L1 全市场快照(snapshot.py: PE/PB/市值 来自实时行情)
|
||||
│ → 硬过滤(filter.py: PE/PB/市值边界)
|
||||
│ → 9因子截面评分(scorer.py: value/liquidity/momentum/reversal/activity/stability/size/theme_heat/topic_alignment)
|
||||
│ → screen_score = Σ 因子×权重
|
||||
│ L2 LLM 重排(ranker.py: final_score = screen_score×0.6 + llm_score×0.4)
|
||||
│ L3 后置分析(post_analysis.py: dsa overlay / 本地 scorecard / external_http)
|
||||
│ → 风险覆盖层(risk.py: invalid PE/high PB 罚点) → 组合分散惩罚 → Top N
|
||||
│
|
||||
├─ 体系B:LLM 技能策略(strategies/*.yaml 16个,自然语言 prompt)
|
||||
│ 主分析流程(analyzer.py) 拉单票 fundamental_context(bundle)
|
||||
│ → prompt 里渲染成 markdown 表格(财报/分红/资金流/三大法人/PE PB)
|
||||
│ → LLM 输出 sentiment_score + fundamental_analysis(文字) + signal_attribution.fundamentals(0-100)
|
||||
│ → 决策稳定器(analyzer.py: 资金流bias×价格位置 硬规则后处理)
|
||||
│
|
||||
└─ 元评估层:skill_opinion_weight_service(LLM技能观点的贝叶斯后验命中率→权重,非基本面)
|
||||
```
|
||||
|
||||
**关键事实:体系A(量化)与体系B(LLM定性)通过 `analysis_skills` 字段桥接**——如 `momentum_quality.yaml:10` 声明 `analysis_skills: [bull_trend, growth_quality]`,即量化筛出的候选交给 growth_quality 这个 LLM 框架做基本面定性复核(src/services/screening/strategy.py:243,306 解析)。
|
||||
|
||||
---
|
||||
|
||||
## 2. 完整清单:基本面因子/信号总表
|
||||
|
||||
### 2.1 层A:量化截面因子引擎(`src/services/screening/`,AlphaSift 衍生)
|
||||
|
||||
#### A1. `value` 估值因子 ★真因子
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `src/services/screening/scorer.py:191-204`(`_compute_value_score`) |
|
||||
| 输入 | `pe_ratio`、`pb_ratio` 列,来自全市场实时快照(`snapshot.py:46-47` 标准列;各源列名映射 `snapshot.py:684-790`,如 akshare_em 的「动态市盈率/市净率」`snapshot.py:701-702`;tushare 源直接取 `pe,pb,total_mv,circ_mv` `snapshot.py:604`) |
|
||||
| 逻辑 | `score=50`;若有 PE:`rank(0<PE<500, 越低越好, na=25) → score = score×0.35 + pe_rank×0.65`;再若有 PB:`rank(0<PB<50, 越低越好, na=25) → score = score×0.55 + pb_rank×0.45`,clip(0,100)。秩归一化用 `pct rank ×100`(`scorer.py:490-505 _rank_score`) |
|
||||
| 输出 | `factor_value_score`(0-100,截面百分位秩,`scorer.py:11`) |
|
||||
| 使用 | 加权进 `screen_score`(`scorer.py:102-108`),权重按策略 YAML 配置:dual_low 0.34 / quality_value 0.32 / blue_chip_income 0.30 / balanced_alpha 0.22 / low_volatility_quality 0.20 / momentum_quality 0.15 / capital_heat 0(`src/services/screening/strategies/*.yaml`) |
|
||||
|
||||
#### A2. `size` 市值因子 ★真因子
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `scorer.py:376-384`(`_compute_size_score`) |
|
||||
| 输入 | `total_mv`(快照实时总市值) |
|
||||
| 逻辑 | `log10(total_mv)` 截面秩(市值越大分越高,`lower_is_better=False`),clip(0,100) |
|
||||
| 输出 | `factor_size_score`(`scorer.py:17`) |
|
||||
| 使用 | 权重 0.02~0.12(blue_chip_income 0.12 最高;大市值倾斜) |
|
||||
|
||||
#### A3. `stability` 因子内的 PE 无效惩罚
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `scorer.py:336-338` |
|
||||
| 逻辑 | `PE<=0`(亏损股)→ stability 扣 `stability_invalid_pe_penalty`(默认 18 分,`scorer.py:60`) |
|
||||
| 输出 | 并入 `factor_stability_score` |
|
||||
| 性质 | 半因子:亏损惩罚,等效于 E>0 过滤的软化版 |
|
||||
|
||||
#### A4. PE/PB/市值硬过滤(10 个量化策略的估值带宽配置族)
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 配置定义 | `src/services/screening/models.py:19-22`(`pe_ttm_min/max, pb_min/max, market_cap_min/max`) |
|
||||
| 实现位置 | `src/services/screening/filter.py:66-71`(沪深)与 `filter.py:146-151,246-251`(边界记录) |
|
||||
| 典型带宽 | dual_low `pe 0-15 / pb 0-2 / 市值 50-3000亿`(`dual_low.yaml:23-29`);blue_chip_income `pe 0-22 / pb 0-3.2 / 市值≥300亿`(`blue_chip_income.yaml:23-30`);quality_value `pe 0-25 / pb 0-4`(`quality_value.yaml:23-29`);balanced_alpha `pe 0-80 / pb 0-8`(`balanced_alpha.yaml`);低波质量 `pe 0-45 / pb 0-5`;momentum_quality `pe 0-60 / pb 0-8` |
|
||||
| 性质 | 不是因子,是**同一估值维度按风格参数化的硬边界**——思想可借鉴 |
|
||||
|
||||
#### A5. 风险覆盖层的 PE/PB 罚点
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `src/services/screening/risk.py:19-21`(默认 `invalid_pe_points=3.0, high_pb=8.0, high_pb_points=2.0`);应用在 `risk.py:164-169` |
|
||||
| 逻辑 | `PE<=0` → +3 风险点(flag `negative_or_invalid_pe`);`PB>=8` → +2 点(flag `high_pb`);风险点→bounded penalty 扣 `final_score`(`risk.py:66-78`) |
|
||||
| 输出 | `risk_flags` 标签 + `final_score` 扣减 |
|
||||
|
||||
#### A6. scorecard 复合加分(value×stability 交互项)
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `src/services/screening/post_analysis.py:32-55`(profile 默认值)、`post_analysis.py:306-308`(规则) |
|
||||
| 逻辑 | `value≥75 且 stability≥65` → final_score +2.4(tag `value_quality`);各策略 YAML 覆盖阈值(如 blue_chip_income `value_quality_value_min: 74.0, value_quality_bonus: 2.5`) |
|
||||
| 性质 | 估值×稳定性交互项,规则加分,可作为因子交互设计参考 |
|
||||
|
||||
#### A7. L2 LLM 重排混合(估值字段进 prompt)
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `src/services/screening/ranker.py:196-197`:`final_score = screen_score×(1-0.40) + llm_score×0.40`;候选行渲染带 `total_mv/PE/PB/factor_scores/dsa_context`(`ranker.py:382-403`) |
|
||||
| 性质 | LLM 见到 PE/PB 做语义归因,40% 权重混入最终分——**不可回测部分** |
|
||||
|
||||
#### A8. L3 DSA overlay(LLM 深分析分数词表化)
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `src/services/screening/dsa.py:248-265`(`_compute_dsa_overlay_score`)、词表 `dsa.py:18-34` |
|
||||
| 逻辑 | `(signal_score-50)×0.20 + (sentiment_score-50)×0.12 + 操作建议词表(强烈买入+10…卖出-12) + 趋势词表(看多+4…看空-6) - min(风险数×2, 6)` |
|
||||
| 性质 | LLM 输出的规则化映射,非基本面因子 |
|
||||
|
||||
**层A小结**:9 因子中 `momentum/reversal/activity/stability/liquidity/theme_heat/topic_alignment`(`scorer.py:142-150`)均为量价/热度类(输入 change_pct/change_60d/volume_ratio/turnover_rate/signal_score/macd/rsi/波动/回撤/ATR/板块热度,见 `scorer.py:218-311,387-466`),**基本面相关的只有 A1-A6**。
|
||||
|
||||
### 2.2 层B:单票基本面数据 bundle(fail-open,喂 LLM 的原料)
|
||||
|
||||
#### B1. AkshareFundamentalAdapter(A 股)——已知背景,收录行号
|
||||
| 块 | 字段 | 位置 | 数据源 |
|
||||
|---|---|---|---|
|
||||
| growth | `revenue_yoy / net_profit_yoy / roe / gross_margin`(关键词抓取最新一期) | `data_provider/fundamental_adapter.py:315-330` | `stock_financial_abstract` / `stock_financial_analysis_indicator`(`fundamental_adapter.py:306-310`) |
|
||||
| earnings.financial_report | `report_date / revenue / net_profit_parent / operating_cash_flow / roe` | `fundamental_adapter.py:331-339` | 同上 |
|
||||
| earnings.forecast_summary | 业绩预告**文字**(截 200 字) | `fundamental_adapter.py:343-356` | `stock_yjyg_em` / `stock_yjbb_em` |
|
||||
| earnings.quick_report_summary | 业绩快报**文字** | `fundamental_adapter.py:359-370` | `stock_yjkb_em` |
|
||||
| earnings.dividend | 事件级 TTM 精算:按除息/登记/公告日过滤+未来事件剔除+(日期,金额)去重 → `events[:5] / ttm_event_count / ttm_cash_dividend_per_share`(税前现金口径) | `fundamental_adapter.py:168-237`(`_build_dividend_payload`) | `stock_fhps_detail_em` / `stock_history_dividend_detail` / `stock_dividend_cninfo`(`fundamental_adapter.py:373-377`);每股金额从「10派X元」中文方案文本解析(`fundamental_adapter.py:107-142`) |
|
||||
| institution | `institution_holding_change`(机构增减原始值)/ `top10_holder_change` | `fundamental_adapter.py:386-410` | `stock_institute_hold/recommend`、`stock_gdfx_top_10_em`、`stock_zh_a_gdhs_detail_em` |
|
||||
| capital_flow | `main_net_inflow / inflow_5d / inflow_10d` + 板块资金排名 | `fundamental_adapter.py:416-473` | 东财资金流 |
|
||||
| dragon_tiger | 龙虎榜 flag(20 日窗口) | `fundamental_adapter.py:473+` | — |
|
||||
|
||||
#### B2. TTM 股息率派生(A 股路径)★口径精华
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `data_provider/base.py:4349-4380` |
|
||||
| 逻辑 | `ttm_dividend_yield_pct = round(ttm_cash_dividend_per_share / latest_price × 100, 4)`,价格复用已拉的实时 quote 不额外请求;失败记 `invalid_price_for_ttm_dividend_yield`;落 `yield_formula` 字段自证口径 |
|
||||
| 对齐 | 港美股同口径:`yfinance_fundamental_adapter.py:316-354`(分子分母同币种,`info.dividendYield` 仅末位兜底且按 percent 直通);`futu_fundamental_adapter.py:169-199`(TTM 事件截断 + 实时价) |
|
||||
|
||||
#### B3. YfinanceFundamentalAdapter(港/美股)
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `data_provider/yfinance_fundamental_adapter.py:146-374` |
|
||||
| growth 4 点 | `revenueGrowth/earningsGrowth/returnOnEquity/grossMargins`(info 比率 ×100 转百分比,`yfinance_fundamental_adapter.py:187-195`);**若季报有 ≥5 期则改用同比真值**(`(latest-prev_year)/|prev_year|`,显式拒绝 QoQ——季节性业务会算错,`yfinance_fundamental_adapter.py:94-108,244-253`) |
|
||||
| financial_report | 季报营收/归母净利/经营现金流 + 币种分离(`financialCurrency` 报表币种 vs `currency` 交易币种,`yfinance_fundamental_adapter.py:183-184`) |
|
||||
| belong_boards | `info.sector + info.industry` 映射成行业/概念板块(`yfinance_fundamental_adapter.py:356-366`) |
|
||||
|
||||
#### B4. FutuFundamentalAdapter(港,OpenD 配置时优先)
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `data_provider/futu_fundamental_adapter.py:76-136`(`_financials`) |
|
||||
| 逻辑 | 拉-income/balance_sheet/cash_flow/indicators 四表各 8 期;growth 三点 `revenue_yoy/net_profit_yoy`(取 futu 自带 yoy)+ `gross_margin=毛利/营收×100`(自算,`futu_fundamental_adapter.py:104-112`);full report 含基本 EPS |
|
||||
| 兜底合并 | futu 部分失败时 yfinance **字段级补洞**(`base.py:3669-3760`,`_field_gaps` 检查 growth 三字段+报表四字段+分红契约) |
|
||||
|
||||
#### B5. valuation 块(三市场统一)
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `data_provider/base.py:3919-3924`(离岸);A 股同构 |
|
||||
| 逻辑 | `pe_ratio/pb_ratio/total_mv/circ_mv` **直接取实时行情快照字段**——注意这是「动态市盈率」快照,非按报告期计算的 PE_TTM |
|
||||
|
||||
#### B6. TW 三大法人(台股筹码,institution 块)
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 位置 | `data_provider/tw_institutional_fetcher.py:103-171`(`get_institutional_net`);TWSE T86 三大法人买卖超日报,`foreign=外陆资(不含外资自营商)` 口径对齐官方合计(`tw_institutional_fetcher.py:48-59`) |
|
||||
| 注入 | `analyzer.py:4241-4252` 渲染成「三大法人动向(台股筹码过滤器)」表格 |
|
||||
|
||||
### 2.3 层C:主分析流程中基本面的最终用法(analyzer.py)
|
||||
|
||||
| # | 环节 | 位置 | 形态 |
|
||||
|---|---|---|---|
|
||||
| C1 | PE/PB/市值进实时行情表 | `src/analyzer.py:4108-4120` | LLM prompt 表格 |
|
||||
| C2 | 财报与分红表(价值投资口径):营收/归母净利/经营现金流/ROE/TTM 每股分红/TTM 股息率/TTM 事件数 | `src/analyzer.py:4122-4165` | LLM prompt 表格;缺数据时强制写「数据缺失,无法判断」禁编造(`analyzer.py:4164`) |
|
||||
| C3 | 主力资金流向表(操作建议过滤器):主力净流入/5 日/10 日/板块排名 | `src/analyzer.py:4167-4218` | LLM prompt + 硬规则(见 C6) |
|
||||
| C4 | LLM 输出字段:`fundamental_analysis`(文字)、`earnings_outlook`(业绩预期文字,`analyzer.py:1974`)、`signal_attribution.fundamentals`(基本面贡献度 0-100,LLM 自报,`analyzer.py:2010-2017`)、checklist 检查项「PE估值合理」(`analyzer.py:1996`) | — | 文字/自报分数 |
|
||||
| C5 | `sentiment_score` 评分标准由 LLM 按策略技能加减(见层D) | — | LLM 打分 |
|
||||
| C6 | **决策稳定器 decision_stability(硬规则后处理)** | `src/analyzer.py:1040-1175`(bias 计算 `analyzer.py:1279-1318`) | 规则:资金流三值(主力/5日/10日)全同向才给 inflow/outflow,否则 neutral(`analyzer.py:1309-1318`);再与价格位置矩阵组合——近压力+非流入→禁止追高;流出+未突破→降级;近支撑+非流出+无重大风险→持有观察(`analyzer.py:1093-1171`)。**这是全 dsa 唯一的基本面类硬规则信号**(资金流维度) |
|
||||
|
||||
### 2.4 层D:LLM 技能策略 YAML(`strategies/`,16 个全部过完)
|
||||
|
||||
基本面实质涉及的 **3 个**(其余 13 个纯技术/量价/情绪——bull_trend/ma_golden_cross/shrink_pullback/volume_breakout(仅一句 PE 提示 `volume_breakout.yaml:41`)/box_oscillation/chan_theory/wave_theory/one_yang_three_yin/bottom_volume(仅「基本面催化」确认项)/dragon_head(仅业绩催化列举)/emotion_cycle(仅机构持仓一项特征)/hot_theme/capital_heat 不涉财务计算):
|
||||
|
||||
| 策略 | 基本面逻辑 | 评分规则(LLM sentiment_score 调整建议) | 位置 |
|
||||
|---|---|---|---|
|
||||
| **growth_quality 成长质量** | ①成长性:营收/归母净利/经营现金流/ROE 四字段,查增收不增利 ②质量:ROE 高且稳 + 现金流与利润同向 ③估值承受力:PE/PB/市值 vs 增长覆盖 | 四同向改善 **+15**;行业景气与新闻互证 **+6**;高估值成长未验证 **-8**;增收不增利或现金流恶化 **-12** | `strategies/growth_quality.yaml:27-39,50-54` |
|
||||
| **expectation_repricing 预期重估** | 预期差方向判定 + 估值重估是否有基本面支撑(PE/PB/市值/ROE/现金流) | 正向预期差未兑现 **+15**;已兑现 **-5**;负向/证伪 **-15** | `strategies/expectation_repricing.yaml:35-38,44-51` |
|
||||
| **event_driven 事件驱动** | 事件五分类(业绩/政策/订单产品/资本运作/监管风险)+ 影响路径(收入/利润率/估值/融资/份额/情绪)+ 兑现程度 | 高可信未反映 **+14**;利好兑现 **-6**;负面发酵 **-15** | `strategies/event_driven.yaml:29-43` |
|
||||
|
||||
**性质**:全部是自然语言指令,依赖 B 层数据 + LLM 判断,输出文字+分数建议,**不可回测、不可截面**。
|
||||
|
||||
### 2.5 层E:候选事件关键词规则(`src/services/screening/candidate_context.py`)
|
||||
|
||||
| # | 词表 | 关键词 | 位置 | 用法 |
|
||||
|---|---|---|---|---|
|
||||
| E1 | 正面事件 | 回购增持/订单经营/业绩改善(**预增/扭亏/增长/净利润增长**)/股东回报/激励 | `candidate_context.py:25-31` | `classify_context_events`(`candidate_context.py:307-317`)打 event_tags |
|
||||
| E2 | 负面事件 | 减持/监管/业绩压力(**预亏/亏损/业绩下滑/业绩减少/净利润下降**)/**财务风险(债务/逾期/违约/商誉减值/资产减值)**/退市风险/诉讼风险 | `candidate_context.py:17-24` | 同上 + `negative_event_flags` |
|
||||
| E3 | 公告类别 | 业绩/回购增持/减持/监管问询/重大合同/分红融资/诉讼担保/股权激励 | `candidate_context.py:32-41` | `classify_announcement_categories`(`candidate_context.py:331-343`) |
|
||||
| E4 | 来源置信 | source_confidence/source_weight_score(announcement 1.0 > quote 0.85 > fund_flow 0.75 > news 0.65) | `candidate_context.py:42-47,456-477` | 标注上下文可信度 |
|
||||
|
||||
**用途**:tags 注入 L2 排序 prompt 上下文(`pipeline.py:354-390` 采集;`ranker.py` 消费),**不直接进分数**——但词表本身是现成的「公告事件分类器」。
|
||||
|
||||
### 2.6 元层:LLM 技能观点绩效权重(非基本面,记录备查)
|
||||
`src/services/skill_opinion_weight_service.py:48-197`:按可归因的技能观点结局算贝叶斯后验命中率 → `direction_score = 2×hit_rate - 1` → 运行时权重因子;`src/agent/skills/aggregator.py:65-100` 加权聚合多技能观点。`src/services/screening/models.py:241-284` 有 PickEvaluation/EvaluationResult dataclass(选股结果回评模型),评估实现未在 src/api 中接线(仅 tests)。
|
||||
|
||||
---
|
||||
|
||||
## 3. 性质判定:真因子 vs 定性框架
|
||||
|
||||
### 3.1 可截面化可回测的真因子(可借鉴进因子池)
|
||||
|
||||
| 判定 | 名称 | 理由 |
|
||||
|---|---|---|
|
||||
| ✅ 真因子(简单) | **A1 value = PE 秩×PB 秩混合** | 全市场快照、截面 pct-rank、0-100、日频可复算。等价于我们已有的 EP/BP rank——**逻辑无新增,实现可参考**(na 给 25 分而非剔除的软处理、0<PE<500 值域过滤) |
|
||||
| ✅ 真因子(简单) | **A2 size = log 市值秩** | 标准市值因子,与我们 Size 因子同构 |
|
||||
| ⚠️ 半因子 | **A3 PE≤0 亏损惩罚 / A5 invalid PE + high PB 罚点** | 本质是 E>0 过滤 + BP 极值惩罚的软化实现,我们已有更干净的 EP/BP 处理 |
|
||||
| ⚠️ 半因子 | **A6 value×stability 交互加分** | 「低估值×低波动」交互项思想可测(我们因子池有估值和低波,可造交互因子验证增量) |
|
||||
| ✅ **数据工程真价值** | **B2 TTM 分红事件级精算** | 除息/登记/公告日三级取日 + 未来事件剔除 + (日期,金额)去重 + 中文「10派X」解析 + 分子分母同币种 + yield_formula 自证——**这是分红因子的正确口径**,直接可抄进我们的数据层 |
|
||||
| ✅ **数据工程真价值** | **E1-E3 业绩预告/快报/财务风险词表** | `预增/扭亏/预亏/商誉减值/债务违约` 等词表是现成的公告分类标签集,配合我们 NAS corpus(ann_meta/ann_pdf 43万公告)可截面化成事件因子 |
|
||||
| ✅ 可借鉴思路 | **A4 估值带宽参数化** | 同一 PE/PB 维度按策略风格给不同硬边界(防御 0-15 vs 动量 0-80)——对我们 Selector/Overlay 层的「风格化阈值」设计有直接参考价值 |
|
||||
| ✅ 可借鉴思路 | **C6 资金流×价格位置决策稳定器** | 三窗资金流同向确认 + 支撑/压力位置矩阵的规则组合,可作为 Overlay 层规则参考(数据源我们有 margin/hotrank 墙) |
|
||||
|
||||
### 3.2 单票定性框架(只可借鉴思路,不可直接搬)
|
||||
|
||||
| 判定 | 名称 | 理由 |
|
||||
|---|---|---|
|
||||
| ❌ 定性 | **B1 growth 4 点(revenue_yoy/net_profit_yoy/roe/gross_margin)** | 关键词抓「最新一行」,**无报告期对齐、无 point-in-time**——直接截面化会引入前视(用了未按披露日过滤的最新报表)与滞后(慢报公司拖尾)双坑。我们已有 `_latest_published_annual` 点时修复(fundamentals-lookahead-bias-fix),用我们自己的管线做,别搬它的取数 |
|
||||
| ❌ 定性 | **D 层 growth_quality 四框架 / expectation_repricing / event_driven** | LLM prompt 指令,输出不可复现不可回测;其中「增收不增利」「现金流<利润→应收回款风险」是可量化的好假设,应转成我们自己的因子假设 |
|
||||
| ❌ 定性 | **C4 signal_attribution.fundamentals / LLM sentiment_score** | LLM 自报贡献度,无监督信号 |
|
||||
| ❌ 不可搬 | **A7/A8 LLM 重排混合 + DSA overlay** | final_score 40% 来自 LLM 主观分——回测无法复现 |
|
||||
| ❌ 不适用 | **B6 TW 三大法人** | 台股专属,A 股无对应口径(A 股等价物=北向/两融,已在我们的 margin/hotrank 数据里) |
|
||||
|
||||
---
|
||||
|
||||
## 4. 并入我们因子批的建议(按优先级)
|
||||
|
||||
| 优先 | 建议并入 | 改造方式 | 理由 |
|
||||
|---|---|---|---|
|
||||
| **P1** | **TTM 股息率因子(dividend_yield_ttm)** | 数据口径照抄 `fundamental_adapter.py:168-237` + `base.py:4349-4380`(事件级去重/税前现金/除息日截断/同币种),数据源换成我们的巨潮公告(ann_meta 已有分红公告)或东财 `stock_fhps_detail_em`;截面化 = 每日全市场 TTM 股息率 → rank。**防前视:除息日 ≤ T 当日才计入事件** | 我们 101/158 因子批目前无分红类因子(族分析 12 独立源里无);红利风格在 A 股长期有效且与量价族相关性低,是天然的独立源;口径工程 dsa 已趟过坑(中文方案解析/去重/币种) |
|
||||
| **P1** | **业绩预告事件因子(forecast_surprise 品类)** | 词表起点用 `candidate_context.py:20,28`(预增/扭亏/预亏/亏损/净利润增长/下降);数据源用东财 `stock_yjyg_em`(全市场表,含预告类型+变动幅度)或我们 corpus 的 ann_meta 标题分类;截面化 = 预告类型哑变量(预增+1/扭亏+1.5/预亏-1)+ 变动幅度数值化,**披露日对齐防前视** | 业绩预告是 A 股最强事件源之一(预告→正式报表之间有 1-4 月信息窗);我们 corpus 43 万公告已就位,正好复用;这是 dsa 有而我们没有的**数据维度**(vs PE/PB 只是实现差异) |
|
||||
| **P2** | **财务风险 flag 因子(distress_flags)** | 词表照抄 `candidate_context.py:21-23`(债务/逾期/违约/商誉减值/资产减值/质押/退市);从 ann_meta 公告标题批量打标 → 月频 0/1 或计数因子,作负向 Overlay | 商誉减值/债务违约在 A 股有强烈的年报季集中爆雷效应,可作价值策略的风控 Overlay;成本极低(词表+标题匹配) |
|
||||
| **P2** | **估值带宽风格化(Selector 层设计,非因子)** | 参考 `strategies/*.yaml` 的 pe/pb 带宽分层:防御型 Selector 用 PE 0-15/PB 0-2,动量型放宽到 0-60/0-8,价值因子权重 0.30-0.34 vs 0.15 | 我们的「验证文化平台」定位下多策略共用因子池,同一估值维度按策略风格参数化带宽是成熟做法,避免一套阈值包打天下 |
|
||||
| **P3** | **value×lowvol 交互因子** | A6 思想:EP_rank × 低波_rank 交互项,进候选池走 ICIR 验证 | 交互项是否优于线性组合是个可检验假设,成本低 |
|
||||
| **不做** | growth 4 点直接截面化 / LLM 打分层 / TW 法人 | 见 §3.2 | 前视坑/不可复现/无对应数据 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 附:查证覆盖面声明
|
||||
|
||||
- `strategies/` 16 个 LLM YAML 全文读完(§2.4);`src/services/screening/strategies/` 10 个量化 YAML 全文读完(§2.1-A4)。
|
||||
- `src/` 全树 grep 关键词:fundamental/财务/基本面/factor/score/scoring/roe/pe_ratio/pb/margin/yoy/growth/revenue/profit/earnings/dividend/peg/ebitda/sue/accrual/负债率/周转率/每股收益/净资产收益——**确认无 PEG/EBITDA/SUE/应计/周转率/负债率等深度财务比率计算**。
|
||||
- `data_provider/` 20 个文件全列,fundamental 相关 4 个(base.py 聚合 + 3 个 adapter)全读;akshare_fetcher.py 确认无独立财务报表函数(财务全走 fundamental_adapter)。
|
||||
- 评分引擎 scorer/ranker/risk/post_analysis/dsa/filter/models/snapshot/candidate_context/pipeline 全读。
|
||||
- 主流程 analyzer.py 基本面段(1000-1200, 1270-1350, 4100-4300, 1950-2050)+ notification.py 渲染段(2230-2340)+ data_tools.get_stock_info(496-547)+ analysis_context_builder/prompt_pack 全查。
|
||||
@@ -0,0 +1,89 @@
|
||||
# 财务因子批·无人值守晨报(2026-09-08)
|
||||
|
||||
> Goal:基本面因子开发(无人值守)。本文档为整夜双线(因子线+数据线)交付汇总。
|
||||
|
||||
## 一、一夜总览
|
||||
|
||||
| 线 | 结果 |
|
||||
|----|------|
|
||||
| **因子线(本 goal 主体)** | ✅ 32 个 P0 财务因子全链路开发完成(代码+146 测试全绿);全窗口 IC 分两段跑通(h1 零错误完成;h2 见下);族分析+跨批暗相关见下 |
|
||||
| 数据线(财务136,旧 goal) | ✅ dmsk 补缺层收案(210 unit/1771 发/零失败/键唯一 PASS/净新增 383 只含退市北交);本 session 独立抽验 PASS |
|
||||
| 过程事故 | 2 次 OOM(NAS 7.9G 内存 vs 全量 join 10G+ 峰值)→ 分块 join 补丁(eb7db2b)+分两段跑根治 |
|
||||
|
||||
## 二、因子开发交付明细
|
||||
|
||||
- **分支** `factor-fundamental`(7 个本批 commit,**未 push**,等你定夺合流)
|
||||
- **模块**:`sanguo_factor/fundamental_adapter.py`(三表+forecast→PIT 日频 33 特征列,466 行)+ `fundamental_library.py`(32 因子注册)+ `batch_eval.py` 最小扩展(fund_data_dir 三层 fallback)+ 测试 24 个新增(合成数据 TDD,含分块等值测试)
|
||||
- **铁律遵守**:未 push master、未写 NAS 现有数据任何路径(因子执行读 static 镜像只读,评估写独立新库 `factor_eval_fundamental.db`)
|
||||
|
||||
### 32 因子清单(六族)
|
||||
A 盈利 7(roe_ttm/roe_deduct/roa/gp_over_assets/gross_margin/net_margin/cfo_over_assets)· B 质量 7(tacc/nonrec/impairment/invest_income_dep/receivables_anomaly/sales_cash/other_rece)· C 成长 6(rev_q_yoy/np_q_yoy/growth_scissors/gm_delta/roe_delta/asset_growth)· D 估值 4(ep_ttm/ep_deduct_ttm/bp/cp)· E 资本 4(nsi/equity_fin_intensity/ibd_ratio/goodwill_ratio)· F 预期 4(sue_np/sue_rev/forecast_type/forecast_change)
|
||||
|
||||
## 三、IC 验证结果
|
||||
|
||||
### h1 段(2016-01-01 ~ 2021-06-30,4175 只,32 因子零错误,52 分钟)
|
||||
|
||||
| 梯队 | 因子(ICIR) |
|
||||
|------|-------------|
|
||||
| 第一梯队 ≥0.15 | 成长剪刀差 **0.236**、净利单季同比 0.208、SUE 0.200、EP 0.181、EP扣非 0.172、CP 0.170、经营现金流/资产 0.160、BP 0.159、SUE营收 0.153、预告幅度 0.151 |
|
||||
| 第二梯队 0.05-0.15 | ROE改善/毛利率改善/营收同比/预告类型/ROE族/商誉/NSI 等 16 个 |
|
||||
| 淘汰(eliminated) | 负债依赖/应收异常/投资收益依赖/销售现金比/资产增长(ICIR<0.05) |
|
||||
|
||||
健康信号:①全 32 因子 IC 方向与学术文献一致(估值/成长/SUE 全正=口径正确性佐证)②ICIR 0.2 档=A股财务月频因子学界正常量级(量价高频因子不可直接比)。
|
||||
|
||||
### h2 段(2021-07-01 ~ 2026-09-04,4809 只,32 因子零错误,61 分钟)
|
||||
|
||||
| 梯队 | 因子(ICIR) |
|
||||
|------|-------------|
|
||||
| 存活头部 | **BP 0.218(登顶)**、NSI 净股票发行 0.146、CP 0.125、EP 0.090、EP扣非 0.081、应计 TACC 0.077、成长剪刀差 0.076、商誉 0.071、净利同比 0.063、资产增长 0.058(h1 负转正) |
|
||||
| eliminated 18 个 | SUE 0.045(h1 0.200→大滑坡)、毛利率改善/现金流/营收同比/预告族/ROA/ROE/毛利率等(毛利率 IC 转负 −0.005=高毛利率反而跑输) |
|
||||
|
||||
### 两段对比核心洞察(2021 分水岭)
|
||||
1. **估值族全期稳健**:BP/EP/CP 两段都居前列(BP 0.159→0.218 走强)——财务批的压舱石
|
||||
2. **成长/SUE 族大幅衰减**:成长剪刀差 0.236→0.076、SUE 0.200→0.045——2021 后基本面动量失效(微盘风格主导市场的公认现象在我们数据复现)
|
||||
3. **资本行为族近窗走强**:NSI 0.094→0.146、资产增长 −0.02→+0.058
|
||||
4. **质量风格反转**:毛利率/ROA/ROA 的 IC 在 h2 转负——P1 选取按近窗权重,不按全期
|
||||
5. 方向可翻转型:gp_over_assets/gross_margin/invest_income_dep(h2 负 ICIR 但幅度可观)
|
||||
|
||||
### 两段池化族分析 + 跨批暗相关(vs 量价 62 effective,124 因子×129 月)
|
||||
|
||||
- **18 族 / 冗余度 85.5%**:族1=巨族 91 成员(量价波动族+大部分财务因子共线);族2=alpha16 量价背离族 16 成员(**纯量价,财务零混入**——最强量价族与财务独立 ✓);跨批暗相关 14 对 |r|≥0.7
|
||||
- **alpha42 = 交叉之王(8 对)**:资产增长 +0.81 / NSI +0.80 / ROA −0.80 / 应计 +0.78 / 毛利率 −0.78 / 毛利资产比 −0.75 / BP +0.72 / 预告类型 −0.71——财务资本行为族与该量价因子高度共线(同源=规模/波动暴露)
|
||||
- **估值×波动负相关**:BP/CP × high_low_5(−0.73/−0.74)、CP × klen(−0.71)——调研预警「低波×低估值」实证命中
|
||||
- **P1 选取对策**:①财务因子上机前对 alpha42/波动做中性化(或报 size 中性化后 IC——调研口径红线)②代表选取避开高相关变体 ③独立增量确认集中在:估值族(对族2独立)、成长剪刀差/SUE(族1内但时序特性不同)
|
||||
|
||||
## 四、数据线战果(财务136 收案)
|
||||
|
||||
- dmsk 补缺层:/volume1/stock/fundamentals/dmsk/ 三域 70 期,键唯一 0 重键,北交 BJ 行 1.04-1.15 万/域(最新期 bj=346),净新增 383 只镜像外代码(退市+北交空档)
|
||||
- 本 session 独立抽验:北交 920000 系实数据在列 ✓ 2009 年报 2527 行含彼时退市股 ✓ 5 分区零重键 ✓
|
||||
- 已知边界:2009 前退市股(如 000003)dmsk 与 F10 双源皆无(源头缺失,如实入档)
|
||||
- daily lane 首跑已验(近 3 期重扫 2 分钟,晚披露当日入账)
|
||||
|
||||
## 五、数据缺失清单(待派 data session 根治)
|
||||
|
||||
1. `ASSET_IMPAIRMENT_LOSS` 2020-09 后截面断供 → fund_impairment_ratio 覆盖 0
|
||||
2. `OTHER_RECE` ~2021 后截面断供 → fund_other_rece_ratio 覆盖 0
|
||||
3. forecast 覆盖 0.47=强制披露选择偏差(评估须附覆盖率);ACCEPT_INVEST_CASH 0.45=股权融资真稀疏(事件类正常)
|
||||
4. 金融股剔除用「无营业成本模板」近似(无行业映射数据);valuation_baostock 2026 H1 缺口(bs 日喂 08-13 起)
|
||||
5. data session 侧另挂:profit/dupont 季频 2024 起断更排查(用户已授权)
|
||||
|
||||
## 六、待你动作(30 秒级)
|
||||
|
||||
1. **DSM 注册**:`sanguo-fundamentals-daily` 07:10 任务(GUI 30 秒,注册后明早自走)——问 data session 要脚本路径
|
||||
2. **分支合流**:`factor-fundamental` 7+2 commit review 后合 master(WP4 族分析脚本+因子批全链),合流触发 CI(注意 data session 236bd30 已在 master,rebase 会自动去重 dmsk 副本)
|
||||
3. 晨间建议:跨批暗相关结果若有高相关对(财务因子 vs 量价 effective),下一批 P1 因子选取时规避
|
||||
|
||||
## 六点五、data session 互评结论(verdict=approved,2026-09-08 上午)
|
||||
|
||||
四重点全过(PIT 语义✅/单季 TTM 口径✅/OOM 分块等值✅/量价零回归✅),146 测试互评方本机复跑全绿。4 条 P1 级备注(不阻塞,P1 批次逐条做):
|
||||
1. F 族同日披露做 eff+1 敏感性对照(「D 收盘信号→D+1 执行」约定下无前视,但需知情同日含入贡献)
|
||||
2. SUE rolling_std 窗口含当期 diff4,P1 加 shift(1) 严窗变体对照
|
||||
3. forecast 交易所映射 60→SSE/else→SZSE 在北交入池前需加前缀白名单(当前无实害)
|
||||
4. 估值族 close×share_capital 用 600519 公告市值做单锚点 sanity
|
||||
|
||||
## 七、遗留与后续批次建议
|
||||
|
||||
- P1 40 个因子(候选池在 `docs/fundamental_factor_survey_20260907.md`)等 P0 验证结论定去留后再排
|
||||
- 全期一体 ICIR(当前分两段各有 ICIR):如需可加内存优化后在更大内存环境重跑,或后处理合并两段 monthly_ic
|
||||
- 资产增长因子方向未翻转(学术预期负 IC,实测 -0.02)——P1 批次调向重验
|
||||
- 评估库 factor_eval_fundamental.db 含 quant62_ref(62 量价 effective 参照 run,跨批分析用)
|
||||
@@ -0,0 +1,393 @@
|
||||
# 基本面(财务)因子批 · 候选因子池调研设计文档
|
||||
|
||||
> 调研日期:2026-09-07 | 定位:财务因子批的「弹药清单」——因子池设计文档,未实施任何代码
|
||||
> 数据原料:NAS 实测(2026-09-07,只读探针);外部体系:学术经典 + Barra CNE5/CNE6 + 聚宽 indicator
|
||||
> 前置:量价因子批已完成(227 因子 / 62 effective,族分析工具可直接复用)
|
||||
|
||||
---
|
||||
|
||||
## 0. 结论速览
|
||||
|
||||
| # | 结论 | 一句话 |
|
||||
|---|------|--------|
|
||||
| 1 | **原料层零缺口**(除三类) | 三表 319/203/254 列含间接法补充资料 + 估值两套 + 预告/快报 + 分红/股本,经典财务异象原料 100% 在手;真缺的只有:一致预期、回购明细、个股行业映射 |
|
||||
| 2 | **候选池 96 个**,六族分布 | 盈利能力 17 / 盈利质量 19 / 成长 19 / 估值 15 / 资本结构与行为 16 / 预期事件 10 |
|
||||
| 3 | **P0 = 50 个** | 原料现成 + 学术/业界双验证 + 纯比值/差分(无回归无多表配对),第一批直接可算 |
|
||||
| 4 | P1 = 40 / P2 = 6 | P1 需 TTM 构造/复合条件/事件日期链;P2 缺原料或 A 股制度存疑(壳价值/高送转新规/修正 Jones) |
|
||||
| 5 | **一处勘误** | GTJA191 **没有财务段因子**——191 个全部纯量价(DolphinDB 文档证实入参仅 open/close/high/low/vol/vwap),任务书所说「alpha54-100 财务段」不存在;业界财务体系以 Barra CNE5/CNE6 + 聚宽 indicator 承接 |
|
||||
| 6 | 最大暗相关风险 | 估值族×规模、SUE/预告×价格动量、应计×换手率、户数变化×流动性——四条交叉必须在上线时与量价 62 effective 做跨批 rank 相关矩阵 |
|
||||
|
||||
---
|
||||
|
||||
## 1. 数据原料盘点(NAS 实测,2026-09-07)
|
||||
|
||||
### 1.1 原料表清单
|
||||
|
||||
| 表 | 路径(NAS) | 列数 | 覆盖 | 关键点 |
|
||||
|---|---|---|---|---|
|
||||
| balance 资产负债表 | `data/static/balance/` | **319**(工业口径;银行模板 221) | 2000→2026 季频 | 全科目 + ~150 科目免费 `_YOY` 同比列 + NOTICE_DATE + 审计意见 OPINION_TYPE |
|
||||
| income 利润表 | `data/static/income/` | **203** | 2000→2026 季频 | 扣非 DEDUCT_PARENT_NETPROFIT / 研发 RESEARCH_EXPENSE / 信用+资产减值 / 三费分列 + `_YOY` |
|
||||
| cashflow 现金流量表 | `data/static/cashflow/` | **254** | ~99 期 | **含间接法补充资料整段**(D&A/存货变动/应收变动/递延税)——Sloan 应计的核心原料 |
|
||||
| financial_abstract 财务摘要 | `data/static/financial_abstract/` | 81(指标×报告期宽表) | 回溯 1998 | 70+ 预计算指标(ROE/ROA/毛利率/周转天数/流动比率等),做对照与早年补缺 |
|
||||
| valuation(akshare) | `data/static/valuation/` | 13(中文列) | ~2018→日频 | 总市值/流通市值/总股本/PE(TTM)/PE(静)/PB/PEG/市现率/市销率 |
|
||||
| valuation_baostock | `data/valuation_baostock/`(按年) | 10 | **1990→2026 日频含退市** | peTTM/psTTM/pcfNcfTTM/pbMRQ/turn/pctChg/isST——长史与退市股唯一解 |
|
||||
| forecast 业绩预告 | `data/static/forecast/`(按报告期) | 11 | 2020Q1→ | 预测数值(**中值,元**)/业绩变动幅度(%)/上年同期值/公告日期/预告类型 |
|
||||
| express 业绩快报 | `data/static/express/` | 16 | 2020Q1→ | 净利及同比环比/营收及同比/每股净资产/ROE/公告日期 |
|
||||
| dividend 分红 | `data/static/dividend/` | 14 | 全史 | dividCashPsBeforeTax/AfterTax + **dividStocksPs(送转比例)** + 预案/除权/派息全日期链 |
|
||||
| share_capital 股本 | `data/static/share_capital/` | 44 | 全史 | 总股本时间线 + **变动原因**(增发/配股/送转)+ 公告日期 |
|
||||
| gdhs 股东户数 | `data/static/gdhs/` | — | 季频低频 | 筹码集中度 |
|
||||
| top_holders 十大流通股东 | `data/static/top_holders/` | 8 | 按期 | 持股比例合计可算大股东动向 |
|
||||
| basic 股票信息 | `data/static/basic/stock_basic.parquet` | 9 | 全史 | **ipoDate/outDate**——次新股、上市时长可算 |
|
||||
| fundamentals_baostock | `data/fundamentals_baostock/` | profit+dupont | 2015Q1→**2023Q4 断更** | 不作主源,仅作交叉对照 |
|
||||
|
||||
**确认缺口(写进 P2)**:①分析师一致预期(聚宽也要另付费);②回购专用表未采集(TREASURY_SHARES 仅 2018 新准则后显性);③**个股行业映射**(industry.parquet 只有行业级汇总、ths_industry 只有板块级行情,均无 per-stock 映射——与既有决策一致「行业分类缺口用户已接受」);④restricted 解禁表有文件但列为空。
|
||||
|
||||
### 1.2 口径地基(所有因子共用的四条加工规则)
|
||||
|
||||
**R1 单季化(累计→单季差分)**:`REPORT_DATE` 是累计口径。单季值 `Q_t = C_t − C_{t−1}`(年内上一报告期);Q1 直接取累计值。差分缺上期 → 置 NaN,**不得填 0**。资产负债表是时点存量,无需差分,同比比 `X_t / X_{t−4}`(4 个报告期前 = 去年同期)。
|
||||
|
||||
**R2 TTM 构造**:`TTM = 上年年报累计 + 本年最新累计 − 上年同期累计`(等价近 4 单季之和)。上市不足 4 季 → NaN。
|
||||
|
||||
**R3 点时对齐(防前视)**:决策日 d 可用的行 = `NOTICE_DATE ≤ d` 中 REPORT_DATE 最新者;同一 REPORT_DATE 多行(重述)取 `UPDATE_DATE` 最新。NOTICE_DATE 缺失兜底 = `REPORT_DATE + 45 天`(法定披露上限近似;实测 NOTICE_DATE 全有,兜底几乎不触发)。project 数据(forecast/express/dividend)用各自公告列。
|
||||
|
||||
**R4 单位与量纲**:东财三表金额=元,EPS=元/股,`_YOY` 列=百分比数值(12.34 即 +12.34%)且**是累计口径**;forecast.预测数值=元(区间中值)。金融股剔除规则:`OPERATE_COST` 缺失或为 0(银行模板)/ `INSURANCE_CONTRACT_RESERVE > 0`(保险)/ 券商(投资收益为主业,逐因子判)——盈利质量/成长族剔金融,估值族保留。北交所(92xxxx/8xxxxx)三表空 → 剔除(与实盘 universe「主板+创业板」一致)。
|
||||
|
||||
### 1.3 符号约定(下文公式统一用)
|
||||
|
||||
```
|
||||
REV = income.TOTAL_OPERATE_INCOME(营业总收入;纯营收 OPERATE_INCOME 备选)
|
||||
COGS = income.OPERATE_COST NP = income.PARENT_NETPROFIT(归母)
|
||||
DNP = income.DEDUCT_PARENT_NETPROFIT(扣非归母) CFO = cashflow.NETCASH_OPERATE
|
||||
TA = balance.TOTAL_ASSETS EQ = balance.TOTAL_PARENT_EQUITY
|
||||
GP = REV − COGS(毛利) MV = valuation.总市值
|
||||
Q(X) = X 的单季值(R1 差分) X_TTM = X 的滚动四季值(R2)
|
||||
yoy(X) = X_t / X_{t−4} − 1 ΔX = X_t − X_{t−4}
|
||||
IBD = 有息负债 = SHORT_LOAN + SHORT_FIN_PAYABLE + NONCURRENT_LIAB_1YEAR + LONG_LOAN + BOND_PAYABLE (+ LEASE_LIAB)
|
||||
DA = 折旧摊销合计 ≈ cashflow.FA_IR_DEPR + IA_AMORTIZE + LPE_AMORTIZE + USERIGHT_ASSET_AMORTIZE
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 调研范围三路对照
|
||||
|
||||
### 2.1 学术界经典财务异象(全部有原料或明确缺什么)
|
||||
|
||||
| 异象 | 出处 | 我们原料 | 结论 |
|
||||
|---|---|---|---|
|
||||
| F-Score 九项打分 | Piotroski (2000, JAR) | ✅ 九项全可算 | P1 合成、单项全 P0 |
|
||||
| 应计异象 | Sloan (1996, TAR) | ✅ 间接法补充资料整段(聚宽反而没全给) | P0 |
|
||||
| SUE / PEAD | Ball-Brown (1968);Bernard & Thomas (1989);Foster (1977) 标准化 | ✅ 单季差分即得;A 股漂移 3-6 个月(学术+大摩实证) | P0 |
|
||||
| 资产增长异象 | Cooper, Gulen & Schill (2008, JF) | ✅ TOTAL_ASSETS_YOY 现成 | P0 |
|
||||
| 净股票发行 | Pontiff & Woodgate (2008, JF);Daniel & Titman (2006) | ✅ SHARE_CAPITAL 股本时间线 + ACCEPT_INVEST_CASH | P0(送转污染需拆) |
|
||||
| 盈利能力/质量因子 | Novy-Marx (2013, JFE) GP/A;Hou-Xue-Zhang (2015, RFS) Q 因子;Fama-French (2015) RMW/CMA | ✅ 三表全推导 | P0/P1 |
|
||||
| A 股综合验证 | Jansen (2021, PBFJ);《金融研究》87 异象公募检验 | — | 交叉引用 |
|
||||
| 高送转 | Titman, Wei & Zhao (NBER w29212) | ✅ dividStocksPs | P1(2018 新规后衰减) |
|
||||
| 壳价值/微市值 | 制度变迁文献 | ⚠️ 可算但不可全域回测 | P2 |
|
||||
| 涨停/次新/有限注意力 | Chen & Xiong(涨跌停);PEAD 有限注意力(A 股实证) | 次新可算(ipoDate);涨停属量价批 | 次新归量价交叉项 |
|
||||
|
||||
### 2.2 业界体系
|
||||
|
||||
**Barra CNE5 → CNE6 财务成分**(CNE6 = CNE5 基础 + Quality/Dividend Yield/Long-term Reversal 等 SES 新因子):
|
||||
|
||||
| Barra 风格因子 | 子因子 | 我们的承接因子 |
|
||||
|---|---|---|
|
||||
| Earnings Yield 盈利收益率 | CETOP(CFO/市值)、ETOP(E/市值) | D06 CP、D01 EP |
|
||||
| Growth 成长 | EGRO(5 年净利 CAGR)、SGRO(5 年营收 CAGR) | C14、C13 |
|
||||
| Leverage 杠杆 | MLEV(市值杠杆)、BLEV(账面杠杆)、DTOA(债务/总资产) | E05 有息负债率、E04、E03 |
|
||||
| Book-to-Price 价值 | BTOP | D04 BP |
|
||||
| Earnings Variability 盈利波动(CNE6) | VSIG / VSIG-ACC / VSIG-CFO | B13/B14/B15 |
|
||||
| Quality 质量(CNE6) | 盈利质量+盈利能力 | B 族 + A 族整族 |
|
||||
|
||||
**聚宽 indicator 表**(~25 预计算指标):ROE/ROA/毛利率/EPS/BPS/增速/负债率——全部可从三表推导(09-06 摸底已结论「缺加工不缺原料」),financial_abstract 105 列宽表含同款预计算可直接对照。
|
||||
|
||||
**GTJA191 勘误(重要)**:经 DolphinDB 官方模块文档核实,GTJA191(国泰君安 2017《基于短周期价量特征的多因子选股体系》)191 个因子入参**仅有 tradetime/open/close/high/low/vol/vwap/index 系列**,无任何财务字段、无 CAP。任务书假设的「alpha54-100 财务段」不存在——GTJA191 已在量价批完成使命(227 因子里含其量价表达式重验),财务段由 Barra CNE5/CNE6 + 聚宽 + 学术异象承接。
|
||||
|
||||
---
|
||||
|
||||
## 3. 候选因子池总表(96 个,六族)
|
||||
|
||||
> 每行:编号 | 因子(中/英)| 定义公式(用 §1.3 符号)| 原料字段(东财列)| 出处 | 预期 IC 方向 | 优先级
|
||||
> 「A股注意点」族表下方集中列(避免表格过宽);IC 方向均为「因子值高 → 未来收益高」的符号。
|
||||
|
||||
### 3.1 A 盈利能力族(17 个)
|
||||
|
||||
| 编号 | 因子 | 公式 | 原料字段 | 出处 | IC | 级 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| A01 | ROE | NP_TTM / EQ_期末 | PARENT_NETPROFIT + TOTAL_PARENT_EQUITY | 经典 / Barra | + | P0 |
|
||||
| A02 | 扣非 ROE | DNP_TTM / EQ | DEDUCT_PARENT_NETPROFIT + TOTAL_PARENT_EQUITY | 业界标准 | + | P0 |
|
||||
| A03 | 平均 ROE | NP_TTM / mean(EQ_t, EQ_{t−4}) | 同 A01 | 杜邦体系 | + | P1 |
|
||||
| A04 | ROA | NP_TTM / TA | PARENT_NETPROFIT + TOTAL_ASSETS | 经典 | + | P0 |
|
||||
| A05 | 总资产毛利率 GP/A | GP_TTM / TA | OPERATE_INCOME − OPERATE_COST;TOTAL_ASSETS | Novy-Marx (2013) | + | P0 |
|
||||
| A06 | 毛利率 GM | GP_TTM / REV_TTM | 同上 | 经典 | + | P0 |
|
||||
| A07 | 净利率 NM | NP_TTM / REV_TTM | PARENT_NETPROFIT + TOTAL_OPERATE_INCOME | 经典 | + | P0 |
|
||||
| A08 | 营业利润率 OPM | OPERATE_PROFIT_TTM / REV_TTM | OPERATE_PROFIT | 经典 | + | P0 |
|
||||
| A09 | 含息 ROA | (NP + FE_INTEREST_EXPENSE×(1−τ))_TTM / TA | FE_INTEREST_EXPENSE;τ 用实际税率 | FF (2015) RMW 精神 | + | P1 |
|
||||
| A10 | EBIT/TA | (TOTAL_PROFIT + FE_INTEREST_EXPENSE)_TTM / TA | TOTAL_PROFIT + FE_INTEREST_EXPENSE | Hou-Xue-Zhang (2015) | + | P1 |
|
||||
| A11 | EBITDA 利润率 | (EBIT + DA)_TTM / REV_TTM | cashflow 补充资料段 | 业界 | + | P1 |
|
||||
| A12 | ROIC | EBIT_TTM×(1−τ) / (EQ + IBD − MONETARYFUNDS) | 见符号表 IBD + MONETARYFUNDS | Damodaran 简化 | + | P1 |
|
||||
| A13 | 现金流总资产回报 | CFO_TTM / TA | NETCASH_OPERATE + TOTAL_ASSETS | Balakrishnan et al. (2010) | + | P0 |
|
||||
| A14 | 期间费用率 | (SALE+MANAGE+FINANCE+RESEARCH_EXPENSE)_TTM / REV_TTM | 四费列 | 业界 | − | P0 |
|
||||
| A15 | 研发强度 | RESEARCH_EXPENSE_TTM / REV_TTM | RESEARCH_EXPENSE | 业界(成长溢价) | 不定 | P1 |
|
||||
| A16 | 销售费用率 | SALE_EXPENSE_TTM / REV_TTM | SALE_EXPENSE | 业界 | −(弱) | P1 |
|
||||
| A17 | 总资产周转率 | REV_TTM / mean(TA_t, TA_{t−4}) | 三列合成 | 杜邦 | + | P0 |
|
||||
|
||||
**A 族 A 股注意点**:
|
||||
- A05 GP/A 是学术验证最强的盈利能力因子(价值域内对冲),**建议为族主代表**;GM 行业异质性大(白酒 vs 贸易),做行业感知变体保留。
|
||||
- A01 摊薄口径(期末 EQ)与 A03 平均口径二选一即可;financial_abstract 有「净资产收益率_平均」「摊薄」现成值可对照。
|
||||
- A14/A16 金融股无三费结构,必须剔除(§1.2 R4);A15 有 2018Q3 报表格式断点(研发费用此前并在管理费用内,ME_RESEARCH_EXPENSE 列可作回补口径)。
|
||||
- A12 ROIC 分母含不含 LEASE_LIAB 有两版,定稿后钉死一版并在文档登记。
|
||||
- abstract 现成同款:ROE/ROA/毛利率/销售净利率/期间费用率/总资产周转率——**实施时用三表自算值 vs abstract 抽样对账**(对不上先怀疑口径不是代码)。
|
||||
|
||||
### 3.2 B 盈利质量族(19 个)
|
||||
|
||||
| 编号 | 因子 | 公式 | 原料字段 | 出处 | IC | 级 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| B01 | 总应计 TACC | (NP_TTM − CFO_TTM) / TA | PARENT_NETPROFIT + NETCASH_OPERATE + TOTAL_ASSETS | Sloan (1996) | − | P0 |
|
||||
| B02 | 净现比 | CFO_TTM / NP_TTM | 同上 | 业界直观版 | + | P0 |
|
||||
| B03 | 可操控应计 DA | 修正 Jones 模型残差(行业-年横截面回归) | ACCOUNTS_RECE + TA + REV | Dechow et al. (1995) | − | P2 |
|
||||
| B04 | 非经常损益占比 | (NP − DNP)_TTM / abs(NP_TTM) | DEDUCT_PARENT_NETPROFIT | 业界 | − | P0 |
|
||||
| B05 | 减值冲击 | (ASSET_IMPAIRMENT_LOSS + CREDIT_IMPAIRMENT_LOSS)_TTM / TA | 两减值列 | 业界 | − | P0 |
|
||||
| B06 | 营业外依赖 | (NONBUSINESS_INCOME − NONBUSINESS_EXPENSE)_TTM / abs(TOTAL_PROFIT_TTM) | NONBUSINESS_* | 经典 | − | P0 |
|
||||
| B07 | 投资收益依赖 | (INVEST_INCOME + FAIRVALUE_CHANGE_INCOME)_TTM / abs(TOTAL_PROFIT_TTM) | 两投资列 | 业界 | − | P0 |
|
||||
| B08 | 应收异常 | yoy(ACCOUNTS_RECE) − yoy(REV) | ACCOUNTS_RECE(期末同比) | 学术(渠道压货) | − | P0 |
|
||||
| B09 | 存货异常 | yoy(INVENTORY) − yoy(REV) | INVENTORY | 学术 | −(弱) | P1 |
|
||||
| B10 | 销售收现率 | SALES_SERVICES_TTM / REV_TTM | cashflow.SALES_SERVICES | 业界 | + | P0 |
|
||||
| B11 | 其他应收占比 | OTHER_RECE / TA | OTHER_RECE | 姜国华(财务舞弊信号) | − | P0 |
|
||||
| B12 | 存贷双高哑变量 | (MONETARYFUNDS/TA > 横截面 75 分位) ∧ (IBD/TA > 75 分位) → 1 | MONETARYFUNDS + IBD | 康得新/康美案例型 | − | P1 |
|
||||
| B13 | 盈利波动 VSIG | std(单季 NP/TA, 过去 16 季) | 单季化序列 | CNE6 Earnings Variability | − | P1 |
|
||||
| B14 | 应计波动 VSIG-ACC | std(TACC, 16 季) | 同 B01 | CNE6 | − | P1 |
|
||||
| B15 | 现金流波动 VSIG-CFO | std(CFO/TA, 16 季) | 同 B13 | CNE6 | − | P1 |
|
||||
| B16 | 折旧摊销强度 | DA_TTM / REV_TTM | 补充资料段 | 会计保守性 proxy | 不定 | P1 |
|
||||
| B17 | 审计非标 | OPINION_TYPE ≠ 标准无保留意见 → 1 | balance.OPINION_TYPE | 审计文献 | − | P0 |
|
||||
| B18 | 毛净剪刀差 | GM_TTM − NM_TTM | 合成 | 结构异常 | −(弱) | P1 |
|
||||
| B19 | 持续盈利季数 | 连续单季 NP > 0 的季数(截 8) | 单季化 NP | F-Score 精神 | + | P1 |
|
||||
|
||||
**B 族 A 股注意点**:
|
||||
- B01 是本族核心。A 股应计异象**负端不对称**:高应计做空端被壳价值/涨跌停限制削弱,实操做「低应计多头」;2017 后有效性增强(机构化)。
|
||||
- B02 与 B01 数学同构(互为倒数族),去重时二留一;B02 在亏损域失真(分母负)。
|
||||
- B05 有准则断点:2019 金融工具准则把信用减值从资产减值分列,**两列相加可拼连续历史**;「洗大澡」(极端减值后反转)是独立子异象,值得在 B05 极值分位单独回测。
|
||||
- B07 券商/保险天然高投资收益,剔金融后才有意义。
|
||||
- B08 注意用「期末余额同比」而非发生额;B09 白酒(存货即资产)/地产反例多,预期弱。
|
||||
- B10 健康域 > 1(收入含增值税、现金流收现口径),金融股剔除。
|
||||
- B17 覆盖密度需先探(早年报告审计意见列缺失度),稀疏则降 P1。
|
||||
- B03 修正 Jones 需要行业-年横截面回归 → 缺行业映射,P2(补行业数据后升级)。
|
||||
|
||||
### 3.3 C 成长族(19 个)
|
||||
|
||||
| 编号 | 因子 | 公式 | 原料字段 | 出处 | IC | 级 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| C01 | 营收单季同比 | yoy(Q(REV)) | 单季差分自算 | 经典 | + | P0 |
|
||||
| C02 | 归母净利单季同比 | yoy(Q(NP)) | 同上 | 经典 | + | P0 |
|
||||
| C03 | 扣非单季同比 | yoy(Q(DNP)) | DEDUCT_PARENT_NETPROFIT 差分 | 业界 | + | P0 |
|
||||
| C04 | 营收 TTM 同比 | yoy(REV_TTM) | TTM 合成 | 业界平滑版 | + | P0 |
|
||||
| C05 | 净利 TTM 同比 | yoy(NP_TTM) | 同上 | 业界 | + | P0 |
|
||||
| C06 | 毛利 TTM 同比 | yoy(GP_TTM) | 毛利合成 | 学术(毛利动量) | + | P0 |
|
||||
| C07 | 净利加速度 | yoy(Q(NP))_t − yoy(Q(NP))_{t−4} | 两期差分 | earnings acceleration 文献 | + | P1 |
|
||||
| C08 | 营收加速度 | 同构(REV) | — | 同上 | + | P1 |
|
||||
| C09 | 增速剪刀差 | yoy(Q(NP)) − yoy(Q(REV)) | 合成 | 利润率方向代理 | + | P0 |
|
||||
| C10 | 毛利率变化 ΔGM | GM_TTM(t) − GM_TTM(t−4) | 合成 | 学术(毛利趋势) | + | P0 |
|
||||
| C11 | 净利率变化 ΔNM | NM_TTM(t) − NM_TTM(t−4) | 合成 | 同上 | + | P1 |
|
||||
| C12 | ΔROE | ROE_TTM(t) − ROE_TTM(t−4) | 合成 | Piotroski F_ROA | + | P0 |
|
||||
| C13 | 5 年营收 CAGR | (REV_年报_y / REV_y−5)^(1/5) − 1 | 年报行 | CNE6 SGRO | + | P1 |
|
||||
| C14 | 5 年净利 CAGR | 同构(NP) | — | CNE6 EGRO | + | P1 |
|
||||
| C15 | 资产增速 | yoy(TA)(`TOTAL_ASSETS_YOY` 现成) | 现成列 | Cooper et al. (2008) | − | P0 |
|
||||
| C16 | 净营运资本增速 | yoy(INVENTORY + ACCOUNTS_RECE) | 两列 | 资产增长分解 | − | P1 |
|
||||
| C17 | 投资率 | CONSTRUCT_LONG_ASSET_TTM / TA | cashflow 购建长期资产 | HXZ 投资 / FF CMA | − | P0 |
|
||||
| C18 | 投资增速 | yoy(CONSTRUCT_LONG_ASSET 年度) | 同上 | 同上 | − | P1 |
|
||||
| C19 | 净资产增速 | yoy(EQ) | TOTAL_PARENT_EQUITY | 内部积累+增发混合 | 不定 | P1 |
|
||||
|
||||
**C 族 A 股注意点**:
|
||||
- **东财 `OPERATE_INCOME_YOY`/`PARENT_NETPROFIT_YOY` 现成列是累计口径**,与本族单季口径不同——两条路都通(现成列=快、自算差分=准),第一批建议以自算单季为准、现成列做 sanity check。
|
||||
- 单季 yoy(C01/C02)与 TTM yoy(C04/C05)同族 ρ>0.8,首批各留单季版;TTM 版在财报空窗季更稳,作备选。
|
||||
- C07/C08 基数效应:去年同期为负或极小 → 加速度爆炸,必须 winsorize + 剔除基数为负样本。
|
||||
- C10 ΔGM 在 A 股的预测力文献上优于营收趋势(毛利改善异象),**C 族副代表**。
|
||||
- C15 资产增速是 A 股验证过的强负向因子(扩张=毁灭价值),与 C16/C17/C18、E01/E02 同为「投资-融资」跨族群,见 §4 去重。
|
||||
- C13/C14 早年(2004 前)数据薄,样本起点自 2004 报起。
|
||||
|
||||
### 3.4 D 估值族(15 个)
|
||||
|
||||
| 编号 | 因子 | 公式 | 原料字段 | 出处 | IC | 级 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| D01 | EP(TTM) | NP_TTM / MV | 自算或 valuation.PE(TTM) 倒数 | Basu (1977) | + | P0 |
|
||||
| D02 | EP(静态) | 上年年报 NP / MV | PE(静) 倒数 | 经典 | + | P0 |
|
||||
| D03 | 扣非 EP | DNP_TTM / MV | DEDUCT_PARENT_NETPROFIT | A 股特色变体 | + | P0 |
|
||||
| D04 | BP | EQ / MV | 市净率倒数 | FF HML / Barra BTOP | + | P0 |
|
||||
| D05 | SP | REV_TTM / MV | 市销率倒数 | 业界 | + | P0 |
|
||||
| D06 | CP | CFO_TTM / MV | 市现率倒数 / pcfNcfTTM 倒数 | CNE5 CETOP | + | P0 |
|
||||
| D07 | EBIT/EV | EBIT_TTM / (MV + IBD − MONETARYFUNDS) | 合成 EV | 科班质量价值 | + | P1 |
|
||||
| D08 | EBITDA/EV | (EBIT+DA)_TTM / EV | 同上 | 同上 | + | P1 |
|
||||
| D09 | GP/M | GP_TTM / MV | 合成 | Novy-Marx 价值域补强 | + | P1 |
|
||||
| D10 | 股息率 DY | 近 12 月每股现金分红(税前)/ 收盘价 | dividend.dividCashPsBeforeTax + 行情 | Litzenberger | + | P0 |
|
||||
| D11 | 分红支付率 | 年度现金分红总额 / 年报 NP | dividCashPs×股本 + PARENT_NETPROFIT | 业界 | +(弱) | P0 |
|
||||
| D12 | ln 市值 | ln(MV) | valuation.总市值 | 风险因子 | 小市值+ | P1 |
|
||||
| D13 | 预期 EP | 预告净利中值(年化)/ MV | forecast.预测数值 | 业界 | + | P1 |
|
||||
| D14 | 长史 EP/BP | peTTM/pbMRQ 倒数(1990 起含退市) | valuation_baostock | 长史分域验证 | + | P1 |
|
||||
| D15 | FCF/EV | (CFO − CONSTRUCT_LONG_ASSET)_TTM / EV | 合成 | 业界 | + | P1 |
|
||||
|
||||
**D 族 A 股注意点**:
|
||||
- **分域红线**:A 股 EP/BP 在 2017 年前基本失效(小市值泡沫期甚至反向),2017 后显著——必须分域报 IC(2000-2016 / 2017-今),不得全域平均。D14 的 1990 起长史(含退市)就是为分域验证准备的。
|
||||
- D01 与 D02 ρ>0.9,首批只实施 D01(+D03 扣非变体,A 股政府补助多、扣非更干净)。
|
||||
- D04 负权益股(资不抵债 PB 为负)剔除或单独哑变量;银行股 BP 必须保留在池内(金融估值主力)。
|
||||
- D06 注意 akshare「市现率」与 baostock pcfNcfTTM 的 CFO 口径(TTM vs 年报)差异;psTTM/pcfNcfTTM 起始年份需探(baostock 部分估值列 2010 中段才全)。
|
||||
- D10 分红集中在 5-7 月除权——「近 12 月」窗口要跨年拼接 dividPayDate;预案公告日 vs 派息日口径选择见 §7。
|
||||
- D12 不是 alpha,是**中性化控制变量**:财务估值因子上线必配 size 中性化(§6 暗相关第一条)。
|
||||
|
||||
### 3.5 E 资本结构与资本行为族(16 个)
|
||||
|
||||
> 六类家族中「资本行为」按业界惯例扩为「资本结构 + 资本行为」,承接 Barra Leverage 三件套。
|
||||
|
||||
| 编号 | 因子 | 公式 | 原料字段 | 出处 | IC | 级 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| E01 | 净股票发行 NSI | ΔSHARE_CAPITAL(4 季) / SHARE_CAPITAL_{t−4} | balance.SHARE_CAPITAL(或 share_capital 表) | Pontiff & Woodgate (2008) | − | P0 |
|
||||
| E02 | 股权融资强度 | ACCEPT_INVEST_CASH_TTM / MV | cashflow 吸收投资现金 | Daniel & Titman 精神 | − | P0 |
|
||||
| E03 | 债务净发行 | (RECEIVE_LOAN_CASH + ISSUE_BOND − PAY_DEBT_CASH)_TTM / MV | cashflow 三列 | 业界 | − | P1 |
|
||||
| E04 | 资产负债率 | TOTAL_LIABILITIES / TA | 现成列 + abstract 同款 | Barra DTOA | −(弱) | P0 |
|
||||
| E05 | 有息负债率 | IBD / TA | 符号表 IBD 组装 | Barra 精神 | − | P0 |
|
||||
| E06 | 流动比率 | TOTAL_CURRENT_ASSETS / TOTAL_CURRENT_LIAB | 现成列 + abstract 同款 | Piotroski ΔLIQUID | + | P0 |
|
||||
| E07 | 利息保障倍数 | EBIT_TTM / FE_INTEREST_EXPENSE_TTM | 合成 | 信用分析 | + | P1 |
|
||||
| E08 | 现金转换周期 CCC | DSO + DIO − DPO(abstract 三周转天数现成) | abstract | 营运效率 | −(弱) | P1 |
|
||||
| E09 | 商誉占比 | GOODWILL / TA | 现成列 | 减值雷文献 | − | P0 |
|
||||
| E10 | 商誉增速 | yoy(GOODWILL) | 现成 | 并购潮信号 | −(弱) | P1 |
|
||||
| E11 | 高送转强度 | dividStocksPs(每股送+转合计);≥0.5(10 送转 5)为高送转哑变量 | dividend.dividStocksPs | Titman et al. (NBER w29212) | 公告前+/除权后− | P1 |
|
||||
| E12 | 股东户数变化 | Δln(gdhs)(季度) | gdhs | 筹码集中 | − | P1 |
|
||||
| E13 | 十大流通股东占比变化 | Δ(Σ 占总流通股本持股比例) | top_holders | 大股东动向 | + | P1 |
|
||||
| E14 | 解禁压力 | 未来 3 月解禁市值 / MV | restricted(**列空**)/ share_capital 受限股差分 proxy | 业界 | − | P2 |
|
||||
| E15 | 回购 | 库存股变化/回购金额 | TREASURY_SHARES | 业界 | + | P2 |
|
||||
| E16 | 壳价值/微市值 | 微市值哑变量(MV 横截面 < 5 分位)× isST | valuation + valuation_baostock.isST | 壳价值文献 | 2016 前+/后− | P2 |
|
||||
|
||||
**E 族 A 股注意点**:
|
||||
- E01 的坑:**送转股(拆股)也推高股本**,与增发摊薄是两回事——NSI 实施时用 `share_capital.变动原因` 或 E02(现金流入口径)交叉剥离;纯股本变动做「股本扩张=稀释」解读在 A 股历史上仍偏负(高送转贴权),两版都测。
|
||||
- E04/E05 金融股天然高杠杆必须剔除;E05 组装口径(含不含 LEASE_LIAB、一年内到期非流动负债)定稿钉死。
|
||||
- E11 高送转 2018 新规(高送转与减持/业绩挂钩监管)后显著衰减,且事件窗口与量价因子强重叠(§6);dividPlanAnnounceDate(预案公告)与 dividStockMarketDate(除权)两条时点链分开测。
|
||||
- E12 与换手率/量能强相关(§6 暗相关榜第五条),列入量价交叉高危名单。
|
||||
- E14 restricted 表实为空壳文件(实测列为空)→ 缺原料;受限股份差分只能做粗 proxy,降 P2 待补采集。
|
||||
- E16 壳价值受注册制/退市制度改革冲击发生制度性断点,不可全域回测,仅作 2016 前分域研究项。
|
||||
|
||||
### 3.6 F 预期事件族(10 个)
|
||||
|
||||
| 编号 | 因子 | 公式 | 原料字段 | 出处 | IC | 级 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| F01 | SUE(净利) | (Q(NP)_t − Q(NP)_{t−4}) / σ(过去 8 季差分) | 单季差分 | Foster (1977);Bernard & Thomas | + | P0 |
|
||||
| F02 | SUE(营收) | 同构 Q(REV) | 同上 | 同上 | + | P0 |
|
||||
| F03 | SUE(EPS) | 同构 Q(BASIC_EPS) | BASIC_EPS | 同上 | + | P1 |
|
||||
| F04 | 预告类型分 | {预增+3, 略增+2, 扭亏+2, 续盈+1, 减亏+1, 不确定 0, 略减−1, 增亏−2, 续亏−2, 预减−3, 首亏−3} | forecast.预告类型 | 业界 | + | P0 |
|
||||
| F05 | 预告幅度 | 业绩变动幅度(区间中值,%) | forecast.业绩变动幅度(预测数值已是中值) | 业界 | + | P0 |
|
||||
| F06 | 披露及时性 | NOTICE_DATE − REPORT_DATE(天) | income 两列相减 | 早报喜晚报忧(A 股实证) | 早=+ | P1 |
|
||||
| F07 | 预告兑现差 | (实际 NP − 预告中值) / abs(预告中值)(同 REPORT_DATE 配对) | forecast + income join | 预告保守度 | 高兑现=+ | P1 |
|
||||
| F08 | 快报增量 | express.净利润-同比增长 − 上季 TTM 已披露推算的同比 | express + income | 信息差(快报早于年报 1-2 月) | + | P0 |
|
||||
| F09 | 预告修正 | 同一报告期多次预告:末次方向 vs 首次 | forecast.公告日期 分组 | 业界 | 下修=− | P2 |
|
||||
| F10 | 盈余惊复合 | sign(F01)×F04(SUE 与预告类型一致性) | 合成 | 业界 | + | P2 |
|
||||
|
||||
**F 族 A 股注意点**:
|
||||
- F01 用**净利润绝对额**而非 EPS:免受送转除权稀释扰动(历史 EPS 列不回溯调整)。
|
||||
- F04 实测预告类型枚举 = {不确定, 略增, 续盈, 预增, 减亏, 略减, 扭亏, 增亏, 预减};**减亏/增亏语义在亏损域特殊**(减亏=利好但绝对值仍亏),建议单独做亏损域子检验,不要简单塞进有序分。
|
||||
- 预告**强制披露**只覆盖部分情形(亏损/扭亏/±50% 大幅变动,规则历年变)→ 预告因子池子有选择偏差,报告时必须披露样本覆盖率;无预告 ≠ 无消息。
|
||||
- forecast 表 2020Q1 起才有(26 期)→ F04/F05 回测窗口只有 2020+,注意这个批的样本长度短板;2015-2019 可用东财接口回补(ak-quarter 同源),列为可选补数项。
|
||||
- F08 快报与年报披露间隔 1-2 个月,是 A 股独有的「提前量」信息差,覆盖同样不全。
|
||||
- PEAD 持续期 A 股 3-6 个月(大摩基金研究 + 有限注意力文献),调仓频率按月即可吃到主体。
|
||||
- **F01 与 C02 是近亲**:SUE 本质 = 单季净利同比的标准化版,预期 ρ 0.6-0.8;区别在标准化(横截面可比)与事件时窗(PEAD 从公告日起算)。实证相关出来前两族都保留,出来后合并(§4)。
|
||||
|
||||
---
|
||||
|
||||
## 4. 家族内去重建议
|
||||
|
||||
### 4.1 族内(首批实施前预裁)
|
||||
|
||||
| 族 | 高相关群 | 主代表 | 变体(缓实施/对照) |
|
||||
|---|---|---|---|
|
||||
| A | ROE 三兄弟(A01/A02/A03) | **A01 ROE_TTM** | A02 扣非(A 股特色,保留)、A03 平均 |
|
||||
| A | GP/A 与 GM(A05/A06) | **A05 GP/A** | A06 GM(行业感知) |
|
||||
| A | ROA 群(A04/A09/A10/A12) | **A04 ROA(简版)** | A09 含息 / A10 EBIT/TA / A12 ROIC(口径递进,各留一个对照) |
|
||||
| A | 利润率群(A06/A07/A08) | A07 NM | A08 OPM(ρ>0.9 候选裁撤) |
|
||||
| B | 应计双胞胎(B01/B02) | **B01 TACC** | B02 净现比(对外展示用) |
|
||||
| B | 非主营依赖三件(B04/B06/B07) | **B04 扣非差** | B06/B07(子维度保留) |
|
||||
| B | VSIG 三胞胎(B13/B14/B15) | **B13 盈利波动** | B14/B15(CNE6 完整性保留一个即可) |
|
||||
| C | 单季 vs TTM 同比(C01/C04、C02/C05) | **C01/C02 单季版** | C04/C05 TTM 版 |
|
||||
| C | 加速度双(C07/C08) | C07 净利加速度 | C08 |
|
||||
| C | 利润率趋势三角(C09/C10/C11) | **C10 ΔGM + C09 剪刀差** | C11 ΔNM(与 C09 近同构) |
|
||||
| D | EP 双口径(D01/D02) | **D01 EP_TTM(+D03 扣非)** | D02 静态 |
|
||||
| D | EV 群(D07/D08/D15) | D07 EBIT/EV | D08/D15 |
|
||||
| E | 外部融资三件(E01/E02/E03) | **E01 NSI + E02 股权融资强度** | E03 |
|
||||
| E | 杠杆双(E04/E05) | **E05 有息负债率** | E04(Barra DTOA 对照) |
|
||||
| E | 商誉双(E09/E10) | E09 | E10 |
|
||||
| F | SUE 三口径(F01/F02/F03) | **F01 净利 + F02 营收** | F03 EPS(除权扰动) |
|
||||
|
||||
### 4.2 跨族(实施后用数据裁)
|
||||
|
||||
| 跨族群 | 预期 ρ | 处置 |
|
||||
|---|---|---|
|
||||
| **投资-融资扩张群**:C15 资产增速 / C16 / C17 投资率 / C18 / E01 NSI / E02 股权融资 / E03 | 0.4-0.6 | 同为「扩张=毁灭价值」叙事;首批全算,族分析后留 C15+C17+E01 三代表 |
|
||||
| **F01 SUE ↔ C02 净利单季同比** | 0.6-0.8 | 标准化差异 + PEAD 时窗差异;实证后决定合并或分立 |
|
||||
| **A13 CFO/TA ↔ B01 TACC** | 中负 | 一个看现金流回报、一个看应计偏离,理论互补;数据说了算 |
|
||||
| **D10 股息率 ↔ E11 payout** | 中 | 分母不同(价格 vs 盈利),都留 |
|
||||
| **D06 CP ↔ B01 TACC** | 中负 | CP 高=低应计的估值面镜像,报告时并列 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 优先级分级汇总与量级
|
||||
|
||||
### 5.1 分级定义
|
||||
|
||||
- **P0(50 个)**:原料现成(列直接在库)+ 学术/业界双验证 + 纯比值/差分(无回归、无多表配对)——**第一批直接实施**。
|
||||
- **P1(40 个)**:需推导(TTM 构造、复合条件、事件日期链、多表 join、16 季滚动窗)或验证面较弱——第二批,依赖第一批打好的单季化/TTM/PIT 底座。
|
||||
- **P2(6 个)**:原料不足或 A 股制度存疑——B03 修正 Jones(缺行业映射)、E14 解禁(表空)、E15 回购(未采集)、E16 壳价值(制度断点)、F09 预告修正(解析成本)、F10 复合。每项缺什么:行业映射 / restricted 采集 / 回购表 / 制度分段研究 / 预告分组解析 / 前置因子稳定。
|
||||
|
||||
### 5.2 量级总表
|
||||
|
||||
| 族 | 总数 | P0 | P1 | P2 |
|
||||
|---|---|---|---|---|
|
||||
| A 盈利能力 | 17 | 10 | 7 | 0 |
|
||||
| B 盈利质量 | 19 | 10 | 8 | 1 |
|
||||
| C 成长 | 19 | 11 | 8 | 0 |
|
||||
| D 估值 | 15 | 8 | 7 | 0 |
|
||||
| E 资本结构与行为 | 16 | 6 | 7 | 3 |
|
||||
| F 预期事件 | 10 | 5 | 3 | 2 |
|
||||
| **合计** | **96** | **50** | **40** | **6** |
|
||||
|
||||
考虑 §4 去重后,**第一批实际实施建议 30-35 个**(50 个 P0 去掉同族变体),一个季度内可完成计算+评估管线打通。
|
||||
|
||||
---
|
||||
|
||||
## 6. 与量价因子批的暗相关风险(上线必检)
|
||||
|
||||
量价批 227 因子 / 62 effective 的族结构(族 1 量能收缩 35 个 / 族 2 量价背离 16 个为代表)与财务批的四条高危交叉:
|
||||
|
||||
| # | 交叉对 | 机制 | 预期强度 | 处置 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | **D 估值族 × 规模/流动性** | A 股小市值=高 PE/高换手,EP/BP 与 ln(流通市值) ρ 约 −0.3~−0.5;量价族 1「量能收缩」与流动性→市值同源 | 高 | 每个财务因子报 IC 时**同步报 size 中性化后 IC**(D12 ln 市值作控制变量);跨批 rank 相关矩阵第一批就跑 |
|
||||
| 2 | **F SUE/预告 × 价格动量** | 盈余动量≈价格动量的基本面面;A 股预告前抢跑(公告前 price run-up) | ρ 0.3+ | PIT 严格 NOTICE_DATE/公告日对齐;SUE 上线前先对 20/60 日动量做正交残差版对照 |
|
||||
| 3 | **B 应计族 × 换手/波动** | 高应计+次新+高送转=高换手高波动的「炒作代理」;与量价批反转/波动族交叉 | 中高 | B01 极值分位单独看与波动族的重叠 |
|
||||
| 4 | **E12 户数变化 × 流动性** | 户数变化≈换手率的低频版 | ρ 可达 0.5+ | E12 直接列入量价交叉高危名单,实施时对换手率正交 |
|
||||
| 5 | **低波动 × 低估值** | 彩票偏好:高波动股同时是低 EP 股,低波异象与价值因子同向 | 中 | 若 62 effective 含波动族,双 IC 并列报告 |
|
||||
| 6 | **财报季窗口时变重叠** | 财务因子季频→日频前向填充,因子自相关 ~0.98;财报季(4/8/10 月底)信息集中释放时与量价因子重叠瞬时放大 | 时变 | 重叠检验分「全期」与「财报季窗口」两套报告 |
|
||||
|
||||
**检验协议**:直接复用量价批互证管线(227 因子 672 组 ICIR 相关 + 62 effective 族分析同款方法)——财务批内部先做去重(§4),再与量价 62 effective 做跨批 Spearman rank 相关,|ρ|>0.7 归并登记。
|
||||
|
||||
---
|
||||
|
||||
## 7. 实施口径红线(写给第一批 Execute)
|
||||
|
||||
1. **单季差分**:Q = C_t − C_{t−1}(年内);Q1=C1;缺上期置 NaN 不填 0。差分前先按 (SECUCODE, REPORT_DATE, UPDATE_DATE) 去重取最新(重述行)。
|
||||
2. **TTM**:上年年报 + 本年累计 − 上年同期累计;不足 4 季 NaN。
|
||||
3. **PIT**:NOTICE_DATE ≤ 决策日;forecast 用「公告日期」、dividend 用 dividPlanAnnounceDate(研究除权后行为才用 dividStockMarketDate/dividPayDate);快报用 express.公告日期。
|
||||
4. **单位解析**:forecast.预测数值实测已是「元(区间中值)」数值列(如 30000000.0),业绩变动幅度为 % 数值;三表全元。若历史文件出现「万元/亿元」字符串混入,解析函数按后缀转换并打覆盖率日志。
|
||||
5. **金融股剔除**:盈利质量/成长/费用类族剔金融(判型规则 §1.2 R4);估值族保留金融并单独看子域 IC。
|
||||
6. **北交所剔除**:92xxxx/8xxxxx(三表空 + 实盘 universe 主板+创业板)。
|
||||
7. **幸存者偏差声明**:沪深退市 355 + 北交 258 三表缺失 → 财务因子在退市密集期(2001-2005、2019-2021)偏乐观;长史分域验证一律用 valuation_baostock(1990+ 含退市)跑 D14 平行版。
|
||||
8. **准则断点登记**:2007 新准则 / 2018Q3 研发单列 / 2019 金融工具(信用减值+使用权资产)/ 2020 收入准则(合同资产·负债)——触及的因子(A15、B05、B08/B09、D 类)分段报 IC。
|
||||
9. **对账**:三表自算指标 vs financial_abstract 现成指标(ROE/毛利率/负债率/周转率)抽样对账,对不上先查口径再查代码。
|
||||
10. **预告覆盖率**:F04/F05/F07 输出必附当期覆盖率(强制披露规则下的选择偏差)。
|
||||
|
||||
---
|
||||
|
||||
## 8. 参考来源
|
||||
|
||||
**学术**:Piotroski (2000, JAR);Sloan (1996, TAR);Ball & Brown (1968);Bernard & Thomas (1989);Foster (1977);Cooper, Gulen & Schill (2008, JF);Pontiff & Woodgate (2008, JF);Daniel & Titman (2006);Novy-Marx (2013, JFE);Hou, Xue & Zhang (2015, RFS);Fama & French (2015);Balakrishnan, Blouin & Guay (2010);Dechow, Sloan & Sweeney (1995);Basu (1977)。
|
||||
|
||||
**A 股验证**:[Jansen (2021) Anomalies in the China A-share market, PBFJ](https://www.sciencedirect.com/science/article/pii/S0927538X21001141);[《金融研究》中国公募基金挖掘了股票市场异象吗(87 异象检验)](http://www.jryj.org.cn/CN/abstract/abstract1100.shtml);[Titman 等 (NBER w29212) 高送转与散户操纵](https://www.nber.org/system/files/working_papers/w29212/w29212.pdf);[Chen & Xiong 涨跌停与市场行为](https://www.princeton.edu/~wxiong/papers/PriceLimit.pdf);[有限注意力与 A 股 PEAD](http://dianda.cqvip.com/Qikan/Article/Detail?id=7104818948&from=Qikan_Search_Index);[PEAD 综述](https://zhuanlan.zhihu.com/p/164595202);[大摩基金研究:A 股 PEAD 3-6 个月](https://www.morganstanleyfunds.com.cn/news/newsviews/52318)。
|
||||
|
||||
**业界体系**:[Barra CNE5S 十因子计算方法(zhiqiang.org)](https://zhiqiang.org/finance/barra-cne5s-methodology.html);[Barra 价值因子(知乎)](https://zhuanlan.zhihu.com/p/121679764);[CNE6 模型介绍(BigQuant)](https://bigquant.com/wiki/doc/ca0QV0jOzu);[Barra_CNE6 开源复现](https://github.com/ShiliangZhang-nku/Barra_CNE6);[JQData 财务数据文档](https://www.joinquant.com/help/api/doc?name=JQDatadoc&id=10547)。
|
||||
|
||||
**GTJA191 勘误依据**:[DolphinDB gtja191Alpha 模块文档(入参仅量价列)](https://docs.dolphindb.com/zh/modules/gtja191Alpha/191alpha.html);[BigQuant Alpha191 公式](https://bigquant.com/wiki/doc/Pyf0TYya6H)。
|
||||
|
||||
**内部**:`docs/fundamental_corpus_probes_20260906.md`(原料摸底);`docs/factor_research/2026-08-20-factor-library-survey.md`(因子库全景);融合 spec §19.7(数据缺口与 valuation_baostock 长史);NAS 实测探针(本文 §1.1 全部列名 2026-09-07 当日读取 parquet schema 而来)。
|
||||
Reference in New Issue
Block a user