{"name":"app.nothingbutalpha/backtest-auditor","slug":"nothingbutalpha-backtest-auditor","title":"Backtest Auditor","description":"Automated red-team checks for trading backtests: lookahead lint, Deflated Sharpe, costs. Local.","url":"https://mcp.market/server/nothingbutalpha-backtest-auditor","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":13,"stars":null,"forks":null,"downloads_week":81,"last_push_at":null,"license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":null,"website":"https://nothingbutalpha.app/backtest-audit","version":"0.7.0","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"backtest-auditor","version":"0.7.0","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"audit_backtest","description":"One call that runs every audit that applies: check_path on the code, audit_returns on the returns, audit_trade_log on the trades, all against the benchmark if given. Returns one combined verdict, the worst of the parts: No red flags found / Some red flags / Major red flags, with reasons per part. Without a benchmark, or with code only, the best verdict is 'Some red flags'. No red flags doesn't mea","write_action":false,"price_micros":0,"input_schema":null},{"name":"audit_returns","description":"Statistical red-team of a backtest's return series: net vs gross at 0/5/10/20 bps and the break-even cost; Sharpe with Newey-West and Lo-style t-stats (autocorrelation-aware); the Deflated Sharpe Ratio (Bailey & Lopez de Prado 2014) for n_trials and the minimum track record length; stability by thirds and by year; share of PnL from the best 5% of days; max drawdown and duration; excess return, IR","write_action":false,"price_micros":0,"input_schema":null},{"name":"audit_trade_log","description":"Builds daily PnL, returns and turnover from a trade log (marked to market with your prices if given), then runs the full audit_returns review. Adds PnL concentration by ticker and heuristic survivorship hints (tickers traded before their symbol existed; no names ever leaving a multi-year universe). Heuristics are labeled as such.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_code","description":"Static review of Python/pandas strategy code for patterns that inflate backtests: negative shifts in features or signals, centered windows, backward fill, fitting before the time split, shuffled CV, signal and fill on the same bar, labels on the wrong bar, today's index constituents, yfinance caveats, intraday resample labels, global normalization, target leakage, full-sample parameter search and","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_path","description":"Read-only lint of Python strategy files on disk: the same rules as check_code, per file. Code is parsed with ast and never imported or run. Virtual environments, node_modules, .git and caches are skipped; folder symlinks are not followed; huge, binary, unreadable or undecodable files are skipped with a reason (a UTF-8 BOM is fine). Each finding has rule_id, severity, title, start_line/end_line, wh","write_action":false,"price_micros":0,"input_schema":null},{"name":"explain","description":"What a check looks for, why the problem inflates backtest results, how to fix it, and references.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":60,"grade":"C","scanned_at":"2026-10-28T05:55:15.830Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-28T05:55:15.729Z","components":{"code":{"score":20,"max":25,"notes":["21 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"backtest_auditor-0.7.0/nba_auditor/lint.py: …---- # v0.4: query/eval strings. `frame.eval(\"t * b\")`, `frame.query(\"m > 0\")` and `p…"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"backtest-auditor","version":"0.7.0","found":true,"weeklyDownloads":81,"license":"Apache-2.0","dependencyCount":5,"publishedAt":"2026-10-18T17:54:54.006609Z"}],"repo":{"found":false},"icon":{"url":"https://nothingbutalpha.app/logo-mark-512.png","source":"registry","width":512,"height":512},"presence":{"stars":null,"forks":null,"downloadsWeek":81,"license":"Apache-2.0","lastPushAt":null,"score":13}}}},"grade_history":[],"reviews":[]}