import json, math, statistics as S, collections
from stages import stage_series
exec(open('it2.py').read().split("V={")[0])
# zone test: forward 14d by stage, z bucket, drawdown bucket
Z=collections.defaultdict(lambda: collections.defaultdict(list))
for k in keys:
    ds=[d for d,_ in D[k]['line']]; L=[v for _,v in D[k]['line']]; st=stage_series(L)
    for i in range(30,len(L)-14):
        s,inf=st[i]; f=L[i+14]/L[i]-1; f30=L[min(i+30,len(L)-1)]/L[i]-1
        per='H1' if ds[i]<'2024-09-01' else 'H2'
        z=inf['z']; dd=inf['dd']
        zb='z<=-2' if z<=-2 else 'z -2..-1' if z<=-1 else 'z -1..1' if z<1 else 'z 1..2' if z<2 else 'z>=2'
        db='dd 0-20' if dd>-0.2 else 'dd 20-40' if dd>-0.4 else 'dd 40-60' if dd>-0.6 else 'dd 60-80' if dd>-0.8 else 'dd 80+'
        for key in (('stage',s),('z',zb),('dd90',db),('base','all')):
            Z[key][per].append(f); Z[key]['all'].append(f)
print(f"{'bucket':26s} | {'all: n, med14, up%':22s} | {'H1':22s} | {'H2':22s}")
for key in sorted(Z):
    row=[]
    for per in ('all','H1','H2'):
        xs=Z[key][per]
        row.append(f"{len(xs):5d} {S.median(xs)*100:+5.1f}% {sum(1 for x in xs if x>0)/len(xs)*100:3.0f}%" if xs else "-")
    print(f"{key[0]+' '+key[1]:26s} | "+" | ".join(row))
