import csv
from pathlib import Path
from datetime import datetime

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 pdt(s):
    s=(s or "").strip()
    for f in ("%Y-%m-%d %H:%M:%S","%Y-%m-%d %H:%M","%d/%m/%Y %H:%M"):
        try: return datetime.strptime(s[:19], f)
        except ValueError: continue
    return None

# EU hold durations
holds = []
with open(eu_p, newline="", encoding="utf-8-sig") as f:
    for r in csv.DictReader(f):
        a=pdt(r.get("entry_time")); b=pdt(r.get("exit_time"))
        if a and b:
            holds.append((b-a).total_seconds()/3600)
holds.sort()
import statistics as st
print("EU hold hours: min={:.1f} median={:.1f} mean={:.1f} max={:.1f} p95={:.1f}".format(
    holds[0], st.median(holds), st.mean(holds), holds[-1], holds[int(len(holds)*0.95)]))
print(f"  EU trades > 52h: {sum(1 for h in holds if h>52.5)}")

# EU exit_reason distribution (to understand exits)
from collections import Counter
eu_reasons = Counter()
with open(eu_p, newline="", encoding="utf-8-sig") as f:
    for r in csv.DictReader(f):
        eu_reasons[r.get("exit_reason","?")] += 1
print("EU exit reasons:", dict(eu_reasons))

uj_reasons = Counter()
with open(uj_p, newline="", encoding="utf-8-sig") as f:
    for r in csv.DictReader(f):
        uj_reasons[r.get("exit_reason","?")] += 1
print("UJ exit reasons:", dict(uj_reasons))

# Trades per calendar year (for time calibration in sim)
def year_counts(path, datecol):
    c=Counter()
    with open(path, newline="", encoding="utf-8-sig") as f:
        for r in csv.DictReader(f):
            d=pdt(r.get(datecol))
            if d: c[d.year]+=1
    return c
print("\nEU trades/yr:", dict(sorted(year_counts(eu_p,"exit_time").items())))
print("UJ trades/yr:", dict(sorted(year_counts(uj_p,"entry_time").items())))
