行为
0001-特征字典基线文档 » 历史记录 » 修订 1
修订 1/4
| 下一页 »
Huarui Lin, 2026-04-17 13:53
document_id: DICT-FEATURE-001
version: 1.0.0
status: Frozen (Baseline)
created_date: 2026-04-11
approved_by: Henry Lin
parent_spec: SPEC-FUND-DCA-001 (《基金量化定投选基系统 — 最终设计规约 v1.0》 4.1节)
特征字典基线文档 (V1.0 Frozen)¶
⚠️ 架构冻结声明
本文档为《系统设计规约 v1.0》4.1节的唯一刚性补充附件,具有同等红线效力。
代码实现(feature_engineering.py)、单测(test_feature_engineering.py)、标准化参数输出(standardization_params.parquet的feature_name字段)必须与此文档列出的 38 个特征名严格一字不差。严禁擅自增删改。
一、 维度总控与决策记录¶
- 最终特征总数:38 维
-
命名范式:
{特征语义}_{窗口期}w(无窗口期特征直接使用语义名) -
维度溯源:基于规约 4.1 节原始公式推导出 37 维,补充 1 维基础微观动量特征(
weekly_return),共计 38 维。 -
【关键架构决策 A 记录】:为何固守 38 维,放弃补齐至 40+ 维?
-
冲突点:曾计划补充
nav_ma_26w与nav_ma_52w(净值均线绝对值)以满足“40+维”字面要求。 - 否决理由:累计净值(NAV)是强路径依赖的单调递增序列。老基金(如存续5年,MA=2.5)与新基金(存续1年,MA=1.1)的绝对均线存在巨大量纲差异。若强行执行规约 4.3 的“截面 Z-Score”,老基金与新基金的绝对净值信息将被强行拉平至同一正态分布,导致模型彻底丧失对基金存续期与净值规模的感知能力。
- 结论:为捍卫规约 4.3“全量特征严格走 T-1 截面标准化”的普适性铁律,主动摒弃对标准化不友好的绝对值指标。38 维已实现对定投体验的完备刻画,不再引入特例豁免逻辑。
-
冲突点:曾计划补充
二、 特征详细字典¶
A. 均值回归类 (5维)¶
捕捉价格偏离均线的程度,是定投“越跌越买”策略的核心择时指标。
| 特征名 | 计算公式 (严格遵从规约) | 窗口期 | 业务含义与定投必要性 |
|---|---|---|---|
price_vs_ma_ratio_12w |
nav / rolling_mean(nav, 12) |
12 | 短期偏离度。捕捉近3个月的超买超卖。比值极低说明近期处于弱势阴跌,定投摊薄成本低,但需警惕趋势性下跌。 |
price_vs_ma_ratio_26w |
nav / rolling_mean(nav, 26) |
26 | 中期偏离度。半年的均值回归基准,定投最核心的观测窗口。偏离度极低时是收集廉价筹码的黄金期。 |
price_vs_ma_ratio_52w |
nav / rolling_mean(nav, 52) |
52 | 长期偏离度。过滤短期噪音,判断该基金是否处于历史级别的低估区域。 |
price_vs_ma_ratio_ewm_26w |
nav / ewm_mean(nav, span=26) |
26 | 指数加权偏离度。相比等权MA,EWM更赋予近期净值更高权重,对趋势反转的灵敏度更高,有助于提前识别定投止盈拐点。 |
price_vs_ma_ratio_ewm_52w |
nav / ewm_mean(nav, span=52) |
52 | 长期指数加权偏离度。长期趋势反转的早期信号。 |
B. 波动类 (6维)¶
波动率是定投体验的双刃剑:无波动难以摊薄成本,高波动易触发心理止损。
| 特征名 | 计算公式 (严格遵从规约) | 窗口期 | 业务含义与定投必要性 |
|---|---|---|---|
weekly_return |
(nav_t / nav_{t-1}) - 1 |
无 | 微观基础动量。最细粒度的净值突变信息。作为波动与动量计算的基石,必须作为独立特征保留,防止信息断层。 |
rolling_std_12w |
rolling_std(weekly_return, 12) |
12 | 短期波动率。衡量近期净值抖动程度。过高意味着近期定投账面波动剧烈,影响持有体验。 |
rolling_std_26w |
rolling_std(weekly_return, 26) |
26 | 中期波动率。定投核心波动观测期。模型需学习出“何种中等波动率配合趋势能最快达到20%止盈”。 |
rolling_std_52w |
rolling_std(weekly_return, 52) |
52 | 长期波动率。基金的固有波动属性标签。 |
downside_vol_26w |
rolling_std(min(weekly_return, 0), 26) |
26 | 下行波动率。只计算跌幅的波动。定投最怕的不是震荡,而是单边下行,该特征直接刻画定投被套的痛苦程度。 |
downside_vol_52w |
rolling_std(min(weekly_return, 0), 52) |
52 | 长期下行波动率。长期风险底线的度量。 |
volatility_regime |
rolling_std(12w) / rolling_std(52w) |
12/52 | 波动率 Regime。比值>1说明近期波动放大(可能变盘),<1说明进入平静期。模型借此识别定投策略应“激进”还是“防守”。 |
C. 趋势与动量类 (11维)¶
动量是决定定投能否在150周内实现20%止盈的绝对核心。没有向上动量的基金,定投只是“钝刀子割肉”。
| 特征名 | 计算公式 (严格遵从规约) | 窗口期 | 业务含义与定投必要性 |
|---|---|---|---|
momentum_4w |
(nav_t / nav_{t-4}) - 1 |
4 | 月度动量。极短期的爆发力,捕捉右侧起涨点。 |
momentum_12w |
(nav_t / nav_{t-12}) - 1 |
12 | 季度动量。验证短期趋势是否确立。 |
momentum_26w |
(nav_t / nav_{t-26}) - 1 |
26 | 半年动量。中期趋势强度的核心指标。 |
momentum_52w |
(nav_t / nav_{t-52}) - 1 |
52 | 年度动量。长期牛熊分界线。 |
max_drawdown_26w |
1 - nav_t / rolling_max(nav, 26) |
26 | 中期最大回撤。距离半年内高点的回撤。深回撤区间定投是构建低成本底仓的良机,但过深可能反映基本面恶化。 |
max_drawdown_52w |
1 - nav_t / rolling_max(nav, 52) |
52 | 长期最大回撤。基金的极端风险承受力测试。 |
trend_slope_26w |
log(nav) OLS斜率 × 年化 |
26 | 中期趋势斜率。剔除复利影响后的纯方向性指标。正斜率是定投止盈的先决条件。 |
trend_slope_52w |
log(nav) OLS斜率 × 年化 |
52 | 长期趋势斜率。基金长期盈利能力的确定性。 |
trend_r_squared_26w |
OLS回归的R² |
26 | 中期趋势稳定性。R²越高说明净值走势越符合单边趋势,定投的“画线”体验越好。 |
trend_r_squared_52w |
OLS回归的R² |
52 | 长期趋势稳定性。区分“慢牛”与“剧烈震荡”。 |
consecutive_down_weeks |
从当前向前连续 weekly_return < 0 的周数 |
无 | 连阴周数。极端情绪指标。连阴末期往往是定投建仓的极佳左侧信号。 |
D. 定投特有类 (10维)¶
本系统区别于传统排名系统的灵魂所在。传统指标看“买入并持有”收益,此类指标看“分批买入”体验。
| 特征名 | 计算公式 (严格遵从规约) | 窗口期 | 业务含义与定投必要性 |
|---|---|---|---|
dca_cost_ratio_12w |
rolling_mean(nav, 12) / nav |
12 | 12周定投成本浮盈率。值<1表示过去3个月定投的平均成本低于当前净值(处于浮盈),直接刻画定投盘状态。 |
dca_cost_ratio_26w |
rolling_mean(nav, 26) / nav |
26 | 26周定投成本浮盈率。半年度定投持仓的盈亏体验。 |
dca_cost_ratio_52w |
rolling_mean(nav, 52) / nav |
52 | 52周定投成本浮盈率。长线定投盘的安全垫厚度。 |
dca_return_12w |
(nav - rolling_mean(nav, 12)) / rolling_mean |
12 | 12周定投收益率。与上方互为印证,更符合基民阅读习惯。 |
dca_return_26w |
(nav - rolling_mean(nav, 26)) / rolling_mean |
26 | 26周定投收益率。 |
dca_return_52w |
(nav - rolling_mean(nav, 52)) / rolling_mean |
52 | 52周定投收益率。 |
dca_return_vol_26w |
rolling_std(dca_return序列, 26) |
26 | 定投收益波动率。定投收益的抖动程度。波动过大说明虽然涨,但定投体验像坐过山车。 |
dca_return_vol_52w |
rolling_std(dca_return序列, 52) |
52 | 长期定投收益波动率。 |
dca_win_rate_26w |
rolling_mean(dca_return > 0, 26) |
26 | 26周定投正收益周占比。定投的“舒适度”指标。胜率越高,客户越容易拿得住,从而真正等到20%止盈。 |
dca_win_rate_52w |
rolling_mean(dca_return > 0, 52) |
52 | 52周定投正收益周占比。长期的持有体验指标。 |
E. 风险调整类 (5维)¶
将收益与风险结合,寻找“性价比”最高的定投标的。
| 特征名 | 计算公式 (严格遵从规约) | 窗口期 | 业务含义与定投必要性 |
|---|---|---|---|
rolling_sharpe_26w |
(rolling_mean(weekly_ret) - weekly_rf) / rolling_std(weekly_ret) × √52 |
26 | 半年期夏普比率。承担1单位风险能获得多少超额收益,定投应优选高Sharpe基金。 |
rolling_sharpe_52w |
(rolling_mean(weekly_ret) - weekly_rf) / rolling_std(weekly_ret) × √52 |
52 | 一年期夏普比率。 |
rolling_sortino_26w |
(rolling_mean(weekly_ret) - weekly_rf) / rolling_std(min(weekly_ret, 0)) × √52 |
26 | 半年期索提诺比率。只惩罚下行风险。对于定投,上行波动是好事,Sortino比Sharpe更契合定投场景。 |
rolling_sortino_52w |
(rolling_mean(weekly_ret) - weekly_rf) / rolling_std(min(weekly_ret, 0)) × √52 |
52 | 一年期索提诺比率。 |
calmar_ratio_52w |
annualized_return(52) / max_drawdown(52) |
52 | 卡玛比率。年化收益除以最大回撤。直接回答“为了赚这点钱,定投最多可能被套多少”,是止盈效率的终极体现。 |
三、 工程实现红线约束重申¶
-
存储形态红线:上述 38 维特征在
features.parquet中必须为长表形态(Schema:fund_id,net_value_date,feature_name,feature_value)。严禁 Pivot 成宽表(即严禁出现 38 列并排的 DataFrame)。 - 标准化红线:38 维特征无条件、无特例全部进入规约 4.3 的 T-1 截面 Z-Score + MAD clip 流水线。
-
空值判定红线:所有带窗口期的特征,必须执行规约 4.2 的有效值判定(
min_valid_ratio=0.20),不足则输出 NULL,交由 LightGBM 原生处理。
由 Huarui Lin 更新于 大约 10 小时 之前 · 1 修订