import json, collections

with open(r'C:\kalshibot\Automated\trade_analytics.json', encoding='utf-8') as f:
    data = json.load(f)

exits = [t for t in data if t.get('exit_price')]

wins  = [t for t in exits if t['pnl'] > 0]
losses = [t for t in exits if t['pnl'] <= 0]

print(f"Total closed trades: {len(exits)}")
print(f"Wins: {len(wins)} ({100*len(wins)/len(exits):.1f}%) | Losses: {len(losses)} ({100*len(losses)/len(exits):.1f}%)")
print(f"Total P&L: {sum(t['pnl'] for t in exits):+.2f}")
print(f"Avg win: +{sum(t['pnl'] for t in wins)/len(wins):.2f} | Avg loss: {sum(t['pnl'] for t in losses)/len(losses):.2f}")

print('\n--- LOSS REASONS ---')
reasons = collections.Counter(t.get('exit_reason','?') for t in losses)
for r, n in reasons.most_common(): print(f"  {r}: {n}")

print('\n--- WIN REASONS ---')
wreasons = collections.Counter(t.get('exit_reason','?') for t in wins)
for r, n in wreasons.most_common(): print(f"  {r}: {n}")

print('\n--- LOSSES BY ENTRY PRICE BUCKET ---')
buckets = {'0.00-0.35':[], '0.35-0.55':[], '0.55-0.70':[], '0.70-0.85':[], '0.85+': []}
for t in losses:
    ep = t['entry_price']
    if   ep < 0.35: buckets['0.00-0.35'].append(t['pnl'])
    elif ep < 0.55: buckets['0.35-0.55'].append(t['pnl'])
    elif ep < 0.70: buckets['0.55-0.70'].append(t['pnl'])
    elif ep < 0.85: buckets['0.70-0.85'].append(t['pnl'])
    else:           buckets['0.85+'].append(t['pnl'])
for b, pnls in buckets.items():
    if pnls: print(f"  {b}: {len(pnls)} losses, total={sum(pnls):.2f}, avg={sum(pnls)/len(pnls):.2f}")

print('\n--- DUPLICATE TICKER ENTRIES (same market, multiple positions) ---')
open_entries = [t for t in data if not t.get('exit_price')]
ticker_counts = collections.Counter(t['ticker'] for t in open_entries)
multi = {k: v for k, v in ticker_counts.items() if v > 1}
print(f"  Tickers with >1 open position at same time: {len(multi)}")
# Also check in exits
exit_tickers = collections.Counter(t['ticker'] for t in exits)
print(f"  Tickers with most closed trades: {exit_tickers.most_common(5)}")

print('\n--- SCORE BREAKDOWN FOR LOSSES ---')
exp_only = [t for t in losses if t.get('exp_score',0) > 0 and t.get('mom_score',0) == 0 and t.get('lag_score',0) == 0]
mom_only = [t for t in losses if t.get('mom_score',0) > 0 and t.get('exp_score',0) == 0]
exp_mom  = [t for t in losses if t.get('exp_score',0) > 0 and t.get('mom_score',0) > 0]
print(f"  EXP-only losses: {len(exp_only)} | avg pnl: {sum(t['pnl'] for t in exp_only)/max(1,len(exp_only)):.2f}")
print(f"  EXP+MOM losses:  {len(exp_mom)}  | avg pnl: {sum(t['pnl'] for t in exp_mom)/max(1,len(exp_mom)):.2f}")
print(f"  MOM-only losses: {len(mom_only)} | avg pnl: {sum(t['pnl'] for t in mom_only)/max(1,len(mom_only)):.2f}")

print('\n--- HIGH ENTRY PRICE TRADES (>0.80) ---')
high_entry = [t for t in exits if t['entry_price'] > 0.80]
he_wins = [t for t in high_entry if t['pnl'] > 0]
he_loss = [t for t in high_entry if t['pnl'] <= 0]
print(f"  {len(high_entry)} trades above 0.80 entry | wins={len(he_wins)} losses={len(he_loss)}")
print(f"  P&L: {sum(t['pnl'] for t in high_entry):+.2f}")
