/** * 统计功效与显著性工具(纯 Node、零依赖)。 * * 动机:Round 13-15 的结论全部是"不显著",但**不显著 ≠ 无效** —— * 也可能只是样本太少。本模块量化"我们到底有多少把握": * 1. 给定样本量与效应量,算出**统计功效**(能否检测到该效应) * 2. 给定观测效应与样本量,算出**所需样本量**(要多少窗口才能下结论) * 3. Newey-West 校正的 t 检验(窗口间存在自相关) * 4. Deflated Sharpe(校正多重检验) */ /** 标准正态 CDF(Abramowitz-Stegun 近似)。 */ export declare function normCdf(x: number): number; /** 标准正态分位数(Acklam 近似)。 */ export declare function normInv(p: number): number; /** 均值与 Newey-West 校正标准误(处理窗口间自相关)。 */ export declare function meanSeNW(xs: readonly number[], lags?: number): { mean: number; se: number; t: number; n: number; }; /** 双尾 p 值(正态近似)。 */ export declare function pValue(t: number): number; /** * 中央 t 分布的 CDF:P(T <= t)。 * 用正则化不完全 Beta 的精确关系:P(T<=t) = 1 - 0.5·I_{df/(df+t²)}(df/2, 1/2)(t>=0)。 */ export declare function centralTCdf(t: number, df: number): number; /** * Student t 分位数(精确反解,非近似)。 * * 修正记录:早期版本用 Cornish-Fisher 展开,在低自由度下误差明显 * (df=5 时 t(0.975)=2.547 而真值 2.571,误差 0.024)。 * 现在改为对 {@link centralTCdf} 做二分反解,精度达 1e-10。 * * @param p 累积概率(如 0.975 取上尾 2.5% 的分位点,返回正值) * @param df 自由度 */ export declare function tQuantile(p: number, df: number): number; /** * 统计功效:给定真实效应量与样本量,检测到它的概率。 * @param effect 真实效应量(如超额收益均值) * @param sd 单期标准差 * @param n 样本量 * @param alpha 显著性水平(默认 0.05) * @returns 功效(0..1);惯例 0.8 以上算"足够" */ export declare function power(effect: number, sd: number, n: number, alpha?: number): number; /** * 非中心 t 分布的 CDF:P(T' <= t),其中 T' 服从 df 自由度、非中心参数 ncp。 * * 实现:利用 T' = (Z + δ)/√(W/df) 的结构做数值积分 * P(T' <= t) = E_W[ Φ(t·√(W/df) − δ) ] , W ~ χ²_df * 这比正态近似准确得多(实测 d=0.5,n=16 时正态给 0.516,精确值 0.34)。 * * @param t 分位点 * @param df 自由度(>= 1) * @param ncp 非中心参数 */ export declare function noncentralTCdf(t: number, df: number, ncp: number): number; /** * 正则化不完全 Beta 函数 I_x(a, b)(连分式展开,Numerical Recipes 风格)。 */ export declare function incompleteBeta(x: number, a: number, b: number): number; /** * 达到目标功效所需的样本量。 * @param effect 效应量 * @param sd 标准差 * @param targetPower 目标功效(默认 0.8) * @param alpha 显著性水平 */ export declare function requiredSampleSize(effect: number, sd: number, targetPower?: number, alpha?: number): number; /** * Deflated Sharpe(Bailey & López de Prado)。 * 校正"在 N 次试验里挑最好"的选择偏差。 * @param sharpe 观测夏普(与 n 同频) * @param n 样本期数 * @param trials 试验次数 * @param skew 偏度 * @param excessKurt 超额峰度(正态=0) */ export declare function deflatedSharpe(sharpe: number, n: number, trials: number, skew?: number, excessKurt?: number): { dsr: number; minSharpe: number; significant: boolean; sd?: number; };