# Post-hoc robustness check (exploratory, NOT in family): NR7 prior-day for breakout strategies, spot by year and options by year. import pandas as pd R='/workspace/research/popular-strategies/results' O=pd.read_csv(f'{R}/trades_options.csv',parse_dates=['date']); O=O[(O.status=='ok')&(O.ex=='T50')] S=pd.read_csv(f'{R}/trades_spot.csv',parse_dates=['date']); L=pd.read_csv(f'{R}/regime_labels.csv',parse_dates=['date']).set_index('date') O=O.join(L.L5_NR7,on='date'); S=S.join(L.L5_NR7,on='date'); S['year']=S.date.dt.year; O['year']=O.date.dt.year b=S[S.cand.isin(['P1','P2','P3'])].groupby(['year','L5_NR7']).spot_net.agg(['size','mean']).unstack().round(2) b.columns=[f'{a}_{c}' for a,c in b.columns]; b=b.reset_index(); b.to_csv(f'{R}/nr7_breakouts_spot_by_year.csv',index=False) o=O[O.cand.isin(['P1','P2','P3'])].groupby(['year','L5_NR7']).pnl.agg(['size','mean']).unstack().round(2) o.columns=[f'{a}_{c}' for a,c in o.columns]; o=o.reset_index(); o.to_csv(f'{R}/nr7_breakouts_options_by_year.csv',index=False) print(b.to_string()); print(o.to_string())