Walk-forward IC measurement + portfolio backtest harness.
Files: Omni/Fund/Quant/Eval.hs, Omni/Fund/Quant/Test.hs
Deliverables:
Eval types:
SignalEval — IC, IC std, ICIR, hit rate, t-stat, decay curvePortfolioEval — total return, annualized, Sharpe, max drawdown, CalmarEvalConfig — universe, train/test split, rebalance freq, horizons, min thresholdsCore functions:
spearmanCorrelation :: [Double] -> [Double] -> DoubleevalSignalIC :: EvalConfig -> SignalFn -> Map Text [DailyBar] -> SignalEvalsignalPasses :: EvalConfig -> SignalEval -> BoolevalPortfolio :: EvalConfig -> SignalFn -> Map Text [DailyBar] -> (PortfolioEval, PortfolioEval) — strategy vs equal-weightmaxDrawdown :: [Double] -> DoublerunEvalSuite :: EvalConfig -> IO () — full eval runner with pass/fail outputDefault config: Train 2020-2023, test 2024-2025, weekly rebalance, IC > 0.02, t > 2.0.
Test.hs: Property tests for Spearman correlation, golden tests for momentum IC on synthetic data, integration test loading cached market data and running full eval.
This is the gate — if eval doesn't pass, nothing proceeds to Phase 2.
Ava verified: implementation present in live tree (file/feature confirmed via inspection). Moving to Verified.
Part of epic t-709 (Quant Phase 1)