/** * 回测纯函数(零 dsh 依赖,可独立测试)。 * * 策略:双均线交叉——fast SMA 上穿 slow SMA 时全仓买入,下穿时清仓。 * 信号在 bar i 确认,在 bar i+1 以收盘价成交(避免未来函数)。 * 输出含交易列表、资金曲线、总收益、最大回撤、夏普比率(年化假设 365 根/年)。 */ export interface BacktestTrade { /** 入场 bar 索引(信号确认的下一根) */ entryIndex: number; /** 入场价 */ entryPrice: number; /** 出场 bar 索引 */ exitIndex: number | null; /** 出场价(null = 持仓到末尾未平仓) */ exitPrice: number | null; /** 该笔收益(含手续费后的净收益率) */ returnPct: number | null; /** 出场原因:策略信号 / 止损 / 止盈 */ exitReason?: 'signal' | 'stop_loss' | 'take_profit'; } export interface BacktestOutput { totalReturnPct: number; maxDrawdownPct: number; sharpe: number; /** 与输入等长:1 表示满仓,0 表示空仓 */ position: (0 | 1)[]; /** 与输入等长的归一化资金曲线(初始 1) */ equityCurve: number[]; trades: BacktestTrade[]; fast: number; slow: number; feeRate: number; } /** * 双均线交叉回测。要求 fast < slow,feeRate >= 0。 * 若序列尾部仍持仓,最后一笔交易的 exitIndex/exitPrice/returnPct 为 null(未平仓)。 */ export declare function backtestMaCross(close: readonly number[], fast: number, slow: number, feeRate: number, stopLoss?: number, takeProfit?: number): BacktestOutput; export interface GridResult { fast: number; slow: number; totalReturnPct: number; maxDrawdownPct: number; sharpe: number; trades: number; } export interface BacktestGridOutput { /** 按总收益降序排列的所有组合结果 */ results: GridResult[]; /** 总收益最高的组合 */ best: GridResult; fastRange: { min: number; max: number; }; slowRange: { min: number; max: number; }; feeRate: number; } /** * 双均线参数网格搜索:对 fast ∈ [fastMin, fastMax]、slow ∈ [slowMin, slowMax] * 的每个 (fast, slow) 组合(要求 fast < slow)跑 backtestMaCross, * 返回按总收益降序的结果列表与最佳组合。纯计算,零依赖。 */ export declare function backtestGrid(close: readonly number[], fastMin: number, fastMax: number, slowMin: number, slowMax: number, feeRate: number): BacktestGridOutput; /** * 布林带突破策略:收盘价上穿上轨买入;下穿中轨(SMA)或止损/止盈卖出。 * 信号 bar i 确认、i+1 收盘成交(无未来函数)。 */ export declare function backtestBollingerBreakout(close: readonly number[], window: number, multiplier: number, feeRate: number, stopLoss?: number, takeProfit?: number): BacktestOutput; /** * RSI 均值回归策略:RSI 上穿 buyBelow 买入;RSI 下穿 sellAbove 卖出;止损/止盈可配。 * 信号 bar i 确认、i+1 收盘成交(无未来函数)。 */ export declare function backtestRsiReversion(close: readonly number[], rsiWindow: number, buyBelow: number, sellAbove: number, feeRate: number, stopLoss?: number, takeProfit?: number): BacktestOutput; export interface PortfolioAsset { name: string; close: readonly number[]; } export interface BacktestPortfolioOutput { totalReturnPct: number; maxDrawdownPct: number; sharpe: number; /** 归一化组合净值(初始 1) */ equityCurve: number[]; assetNames: string[]; /** 最终持仓权重(按市值) */ finalWeights: number[]; /** 执行的再平衡次数 */ rebalances: number; feeRate: number; } /** * 多资产组合回测:初始按权重建仓,可每 rebalanceEvery 根再平衡回目标权重。 * 初始建仓与每次再平衡按交易金额双边收取 feeRate。 */ export declare function backtestPortfolio(assets: readonly PortfolioAsset[], weights: readonly number[] | undefined, rebalanceEvery: number | undefined, feeRate: number): BacktestPortfolioOutput;