import csv
from pathlib import Path
from collections import defaultdict

base = next((b for b in [
    Path(r"C:\Users\Administrator\OneDrive\fx_macro_intraday"),
    Path(r"C:\Users\paul_\OneDrive\fx_macro_intraday")] if b.exists()), None)

eu_p = base / "data" / "processed" / "trades" / "trades_real_costs.csv"
uj_p = base / "data" / "processed" / "usdjpy_trades_real_costs.csv"

def check(path, pnl_col, label):
    print(f"\n{label}")
    print("="*60)
    by_reason_mult = defaultdict(list)
    with open(path, newline="", encoding="utf-8-sig") as f:
        for r in csv.DictReader(f):
            try:
                pnl=float(r[pnl_col]); reason=r.get("exit_reason","?")
                mult=float(r.get("mult",1) or 1)
            except (ValueError,KeyError): continue
            by_reason_mult[(reason,mult)].append(pnl)
    # For each exit reason at base mult (1.0), show avg pnl -> implies TP/SL %
    print(f"  {'exit_reason':<18}{'mult':>5}{'n':>6}{'avg_pnl':>12}")
    for (reason,mult) in sorted(by_reason_mult.keys()):
        vals=by_reason_mult[(reason,mult)]
        avg=sum(vals)/len(vals)
        print(f"  {reason:<18}{mult:>5}{len(vals):>6}{avg:>12.2f}")
    # Infer TP% and SL% from base-mult tp/stop avg, given notional 300k
    # EU: pnl% = pnl / 300000 ; *100 for percent
    NOTIONAL=300_000
    tp_base=by_reason_mult.get(("tp",1.0),[])
    sl_base=by_reason_mult.get(("stop",1.0),[])
    if tp_base:
        tp_pct=(sum(tp_base)/len(tp_base))/NOTIONAL*100
        print(f"\n  Implied TP move (base mult): ~{tp_pct:.3f}% of notional "
              f"(gross, before costs added back)")
    if sl_base:
        sl_pct=(sum(sl_base)/len(sl_base))/NOTIONAL*100
        print(f"  Implied SL move (base mult): ~{sl_pct:.3f}% of notional")

check(eu_p, "dollar_pnl_real", "EURUSD  (your live: TP 0.20%, SL 0.25%)")
check(uj_p, "pnl_real", "USDJPY  (your live: TP 0.70%, SL 0.40%)")
