-- dolphin_violet DDL — consolidated from the LIVE dolphin_pink schema
-- (post-ALTER: includes maras_tp + provenance columns). Generated 2026-06-12.
-- Apply via apply_violet_ddl.py (one statement per HTTP POST).

CREATE TABLE IF NOT EXISTS dolphin_violet.policy_events
(
    `ts` DateTime64(6, 'UTC'),
    `ts_day` Date MATERIALIZED toDate(ts),
    `strategy` LowCardinality(String),
    `runtime_namespace` LowCardinality(String) DEFAULT '',
    `strategy_namespace` LowCardinality(String) DEFAULT '',
    `event_namespace` LowCardinality(String) DEFAULT '',
    `actor_name` LowCardinality(String) DEFAULT '',
    `exec_venue` LowCardinality(String) DEFAULT '',
    `data_venue` LowCardinality(String) DEFAULT '',
    `source` LowCardinality(String),
    `trade_id` String,
    `asset` LowCardinality(String),
    `side` LowCardinality(String),
    `entry_price` Float64,
    `current_price` Float64,
    `quantity` Float64,
    `notional` Float64,
    `leverage` Float32,
    `bar_idx` UInt32,
    `decision_seq` UInt32,
    `bars_held` UInt16,
    `action` LowCardinality(String),
    `reason` LowCardinality(String),
    `pnl_pct` Float32,
    `mfe` Float32,
    `mae` Float32,
    `mfe_risk` Float32,
    `mae_risk` Float32,
    `exit_pressure` Float32,
    `rv_comp` Float32,
    `mae_thresh1` Float32,
    `bounce_score` Float32,
    `bounce_risk` Float32,
    `ob_imbalance` Float32,
    `vel_div_entry` Float32,
    `vel_div_now` Float32,
    `v50_vel` Float32,
    `v750_vel` Float32,
    `exf_funding` Float32,
    `exf_dvol` Float32,
    `exf_fear_greed` Float32,
    `exf_taker` Float32,
    `posture` LowCardinality(String)
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(ts)
ORDER BY (ts_day, trade_id, decision_seq, ts)
TTL ts_day + toIntervalDay(180)
SETTINGS index_granularity = 8192;
