CREATE TABLE IF NOT EXISTS signals ( id INTEGER PRIMARY KEY AUTOINCREMENT, coin TEXT NOT NULL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, technical_score REAL DEFAULT 50, news_score REAL DEFAULT 50, social_score REAL DEFAULT 50, ai_score REAL DEFAULT 50, composite_score REAL DEFAULT 50, signal TEXT DEFAULT 'HOLD' ); CREATE TABLE IF NOT EXISTS trades ( id INTEGER PRIMARY KEY AUTOINCREMENT, coin TEXT NOT NULL, side TEXT NOT NULL, price REAL NOT NULL, quantity REAL NOT NULL, amount_usd REAL NOT NULL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, reason TEXT ); CREATE TABLE IF NOT EXISTS positions ( id INTEGER PRIMARY KEY AUTOINCREMENT, coin TEXT NOT NULL, entry_price REAL NOT NULL, quantity REAL NOT NULL, invested_usd REAL NOT NULL, status TEXT DEFAULT 'OPEN', opened_at DATETIME DEFAULT CURRENT_TIMESTAMP, closed_at DATETIME ); CREATE TABLE IF NOT EXISTS portfolio ( id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, total_value REAL NOT NULL, cash REAL NOT NULL, pnl REAL NOT NULL, pnl_pct REAL NOT NULL ); CREATE TABLE IF NOT EXISTS settings ( key TEXT PRIMARY KEY, value TEXT NOT NULL ); CREATE INDEX IF NOT EXISTS idx_signals_coin_ts ON signals(coin, timestamp); CREATE INDEX IF NOT EXISTS idx_positions_status ON positions(status); CREATE INDEX IF NOT EXISTS idx_trades_coin ON trades(coin);