import json
import sys

def load_json(filepath):
    with open(filepath, 'r') as f:
        return json.load(f)

def find_candidate(batch_data, candidate_id):
    for result in batch_data['items']:
        if result['candidate_id'] == candidate_id:
            return result
    return None

def analyze_candidates():
    print("Loading OHLCV data...")
    ohlcv_h4 = load_json('/home/aryy/.hermes/profiles/finance/backtests/xauusd_2026/hybrid/data/ohlcv_H4.json')
    ohlcv_m30 = load_json('/home/aryy/.hermes/profiles/finance/backtests/xauusd_2026/hybrid/data/ohlcv_M30.json')
    ohlcv_m5 = load_json('/home/aryy/.hermes/profiles/finance/backtests/xauusd_2026/hybrid/data/ohlcv_M5.json')
    ohlcv_m15 = load_json('/home/aryy/.hermes/profiles/finance/backtests/xauusd_2026/hybrid/data/ohlcv_M15.json')

    print("\nLoading Batch 020 control reviews...")
    batch_20 = load_json('/home/aryy/.hermes/profiles/finance/backtests/xauusd_2026/hybrid/reviews/manual_replay_batch_020_control_review.json')

    candidates = [
        ("candidate_2026-04-01T03-15-00Z_short_liquidity_sweep_reversal", "2026-04-01T03:15:00Z"),
        ("candidate_2026-04-01T07-15-00Z_long_liquidity_sweep_reversal", "2026-04-01T07:15:00Z"),
        ("candidate_2026-04-01T08-45-00Z_long_liquidity_sweep_reversal", "2026-04-01T08:45:00Z")
    ]

    for cid, ts in candidates:
        print(f"\n--- {cid} ---")
        item = find_candidate(batch_20, cid)
        if item:
             print(f"Control Status: {item['control_status']}")
             print(f"Control Notes: {item.get('rationale', 'None')}")
        
        # M30 Context
        print("\nM30 Data (prior to candidate):")
        m30_bars = [b for b in ohlcv_m30['bars'] if str(b['time']) <= ts][-5:]
        for b in m30_bars:
             print(f"  {b['time']} | O: {b['open']} | H: {b['high']} | L: {b['low']} | C: {b['close']}")
        
        # M15 Data
        print("\nM15 Data (at candidate):")
        m15_bars = [b for b in ohlcv_m15['bars'] if str(b['time']) >= ts][:3]
        for b in m15_bars:
             print(f"  {b['time']} | O: {b['open']} | H: {b['high']} | L: {b['low']} | C: {b['close']}")

        # M5 Data (Entry context)
        print("\nM5 Data (around candidate):")
        m5_bars = [b for b in ohlcv_m5['bars'] if str(b['time']) >= ts][:6]
        for b in m5_bars:
             print(f"  {b['time']} | O: {b['open']} | H: {b['high']} | L: {b['low']} | C: {b['close']}")

if __name__ == '__main__':
    analyze_candidates()
