生成时间:2026-09-13 15:49:34;适用数据:股票-日期面板 (i,t),因子在 t 日可得,收益在未来取得。
| 符号 | 定义 |
|---|---|
i, t | 股票和形成日;横截面股票数为 N_t。 |
x_{i,t} | t 日收盘后可获得的因子暴露,例如 vol_30、ivo_60。 |
r_{i,t+h} | 从 t+1 到 t+h 的未来累计收益。简单收益为 P_{i,t+h}/P_{i,t}-1;若每日收益为 r_d,则累计收益为 prod(1+r_d)-1。 |
x^w | 横截面 winsorize 后的因子,例如按 1% 和 99% 分位数截尾。 |
z_{i,t} | 横截面标准化:(x_{i,t}-mean_t(x))/sd_t(x)。 |
# pandas 伪代码:先构造未来收益,再对齐因子
df = df.sort_values(["instrument", "datetime"])
df["ret_1d_fwd"] = df.groupby("instrument")["close"].shift(-1) / df["close"] - 1
# 绝不能使用当前日之后才知道的值作为当前因子
df["factor_lag"] = df.groupby("instrument")["factor"].shift(1) # 仅当原 factor 在收盘后形成时需要
每个形成日 t,在股票横截面计算因子和未来收益的相关系数:
IC_t = Corr_i(x_{i,t}, r_{i,t+h})。
通常使用 Pearson 相关。样本估计量为:
IC_t = sum_i[(x_i-xbar)(r_i-rbar)] / sqrt(sum_i(x_i-xbar)^2 sum_i(r_i-rbar)^2)。
它衡量线性预测关系;IC=0 不代表不存在非线性关系。
先把因子和收益替换为横截面排名:
RankIC_t = Corr_i(rank(x_{i,t}), rank(r_{i,t+h}))。
Rank IC 等价于 Spearman 秩相关,衡量单调关系,对极端值比 Pearson 更稳健。因子研究中通常优先报告 Rank IC。
设有效形成日共有 T 个:
meanIC = (1/T) sum_t IC_t
sdIC = sqrt[sum_t(IC_t-meanIC)^2/(T-1)]
ICIR = meanIC / sdIC。
ICIR 是 IC 的信噪比,不是收益 Sharpe。若把 IC 按独立同分布近似,t(meanIC) = meanIC/(sdIC/sqrt(T)) = ICIR*sqrt(T);但日频 IC 往往自相关,推断应使用 HAC/Newey-West 标准误。
IC Hit Rate = (1/T) sum_t 1(IC_t > 0)。
也可以定义为有效期中 IC 与理论方向一致的比例。胜率高但 IC 很小,仍不代表经济价值高;必须和 mean IC、ICIR 一起看。
def daily_ic(g, factor, future_return):
x, y = g[factor], g[future_return]
return x.corr(y, method="spearman") # Rank IC
ic = df.dropna(subset=["factor", "ret_20d_fwd"]).groupby("datetime").apply(
daily_ic, factor="factor", future_return="ret_20d_fwd"
)
mean_ic = ic.mean()
sd_ic = ic.std(ddof=1)
icir = mean_ic / sd_ic
hit_rate = (ic > 0).mean()
每个 t 按因子分为 K 组。第 k 组未来收益为:
R_{k,t} = sum_{i in k} w_{i,t} r_{i,t+h},其中等权 w=1/n_{k,t};市值加权为形成日市值除以组内市值总和。
多空收益通常定义为:
R_{H-L,t} = R_{K,t} - R_{1,t}。
统计量包括平均收益 mean(R)、年化收益、年化波动率、Sharpe、t 值和最大回撤。年化因子为 A=252(日频)或 12(月频):
Annualized Return ≈ A * mean(R);Annualized Vol = sqrt(A)*sd(R);Sharpe = sqrt(A)*mean(R)/sd(R)。
严格的复合年化收益为 (prod(1+R_t))^(A/T)-1,日频高波动时优先使用复合定义。
单调性不应只看最高组减最低组,还应检查组均值随因子排序是否近似单调,可报告相邻组差异和组号回归:
R_{k,t} = a_t + b * k + error。b 的时间平均及其 HAC t 值衡量组合收益的排序趋势。
第一步,对每个 t 做横截面回归:
r_{i,t+h} = a_t + lambda_{1,t} z_{1,i,t} + ... + lambda_{K,t} z_{K,i,t} + epsilon_{i,t+h}。
第二步,对每个风险价格取时间平均:
lambda_bar_k = (1/T) sum_t lambda_{k,t}。
经典标准误为 sd(lambda_{k,t})/sqrt(T);因 lambda_{k,t} 可能自相关,建议对其时间序列使用 Newey-West HAC 标准误和 t 值:
t_k = lambda_bar_k / SE_HAC(lambda_bar_k)。
应依次报告单因子、同类因子联合、经典因子控制和完整模型。加入多个高度相关的 30/60/120 日指标后,系数可能因多重共线性变得不稳定。
# 概念实现
for date, g in df.groupby("datetime"):
X = sm.add_constant(g[["z_vol", "z_ivo", "z_mdd"]])
y = g["ret_20d_fwd"]
lambda_t[date] = sm.OLS(y, X, missing="drop").fit().params
mean_lambda = lambda_t.mean()
nw_result = sm.OLS(lambda_t["z_vol"], np.ones(len(lambda_t))).fit(
).get_robustcov_results(cov_type="HAC", maxlags=5)
先构造因子多空组合收益 R^p_t,再回归:
R^p_t = alpha + beta' F_t + epsilon_t。
F_t 可以包含市场超额收益、SMB、HML、RMW、CMA、Momentum、Liquidity 等。
alpha 是控制这些共同因子后的平均异常收益。报告 alpha、年化 alpha、beta、R²、HAC 标准误和 t 值。alpha 消失,说明组合收益可能只是已有风险暴露;alpha 仍显著,才有增量解释的证据。
| 指标 | 严格定义 | 解释 |
|---|---|---|
| 最大回撤 | DD_t = V_t/max_{s≤t}V_s - 1;MaxDD=min_t DD_t。 | 从历史峰值到之后低点的最大跌幅。 |
| 换手率 | 常用定义:Turnover_t = 0.5 * sum_i |w_{i,t}^{new}-w_{i,t}^{old}|。 | 半换手定义下,调仓买卖一侧的交易比例。 |
| 交易成本后收益 | R_net,t = R_gross,t - c * Turnover_t;更细致时按股票使用 bid-ask、冲击和佣金。 | 判断信号是否可交易。 |
| 最大损失日 | min_t R_t。 | 识别尾部风险;可补充 VaR 和 Expected Shortfall。 |
| 容量 | 根据 ADV、参与率、冲击成本估算可交易资金;例如单股交易额不超过过去平均成交额的固定比例。 | 避免回测收益依赖不可实现的成交。 |
同时计算暴露相关性 Corr_i(x^a_{i,t},x^b_{i,t}) 和因子组合收益相关性 Corr_t(R^a_t,R^b_t)。二者含义不同,不可互相替代。
VIF 定义为:
VIF_j = 1/(1-R_j^2),其中 R_j^2 是用其他解释变量回归第 j 个因子的决定系数。VIF 越大,系数方差膨胀越严重;常见提示线为 5 或 10,但不是定理。
增量价值可用 spanning regression:
R^new_t = alpha + beta' R^{old}_t + epsilon_t。
检验 alpha=0。也可比较加入新因子前后的 OOS R²、组合 Sharpe、最大回撤和成本后收益。
样本外预测可报告:
OOS R² = 1 - sum_t(r_t-rhat_t)^2 / sum_t(r_t-rbar_train)^2。
OOS R² 为负并不一定说明因子完全无效,但表示相对于训练期均值基准没有改善预测。
| 表 | 必须包含 |
|---|---|
| 因子描述统计 | 均值、标准差、分位数、缺失率、横截面和时间序列样本数。 |
| IC 表 | 预测期、mean IC、sd IC、ICIR、IC 胜率、HAC t 值。 |
| 分组收益表 | 各分位组收益、H-L、年化收益、波动率、Sharpe、t 值。 |
| Fama-MacBeth 表 | 单因子、同类联合、经典控制、完整模型的平均 lambda、HAC t 值。 |
| 时间序列表 | CAPM/FF3/FF5 alpha、beta、HAC t 值、R²。 |
| 可交易性表 | 换手率、交易成本前后收益、最大回撤、容量近似。 |
| 稳健性表 | 时间段、股票池、分组、持有期、权重和样本外结果。 |
注:公式中的日历年化因子应与实际收益频率一致;A 股交易日通常取 252,但最终应按样本实际交易日历核对。所有 t 值都应明确标准误类型。