import csv
from pathlib import Path
from collections import defaultdict

# UJ file has a 'mult' column and 'pnl_real' — check if pnl scales with mult
candidates = [
    Path(r"C:\Users\Administrator\OneDrive\fx_macro_intraday\data\processed\usdjpy_trades_real_costs.csv"),
    Path(r"C:\Users\paul_\OneDrive\fx_macro_intraday\data\processed\usdjpy_trades_real_costs.csv"),
]
p = next((c for c in candidates if c.exists()), None)
if p is None:
    raise SystemExit("UJ file not found")

with open(p, newline="", encoding="utf-8") as f:
    rows = list(csv.DictReader(f))

print(f"UJ file: {len(rows)} trades")
print("Columns:", list(rows[0].keys()))
print()

# Group winning TP trades by mult tier. If pnl includes mult, the average
# winning pnl should scale ~linearly with mult (1.5x tier ~1.5x the pnl).
# If pnl is base-size only, winning pnl should be ~same across tiers.
by_mult_win = defaultdict(list)
by_mult_all = defaultdict(list)
for r in rows:
    try:
        mult = float(r["mult"])
        pnl = float(r["pnl_real"])
        reason = r.get("exit_reason", "")
    except (ValueError, KeyError):
        continue
    by_mult_all[mult].append(pnl)
    if reason == "tp" and pnl > 0:
        by_mult_win[mult].append(pnl)

print("Average WINNING (tp) pnl_real by mult tier:")
print("(If pnl includes the multiplier, these scale ~1 : 1.5 : 2)")
base = None
for mult in sorted(by_mult_win.keys()):
    vals = by_mult_win[mult]
    avg = sum(vals)/len(vals) if vals else 0
    if base is None and mult == 1.0:
        base = avg
    ratio = (avg / base) if base else float('nan')
    print(f"  mult={mult}: n={len(vals):>4}  avg_tp_pnl={avg:>9.2f}  ratio_to_1x={ratio:.2f}")

print()
print("Average ALL pnl_real by mult tier:")
for mult in sorted(by_mult_all.keys()):
    vals = by_mult_all[mult]
    avg = sum(vals)/len(vals) if vals else 0
    print(f"  mult={mult}: n={len(vals):>4}  avg_pnl={avg:>9.2f}")

print()
print("INTERPRETATION:")
print("  If ratio_to_1x is ~1.5 and ~2.0 for those tiers -> pnl INCLUDES mult")
print("  If ratio_to_1x stays ~1.0 across tiers          -> pnl is BASE size,")
print("                                                      mult applied separately")
