# Option sims (primary trail50-spot, secondary E1) + spot proxy 2022-26 + random same-time baseline (primary exit, REAL). import sys,time; sys.path.insert(0,'/workspace/research/popular-strategies/scripts'); from plib import * t0=time.time(); S,PC=load_spot(); opt(); X=pd.read_csv(f'{L}/results/signals_all.csv',parse_dates=['date']) rows=[]; spx=[] for r in X.itertuples(): a=S[r.date] spx.append(dict(cand=r.cand,date=r.date,hm=i2hm(r.m),dir=r.dir,R=r.R,spot_pts=spot_proxy_trail(a,r.m,r.dir,r.entry,r.stop,r.R),spot_pts_E1=spot_proxy(a,r.m,r.dir,r.entry,r.stop,r.R,'E1'))) 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=[] for r in X[X.date>=pd.Timestamp('2024-10-21')].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 z=sim_trail(a,d,r.m,r.dir,en,en-r.dir*r.R,r.R,'spot') if z and z['status']=='ok': rr.append(dict(cand=r.cand,src_date=r.date,rep=k,date=d,split=sp,pnl=z['pnl'])) pd.DataFrame(rr).to_csv(f'{L}/results/trades_random.csv',index=False); print('random',len(rr),round(time.time()-t0))