# Simulate buyer trades for every (cross event x signal X x instrument x exit). Variants are later filters on events. import numpy as np,pandas as pd,sys,os sys.path.insert(0,os.path.dirname(__file__)); from cwlib import * DD=load(); E=pd.read_pickle(f'{C}/results/events.pkl'); out=[] for r in E.itertuples(): D=DD[r.date]; sg=1 if r.side=='call' else -1 for X in (0,1,2,3): s=r.i if X==0 else getattr(r,f's_X{X}') if s<0: continue atm=float(round(D['c'][s]/50)*50) for ins,Ko in (('ATM',atm),('wall',r.K)): for ex in EXITS: z=trade(r.date,D,s,sg,Ko,r.K,ex) out.append(dict(ev=r.Index,X=X,instr=ins,exit=ex,s=s,hm_sig=HM[s],Kopt=Ko,**z)) T=pd.DataFrame(out); T.to_pickle(f'{C}/results/trades_all.pkl') print(T.status.value_counts()); print(T[T.status=='ok'].groupby(['X','instr','exit']).pnl.agg(['size','mean']).round(2))