Why AUC >0.65 matters
Moon Dev warns that high raw accuracy (e.g., 90%) often fails in live trading due to class imbalance and recommends targeting AUC ≥ 0.65, plus an RBI (Research–Backtest–Implement) framework for deployment. That thread lists concrete feature-engineering and validation practices inspired by top quant shops—useful for ML strategy interviews. (x.com)
Moon Dev’s AI-agents repository and documentation include an explicit Research–Backtest–Implement (RBI) pipeline that auto-refines idea → backtest code paths via chained agents. (deepwiki.com) The RBI backtesting layer described in the project uses backtesting.py-style runs, structured outputs, and an execution container to capture metrics, logs and debug traces for each candidate strategy. (deepwiki.com) High raw accuracy can be misleading in finance because an always‑negative classifier can reach very high accuracy on heavily imbalanced labels (e.g., 95% negatives) while offering zero predictive value for the rare positive events. (stackoverflow.com) AUC (ROC‑AUC) is threshold‑agnostic and measures pairwise ranking performance — formally the probability a randomly chosen positive scores higher than a randomly chosen negative — making it more informative for imbalanced label problems than a single accuracy point. (developers.google.com) Academic and practitioner guides commonly classify AUC: values below ~0.6 are often labelled poor, 0.7–0.8 “acceptable/fair,” and >0.8 as good-to-excellent, so production standards in risk- or alpha-seeking systems typically target well above coin‑flip performance. (thelancet.com) Top quant validation practices recommended for RBI‑style pipelines include Purged K‑Fold with embargo to remove label overlap (Marcos López de Prado’s method), combinatorial purged CV to estimate backtest overfitting, and library support for these techniques in MLFinLab/skfolio implementations. (gbv.de) A practical interview/project task aligned to the thread: implement Purged+Embargo K‑Fold (e.g., the Furkan‑rgb Python implementation), compute scikit‑learn ROC AUC on time‑labelled returns, then feed the same signals into a backtesting.py run that includes realistic slippage and fees to report out‑of‑sample AUC versus P&L. (github.com)