/** 单条检验结论。 */ export interface GateResult { /** 关卡名 */ gate: string; /** 是否通过 */ pass: boolean; /** 人类可读的实测值 */ detail: string; } /** 体检报告。 */ export interface ValidationReport { /** 总体判定:全部通过才为 true */ pass: boolean; /** 六道关卡的逐条结果 */ gates: GateResult[]; /** 汇总统计 */ summary: { n: number; meanExcessPct: number; medianExcessPct: number; sdExcessPct: number; tStat: number; pValue: number; /** 当前样本量下能检测到的最小效应(80% 功效),单位 % */ detectableEffectPct: number; /** 对观测效应量所需的样本量(80% 功效) */ requiredN: number; }; } /** 检验选项。 */ export interface ValidateOptions { /** 显著性水平,默认 0.05 */ alpha?: number; /** 参数搜索/策略尝试次数(用于 Deflated Sharpe),默认 1 */ trials?: number; /** 逐窗口胜率的最低要求,默认 0.6 */ minBeatRate?: number; /** 每窗口收益的夏普(用于 Deflated Sharpe);缺省用超额/其标准差推算 */ sharpePerPeriod?: number; } /** * 对逐窗口超额收益做六道关卡检验。 * * @param excessPerWindow 每个不重叠窗口相对基准的超额收益(百分点,如 3.5 表示 +3.5%) * @param options 检验参数 * @returns 体检报告 * * @example * const r = validateStrategy([2.1, -1.3, 5.4, ...], { trials: 21 }) * if (!r.pass) console.log(r.gates.filter(g => !g.pass).map(g => g.gate)) */ export declare function validateStrategy(excessPerWindow: readonly number[], options?: ValidateOptions): ValidationReport;