Files
foxhunt/crates/ml/tests/fixtures/regime_detection.sql
jgrusewski 9c3d741a08 refactor: restructure repo — crates/, bin/, testing/ layout
Move 17 library crates into crates/, CLI binary into bin/fxt,
consolidate 10 test crates into testing/, split config crate
from deployment config files.

Root directory reduced from 38+ to ~17 directories.
All Cargo.toml paths and build.rs proto refs updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 11:56:00 +01:00

52 lines
2.1 KiB
SQL

-- Test Fixture: Regime Detection Tables
-- Minimal schema for orchestrator integration tests
-- Based on migration 045_wave_d_regime_tracking.sql
-- Regime States Table
CREATE TABLE IF NOT EXISTS regime_states (
id BIGSERIAL PRIMARY KEY,
symbol TEXT NOT NULL,
event_timestamp TIMESTAMPTZ NOT NULL,
regime TEXT NOT NULL CHECK (regime IN ('Normal', 'Trending', 'Ranging', 'Volatile', 'Crisis', 'Illiquid', 'Momentum')),
confidence DOUBLE PRECISION NOT NULL CHECK (confidence >= 0.0 AND confidence <= 1.0),
-- CUSUM metrics
cusum_s_plus DOUBLE PRECISION,
cusum_s_minus DOUBLE PRECISION,
-- ADX & Directional Indicators
adx DOUBLE PRECISION CHECK (adx IS NULL OR (adx >= 0.0 AND adx <= 100.0)),
-- Regime stability metrics
stability DOUBLE PRECISION CHECK (stability IS NULL OR (stability >= 0.0 AND stability <= 1.0)),
created_at TIMESTAMPTZ DEFAULT NOW(),
CONSTRAINT unique_regime_state UNIQUE (symbol, event_timestamp)
);
CREATE INDEX idx_regime_states_symbol_timestamp ON regime_states(symbol, event_timestamp DESC);
-- Regime Transitions Table
CREATE TABLE IF NOT EXISTS regime_transitions (
id BIGSERIAL PRIMARY KEY,
symbol TEXT NOT NULL,
event_timestamp TIMESTAMPTZ NOT NULL,
from_regime TEXT NOT NULL CHECK (from_regime IN ('Normal', 'Trending', 'Ranging', 'Volatile', 'Crisis', 'Illiquid', 'Momentum')),
to_regime TEXT NOT NULL CHECK (to_regime IN ('Normal', 'Trending', 'Ranging', 'Volatile', 'Crisis', 'Illiquid', 'Momentum')),
duration_bars INTEGER CHECK (duration_bars >= 0),
-- Transition probability
transition_probability DOUBLE PRECISION CHECK (transition_probability IS NULL OR (transition_probability >= 0.0 AND transition_probability <= 1.0)),
-- Transition context
adx_at_transition DOUBLE PRECISION,
cusum_alert_triggered BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT NOW(),
CONSTRAINT regime_transition_valid CHECK (from_regime != to_regime)
);
CREATE INDEX idx_regime_transitions_symbol_timestamp ON regime_transitions(symbol, event_timestamp DESC);