/** * 分层回测(纯函数、零依赖)。 * * 核心问题:把因子值分层(分位数分组),跟踪"买入 top 组 / 卖出 * bottom 组"的组合净值 —— 从"因子评估"到"策略雏形"的桥梁。 * * 设计:每期按因子值分 N 层,持有 top 层(做多)、bottom 层(做空 * 或只做多),等权,定期调仓(horizon 期),含交易成本。 */ /** 分层回测结果。 */ export interface LayeredBacktestResult { /** 分层数 */ layers: number; /** top 组合净值曲线(持有因子值最高的 1/layers 部分) */ topEquity: number[]; /** bottom 组合净值曲线 */ bottomEquity: number[]; /** 多空组合净值曲线(long top + short bottom) */ longShortEquity: number[]; /** top 组合累计收益 % */ topReturnPct: number; /** bottom 组合累计收益 % */ bottomReturnPct: number; /** 多空累计收益 % */ longShortReturnPct: number; /** 调仓次数 */ rebalances: number; /** 每层的平均收益 %(诊断用) */ layerMeanReturnPct: number[]; notes: string[]; } /** * 分层回测。 * * 输入: * - factor:每期每资产的因子值矩阵 [time][asset] * - returns:每期每资产的收益矩阵 [time][asset] * - layers:分层数(默认 5) * - horizon:调仓周期(默认 5 期) * - feeRate:单边费用(默认 0.001) * * 假设:每期初按 factor 分位分层,等权持有该层所有资产, * 持有 horizon 期后按新 factor 调仓(t 期信号,t+horizon 起生效)。 */ export declare function layeredBacktest(factor: readonly number[][], returns: readonly number[][], layers?: number, horizon?: number, feeRate?: number): LayeredBacktestResult;