{"required_columns":["entry_ts","venue","side","size_usd"],"strongly_recommended":["entry_price","exit_price or settle_price","net_usd or exit_price","ticker","family","exit_ts","cohort"],"columns_that_unlock_detectors_and_rulers":{"feature":"your entry-time signal value -> enables the WALK-FORWARD verdict (without it there is no rule to freeze on TRAIN)","first_seen":"when the record was created -> proves the record existed before the outcome (D1). Without it, 'forward' is a claim, not evidence.","exit_mid":"the contemporaneous mid at exit -> mark-tautology detector (D6)","close_fair":"de-vigged sharp CLOSING line -> the CLV ruler for predictions","arrival_vwap / arrival_mid":"-> execution slippage + IC ruler for equities/spot","entry_iv + realized_vol":"-> variance-premium ruler for options","basis / funding_rate":"-> carry ruler for perps/futures","fee_usd":"your own fee -> compared against the fee schedule; we always re-net","is_maker":"maker vs taker fee branch","exit_reason":"'markout'/'open' rows are detected and excluded from realised P&L (D7)"},"families_and_rulers":{"predictions":"CLV_DIRECTION_CORRECTED","binary":"CLV_DIRECTION_CORRECTED","event":"CLV_DIRECTION_CORRECTED","sports":"CLV_DIRECTION_CORRECTED","equities":"VWAP_SLIPPAGE_AND_IC","equity":"VWAP_SLIPPAGE_AND_IC","crypto_spot":"VWAP_SLIPPAGE_AND_IC","spot":"VWAP_SLIPPAGE_AND_IC","gold":"VWAP_SLIPPAGE_AND_IC","options":"IV_VS_REALIZED","crypto_perp":"BASIS_AND_FUNDING_CARRY","perp":"BASIS_AND_FUNDING_CARRY","futures":"BASIS_AND_FUNDING_CARRY"},"detectors":["D1_LOOKAHEAD","D2_ORACLE_LAG","D3_CROSSED_BOOK","D4_SIGNED_PNL_DIRECTION","D5_HINDSIGHT_SELECTION","D6_MARK_TAUTOLOGY","D7_UNREALIZED_AS_PNL","D8_ZERO_FEE","D9_DUPLICATE_LEGS","D10_DEGENERATE_PIN","D11_SPAN_ADEQUACY"],"lab_reports":{"POST /fidelity/leaderboard/audit":{"tier":"starter","body":{"entries":"[{name, returns:[...]} OR {name, sharpe, n_obs}, optional returns_period2 for the F4131 winner-cohort check]"}},"POST /fidelity/breadth":{"tier":"starter","body":{"returns":"{strategy_name: [r1, r2, ...], ...}"}},"POST /fidelity/implied-distribution":{"tier":"pro","body":{"strikes":"[{strike or ticker, mid or bid/ask (or *_cents)}, ...]","settle_price":"optional"}},"POST /fidelity/implied-distribution/calibration":{"tier":"pro","body":{"events":"[{strikes:[...], settle_price}, ...] (>=20)"}},"POST /fidelity/doob":{"tier":"pro","body":{"trades":"[{entry_ts, entry_price, exit_price, side, mark_<horizon> (optional), feature (optional)}, ...]"}},"POST /fidelity/vrp":{"tier":"pro","body":{"rows":"[{date, iv_current, hv_current, iv_week_ago (optional), hv_week_ago (optional)}, ...]","lag_days":7}},"POST /fidelity/loop-engineering-5gate":{"tier":"starter","body":{"returns":"[...] (optional, + trading_frequency) OR precomputed sharpe/max_dd/nw_tstat","oos_months":"optional","sector_expo":"optional (0-1 fraction)"},"note":"Sharpe>1.5, MDD<10%, NW-HAC t>2.0, OOS>=24mo, sector<30% -- the popular 'loop engineering' 5-gate framing, WITHOUT multiple-testing correction. Use the Leaderboard Auditor instead when comparing >1 candidate."},"POST /fidelity/compute-breakeven":{"tier":"starter","body":{"compute_cost_per_day":"required, USD/day","capital":"optional, USD","expected_annual_return":"optional, fraction","trading_days_per_year":"optional, default 365"},"note":"Inputs-only calculator, no advice returned."},"POST /fidelity/pairs-audit":{"tier":"pro","body":{"timestamps":"[...] + series:{SYM1:[...],SYM2:[...]} (or `prices` for >=2 symbols, screens all pairs) OR `trades`: an already-simulated backtest table","cost_bps_roundtrip":"optional round-trip cost in bps of one leg's stake; omitted -> gross-only, clearly flagged","entry_z_grid":"optional, default [1.5,2.0,2.5,3.0], swept on TRAIN only","customer_max_hold_hours":"optional, flags when the measured half-life exceeds your stated max hold"},"note":"3-segment PIT protocol (formation->train->test, +1 day gap at each boundary), Engle-Granger cointegration, OLS hedge ratio, half-life, BH-FDR across pairs tested + Newey-West HAC t-stat verdict. Reuses the F4349 faithful-test methodology, generalised to your own data."},"POST /fidelity/nautilus-import":{"tier":"pro","body":{"fills":"[...] the row-list export of NautilusTrader's own Trader.generate_order_fills_report() (DataFrame.to_dict('records') or CSV->JSON)","split_date":"optional ISO date for the D5 hindsight-selection detector"},"note":"Parses your NautilusTrader export (does not import or execute any NautilusTrader code), runs the same 11 contamination detectors every uploaded-legs run gets, and compares NautilusTrader's own fill assumption against our venue-fill calibration reference."},"POST /fidelity/options-iv-surface":{"tier":"pro","body":{"spot":"required","snapshot_date":"optional ISO date, default today","rate":"optional, default 0.0","dividend_yield":"optional, default 0.0","contracts":"[{strike, expiry, option_type, mid (or bid+ask), exercise:'european'|'american'}, ...]"},"note":"QuantLib-Python Black-Scholes-Merton implied vol + Greeks per contract, plus a term-structure and skew summary. Not a fitted SVI/SABR surface."},"POST /fidelity/addon/teaser":{"tier":"free","body":{"legs":"[{venue, family, entry_price, size_usd, qty, net_usd}, ...]"},"note":"FREE: realistic-fill re-pricing delta for ONE family only (the first one present in your legs). Upgrade to Starter+ for every family plus IC-by-day, multi-cell Kelly and capital lock."},"POST /fidelity/addon/report":{"tier":"starter","body":{"legs":"optional, [{venue, family, side, entry_price, size_usd, qty, net_usd, leverage, margin_init, short_margin, stake, mult, hold_seconds}, ...] -> fill-model stress + capital lock","signal_rows":"optional, [{day, score, outcome}, ...] (your own entry-time signal + realised outcome, one row per leg) -> IC-by-day + cluster-robust n_eff","cells":"optional, {cell_name: [daily_return, ...]} (>=2 cells, equal length, aligned by day) -> LW multi-cell Kelly vs single-cell","kelly_frac":"optional, default 0.25","cluster_key":"optional, default 'day'"},"note":"Fidelity Add-on Pack. Any subset of legs/signal_rows/cells may be omitted -- that section reports UNKNOWN and the rest still runs. fill_model_stress reprices against OUR measured per-family taker-slip params (tick*p_through); everything else is computed only from what you supply."}},"terminal":{"GET /terminal":{"tier":"pro","note":"Perspective/FINOS live pivot-table view over your saved reports (?token=<bearer JWT> or an Authorization header)."}}}