/** * 因子评估与合成(纯函数、零依赖;方法论对齐 alphalens)。 * * 数据适配说明:dsh-quant 不提供数据,本模块接受"等长数组"输入: * - 单资产时间序列:factor[t] 配 forwardReturns[t+1](factor[t] 预测的是未来收益) * - 多资产截面:把截面按时间摊平为序列后传入(文档见 README/plan) * * 指标语义(alphalens 金标准): * - IC:因子值与未来收益的 Pearson 相关(方向 + 强度) * - ICIR:滚动 IC 的均值/标准差(稳定性) * - 分位数分层收益:按因子值分 5 组,各组未来收益均值 + 多空价差(Q5-Q1) * - 换手:相邻期分位数组变化的平均比例(策略成本代理) * - 自相关:因子自身的持续性 */ export interface QuantileBucket { quantile: number; /** 组内未来收益均值 */ meanReturn: number; count: number; } export interface FactorEval { /** 全样本 IC */ ic: number; /** RankIC(Spearman 秩相关,对异常值稳健) */ rankIc: number; /** IC 衰减:horizon 1..decayHorizons 的 IC(factor[i] 配 forwardReturns[i+h]) */ icDecay: number[]; /** ICIR = 滚动 IC 均值 / 滚动 IC 标准差 */ icir: number; /** 滚动 IC 序列(window 滑动) */ icSeries: number[]; /** 分位数分层收益(按因子值升序分 quantiles 组) */ quantileReturns: QuantileBucket[]; /** 多空价差 = 最高组均值 - 最低组均值 */ longShort: number; /** 换手:相邻期分位数组变化的平均比例 */ turnover: number; /** 因子一阶自相关 */ autocorr1: number; /** 有效配对样本数 */ n: number; } /** 因子评估(IC/RankIC/IC衰减/ICIR/分层/换手/自相关)。 */ export declare function factorEvaluate(factorValues: readonly number[], forwardReturns: readonly number[], quantiles?: number, window?: number, decayHorizons?: number): FactorEval; export interface CombineResult { /** 合成信号(截面 rank 归一化到 0..1,升序=分数越大越好) */ signal: number[]; /** 各因子的 z-score 标准化权重(归一化后) */ effectiveWeights: number[]; /** 输入因子数 */ factorCount: number; } /** * 多因子合成:各因子 z-score 标准化 → 按权重(默认等权)加权 → 截面 rank * 归一化到 0..1。各因子数组须等长。 */ export declare function combineFactors(factors: readonly (readonly number[])[], weights?: readonly number[]): CombineResult; export interface NeutralizeOptions { /** 分组标签(如行业代码),与 factor 等长;配合 method: group */ groups?: readonly (string | number)[]; /** 风格因子(如市值/动量),每个与 factor 等长;配合 method: ols */ styleFactors?: readonly (readonly number[])[]; /** 方法;缺省按输入推断:styleFactors → ols,groups → group,否则 zscore */ method?: 'group' | 'ols' | 'zscore'; } export interface NeutralizeResult { /** 中性化后的因子值(z-score 标准化:均值 0、总体标准差 1) */ values: number[]; method: 'group' | 'ols' | 'zscore'; /** 分组数(仅 group) */ groupCount: number; /** 风格因子数(仅 ols) */ styleCount: number; /** ols 拟合优度(仅 ols;目标方差为 0 时为 null) */ rSquared: number | null; } /** * 因子中性化:剥离分组/风格暴露后做 z-score 标准化。 * - zscore:截面标准化(对照组) * - group:组内 z-score(行业中性化的简化版) * - ols:对风格因子 + 截距回归取残差再标准化(回归中性化) */ export declare function factorNeutralize(factor: readonly number[], options?: NeutralizeOptions): NeutralizeResult;