import csv
from pathlib import Path
from datetime import datetime
from collections import defaultdict

candidates = [
    Path(r"C:\Users\Administrator\OneDrive\fx_macro_intraday\data\processed\trades\trades_real_costs.csv"),
    Path(r"C:\Users\paul_\OneDrive\fx_macro_intraday\data\processed\trades\trades_real_costs.csv"),
]
p = next((c for c in candidates if c.exists()), None)
if p is None:
    raise SystemExit("EU backtest not found")

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

# Earliest exit_time overall
def parse(r):
    try:
        return datetime.strptime(r["exit_time"][:19], "%Y-%m-%d %H:%M:%S")
    except (ValueError, KeyError):
        return None

dts = [parse(r) for r in rows]
dts = [d for d in dts if d is not None]
print(f"EU backtest total trades: {len(dts)}")
print(f"Earliest trade exit: {min(dts)}")
print(f"Latest trade exit:   {max(dts)}")
print()

# Count trades per month in 2005
monthly_2005 = defaultdict(int)
pnl_2005 = defaultdict(float)
for r in rows:
    d = parse(r)
    if d and d.year == 2005:
        monthly_2005[d.month] += 1
        try:
            pnl_2005[d.month] += float(r["dollar_pnl_real"])
        except (ValueError, KeyError):
            pass

print("EU 2005 trades by month:")
for m in range(1, 13):
    name = datetime(2005, m, 1).strftime("%b")
    cnt = monthly_2005.get(m, 0)
    pnl = pnl_2005.get(m, 0.0)
    marker = "  <-- NO TRADES" if cnt == 0 else ""
    print(f"  {name} 2005: {cnt} trades, P&L {pnl:>10.2f}{marker}")
