# Run candidate trades (all exits x cost scenarios) + spot proxy; random same-time baseline (REAL cost). import sys,time; sys.path.insert(0,'/workspace/research/buyer-method-audit/scripts'); from lib import * t0=time.time(); S,PC=load_spot(); X=pd.read_csv('results/signals_all.csv',parse_dates=['date']); opt() EX=['E0','E1','E2','E3','E4']; rows=[]; px=[] for r in X.itertuples(): a=S[r.date] for ex in EX: px.append(dict(cand=r.cand,date=r.date,ex=ex,spot_pts=spot_proxy(a,r.m,r.dir,r.entry,r.stop,r.R,ex))) if r.date=pd.Timestamp('2024-10-21') and nexp(d) is not None] pool={s:[d for d in od if split(d)==s] for s in ('train','test')}; rr=[] X2=X[X.date>=pd.Timestamp('2024-10-21')] for r in X2.itertuples(): sp=split(r.date) for k in range(30): d=pool[sp][rng.integers(len(pool[sp]))]; a=S[d]; en=a[3,r.m] if np.isnan(en): continue st=en-r.dir*r.R for ex in EX: z=sim(a,d,r.m,r.dir,en,st,r.R,ex,'REAL') if z and z['status']=='ok': rr.append(dict(cand=r.cand,src_date=r.date,rep=k,date=d,ex=ex,split=sp,pnl=z['pnl'],gross=z['gross'])) RR=pd.DataFrame(rr); RR.to_csv('results/trades_random.csv',index=False); print('random sims',len(RR),round(time.time()-t0))