#!/usr/bin/env python3
"""
Check signal freshness and data age.
"""

import json
from pathlib import Path
from datetime import datetime

# Load signals
signals_file = Path("/home/ubuntu/.hermes/workspace/projects/ORDER_FLOW_GRAPH/data/signals_binance.json")
with open(signals_file, 'r') as f:
    data = json.load(f)

signals = data['signals']
metadata = data['metadata']

print("="*80)
print("SIGNAL FRESHNESS CHECK")
print("="*80)

# Check when signals were generated
generated_at = metadata['generated_at']
generated_time = datetime.fromisoformat(generated_at)

print(f"\n📅 Signal Generation Time:")
print(f"  Generated: {generated_at}")
print(f"  Human time: {generated_time.strftime('%Y-%m-%d %H:%M:%S')}")

# Calculate age
now = datetime.now()
age = now - generated_time

print(f"\n⏰ Signal Age:")
print(f"  {age.days} days, {age.seconds // 3600} hours ago")

# Load graph to check data age
graph_file = Path("/home/ubuntu/.hermes/workspace/projects/ORDER_FLOW_GRAPH/data/order_flow_graph_binance.json")
with open(graph_file, 'r') as f:
    graph = json.load(f)

graph_created = graph['metadata']['created_at']
graph_time = datetime.fromisoformat(graph_created)

print(f"\n📊 Order Book Data Age:")
print(f"  Collected: {graph_created}")
print(f"  Human time: {graph_time.strftime('%Y-%m-%d %H:%M:%S')}")

# Check Binance snapshots
import sqlite3

binance_db = Path("/home/ubuntu/.hermes/workspace/projects/ORDER_FLOW_GRAPH/data/binance_order_book.db")
conn = sqlite3.connect(binance_db)
cursor = conn.cursor()

# Get snapshot timestamps
cursor.execute("""
    SELECT MIN(timestamp), MAX(timestamp), COUNT(*)
    FROM order_book_snapshots
""")

min_ts, max_ts, count = cursor.fetchone()
min_time = datetime.fromtimestamp(min_ts)
max_time = datetime.fromtimestamp(max_ts)

print(f"\n💾 Binance Order Book Snapshots:")
print(f"  Period: {min_time.strftime('%Y-%m-%d %H:%M:%S')} to {max_time.strftime('%Y-%m-%d %H:%M:%S')}")
print(f"  Total snapshots: {count}")

conn.close()

print("\n" + "="*80)
print("CONCLUSION:")
print("="*80)

if age.days >= 1:
    print(f"⚠️  WARNING: Signals are {age.days} days old!")
    print("   These are historical signals, NOT real-time.")
    print("   Do NOT trade on these signals — they are outdated.")
elif age.seconds >= 3600:
    hours = age.seconds // 3600
    print(f"⚠️  WARNING: Signals are {hours} hours old!")
    print("   Market conditions may have changed.")
    print("   Fresh data needed for trading.")
else:
    print(f"✓ Signals are recent ({age.seconds // 60} minutes old)")
    print("  Still reasonably fresh for analysis.")

print("\n" + "="*80)
print("RECOMMENDATION:")
print("="*80)
print("For LIVE trading, you need:")
print("  1. Real-time Binance order book collection")
print("  2. Run signal generation every 1-5 minutes")
print("  3. Only trade on signals from last 5-10 minutes")
print("="*80)
