import sys, json, collections; sys.path.insert(0, "/root/fwa1")
C = json.load(open("/root/fwa1/coins2.json"))
PL = list(C[0]["ret"].keys())
TD = ["2026-09-30", "2026-10-01", "2026-10-02", "2026-10-03", "2026-10-04"]
crews = collections.Counter(x["crew"] for x in C if x["day"] in TD and x["crew"])
m = lambda v: sum(v) / len(v) if v else float("nan")
print("crew | test n | hit3 | med pull s | half3_10 wf | own exit wf | latest pick | fit<=1Oct best -> test 2-4Oct | all plans test 2-4Oct")
for cr, n in crews.most_common(12):
    T = [x for x in C if x["crew"] == cr and x["day"] in TD]
    pulls = sorted(x["pull_s"] for x in T if x["pull_s"] is not None)
    fit = [x for x in C if x["crew"] == cr and x["day"] <= "2026-10-01"]
    te = [x for x in C if x["crew"] == cr and x["day"] >= "2026-10-02"]
    bf = max(PL, key=lambda k: m([x["ret"][k] for x in fit])) if len(fit) >= 5 else None
    allc = [x for x in C if x["crew"] == cr]
    latest = max(PL, key=lambda k: m([x["ret"][k] for x in allc]))
    plans = " ".join("%s:%+.0f" % (k, 100 * m([x["ret"][k] for x in te])) for k in PL) if te else ""
    print(cr, "|", n, "|", "%d%%" % (100 * m([x["hit3"] for x in T])), "|", pulls[len(pulls) // 2] if pulls else None, "|",
          "%+.0f%%" % (100 * m([x["ret"]["half3_10"] for x in T])), "|", "%+.0f%%" % (100 * m([x["ret"][x["bx"]] for x in T])), "|",
          latest, "|", bf, "fit %+.0f%% (%d) -> test %+.0f%% (%d)" % (100 * m([x["ret"][bf] for x in fit]) if bf else 0, len(fit), 100 * m([x["ret"][bf] for x in te]) if bf and te else 0, len(te)), "|", plans)
# 0x0ec66d31 detail
cr = "0x0ec66d31aab7e387b2f4cda075e39f7a6a0f541b"
T = [x for x in C if x["crew"] == cr]
print("0ec6 all", len(T), "hit3", sum(x["hit3"] for x in T), {k: round(100 * m([x["ret"][k] for x in T])) for k in PL})
