"""Quick diagnostic: compare production exp_shared.run_backtest vs replicate_181 loop.""" import sys from pathlib import Path import numpy as np import pandas as pd import time, gc ROOT = Path(r"C:\Users\Lenovo\Documents\- DOLPHIN NG HD HCM TSF Predict") sys.path.insert(0, str(ROOT / 'nautilus_dolphin')) sys.path.insert(0, str(ROOT / 'nautilus_dolphin' / 'dvae')) import exp_shared from nautilus_dolphin.nautilus.proxy_boost_engine import create_d_liq_engine from nautilus_dolphin.nautilus.adaptive_circuit_breaker import AdaptiveCircuitBreaker print("JIT...") exp_shared.ensure_jit() # ── TEST A: production exp_shared.run_backtest (all agent changes) ───────── print("\n=== TEST A: exp_shared.run_backtest (production) ===") t0 = time.time() r = exp_shared.run_backtest(lambda kw: create_d_liq_engine(**kw), "prod_run", extra_kwargs={'sp_maker_entry_rate': 1.0, 'sp_maker_exit_rate': 1.0, 'use_sp_slippage': False}) print(f" ROI={r['roi']:+.2f}% T={r['trades']} DD={r['dd']:.2f}% t={time.time()-t0:.0f}s") # ── TEST B: replicate_181_gold.py style (NO float32, NO set_esoteric_hazard_multiplier) ───────── print("\n=== TEST B: replicate_181 style (no float32, no hazard call) ===") from exp_shared import load_data, ENGINE_KWARGS, META_COLS d = load_data() kw2 = ENGINE_KWARGS.copy() kw2.update({'sp_maker_entry_rate': 1.0, 'sp_maker_exit_rate': 1.0, 'use_sp_slippage': False}) acb = AdaptiveCircuitBreaker() acb.preload_w750(d['date_strings']) eng2 = create_d_liq_engine(**kw2) eng2.set_ob_engine(d['ob_eng']) eng2.set_acb(acb) # NOTE: no set_esoteric_hazard_multiplier call t1 = time.time() daily_caps = [] for pf in d['parquet_files']: ds = pf.stem df = pd.read_parquet(pf) # float64, no casting acols = [c for c in df.columns if c not in META_COLS] bp = df['BTCUSDT'].values if 'BTCUSDT' in df.columns else None dvol = np.full(len(df), np.nan) if bp is not None: diffs = np.zeros(len(bp), dtype=np.float64) diffs[1:] = np.diff(bp) / bp[:-1] for j in range(50, len(bp)): dvol[j] = np.std(diffs[j-50:j]) vol_ok = np.where(np.isfinite(dvol), dvol > d['vol_p60'], False) eng2.process_day(ds, df, acols, vol_regime_ok=vol_ok) daily_caps.append(eng2.capital) del df; gc.collect() tr2 = eng2.trade_history roi2 = (eng2.capital - 25000.0) / 25000.0 * 100.0 import math daily_pnls = [daily_caps[0]-25000.0] + [daily_caps[i]-daily_caps[i-1] for i in range(1,len(daily_caps))] peak, max_dd = 25000.0, 0.0 for cap in daily_caps: peak = max(peak, cap); max_dd = max(max_dd, (peak-cap)/peak*100.0) print(f" ROI={roi2:+.2f}% T={len(tr2)} DD={max_dd:.2f}% t={time.time()-t1:.0f}s") print("\nDONE")