| -- schema.sql | |
| -- Run this script to initialize the TimescaleDB schema | |
| -- First, ensure the TimescaleDB extension is enabled (requires superuser) | |
| -- CREATE EXTENSION IF NOT EXISTS timescaledb; | |
| CREATE TABLE IF NOT EXISTS tick_data ( | |
| timestamp TIMESTAMPTZ NOT NULL, | |
| market_id VARCHAR(100), | |
| platform VARCHAR(20), -- 'polymarket' or 'kalshi' | |
| event_name TEXT, | |
| outcome VARCHAR(50), -- 'YES', 'NO', or other specific outcomes | |
| bid_price DECIMAL(10,8), | |
| bid_size DECIMAL(15,2), | |
| ask_price DECIMAL(10,8), | |
| ask_size DECIMAL(15,2), | |
| mid_price DECIMAL(10,8), | |
| volume_24h DECIMAL(15,2), | |
| CONSTRAINT pk_tick PRIMARY KEY (timestamp, market_id, platform, outcome) | |
| ); | |
| -- Convert tick_data to a hypertable if TimescaleDB is installed | |
| -- SELECT create_hypertable('tick_data', 'timestamp', if_not_exists => TRUE); | |
| CREATE TABLE IF NOT EXISTS trades ( | |
| trade_id SERIAL PRIMARY KEY, | |
| timestamp TIMESTAMPTZ NOT NULL, | |
| strategy VARCHAR(50), | |
| market_id VARCHAR(100), | |
| platform VARCHAR(20), | |
| side VARCHAR(10), | |
| price DECIMAL(10,8), | |
| size DECIMAL(15,2), | |
| fees DECIMAL(15,2), | |
| pnl DECIMAL(15,2), | |
| execution_latency_ms INTEGER | |
| ); | |