trading-platform-database/ddl/schemas/ml/tables/01-models.sql

66 lines
2.3 KiB
SQL

-- =====================================================
-- ML SCHEMA - MODELS TABLE
-- =====================================================
-- Description: ML models registry
-- Schema: ml
-- Author: Database Agent
-- Date: 2025-12-06
-- =====================================================
CREATE TABLE ml.models (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
-- Identificación
name VARCHAR(100) NOT NULL UNIQUE,
display_name VARCHAR(200) NOT NULL,
description TEXT,
-- Tipo y framework
model_type ml.model_type NOT NULL,
framework ml.framework NOT NULL,
-- Categoría
category VARCHAR(50) NOT NULL, -- sentiment, technical, fundamental, hybrid
-- Alcance
applies_to_symbols VARCHAR(20)[] DEFAULT '{}', -- ['BTCUSDT', 'ETHUSDT'] o [] para todos
applies_to_timeframes VARCHAR(10)[] DEFAULT '{}', -- ['1h', '4h', '1d'] o [] para todos
-- Estado
status ml.model_status DEFAULT 'development',
-- Versión actual en producción
current_version_id UUID,
-- Metadata
owner VARCHAR(100) NOT NULL,
repository_url VARCHAR(500),
documentation_url VARCHAR(500),
-- Métricas agregadas (de todas las versiones)
total_predictions INTEGER DEFAULT 0,
total_correct_predictions INTEGER DEFAULT 0,
overall_accuracy DECIMAL(5,4),
-- Fechas
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
deployed_at TIMESTAMPTZ,
deprecated_at TIMESTAMPTZ
);
-- Índices
CREATE INDEX idx_models_name ON ml.models(name);
CREATE INDEX idx_models_status ON ml.models(status);
CREATE INDEX idx_models_type ON ml.models(model_type);
CREATE INDEX idx_models_category ON ml.models(category);
CREATE INDEX idx_models_production ON ml.models(status) WHERE status = 'production';
-- Comentarios
COMMENT ON TABLE ml.models IS 'Registry of ML models for trading signals';
COMMENT ON COLUMN ml.models.name IS 'Unique technical name (e.g., sentiment_analyzer_v1)';
COMMENT ON COLUMN ml.models.applies_to_symbols IS 'Symbols this model can analyze. Empty array = all symbols';
COMMENT ON COLUMN ml.models.applies_to_timeframes IS 'Timeframes this model supports. Empty array = all timeframes';
COMMENT ON COLUMN ml.models.current_version_id IS 'Reference to current production version';
COMMENT ON COLUMN ml.models.overall_accuracy IS 'Aggregated accuracy across all versions and predictions';