diff --git a/Cargo.toml b/Cargo.toml index ac30677..8c2b8f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -82,4 +82,6 @@ redis = { version = "0.25.4", features = ["r2d2"] } [dependencies.relayer-core] git = "https://git@github.com/twilight-project/relayer-core.git" -tag = "v0.2.0" +# tag = "v0.2.0" +branch = "bug-indentify" +# path = "../relayer-core" diff --git a/migrations/2026-02-21-000000_risk_engine_pending_exposure/down.sql b/migrations/2026-02-21-000000_risk_engine_pending_exposure/down.sql new file mode 100644 index 0000000..90534e3 --- /dev/null +++ b/migrations/2026-02-21-000000_risk_engine_pending_exposure/down.sql @@ -0,0 +1,3 @@ +ALTER TABLE risk_engine_update + DROP COLUMN IF EXISTS total_pending_long_btc, + DROP COLUMN IF EXISTS total_pending_short_btc; diff --git a/migrations/2026-02-21-000000_risk_engine_pending_exposure/up.sql b/migrations/2026-02-21-000000_risk_engine_pending_exposure/up.sql new file mode 100644 index 0000000..d4a1dd7 --- /dev/null +++ b/migrations/2026-02-21-000000_risk_engine_pending_exposure/up.sql @@ -0,0 +1,3 @@ +ALTER TABLE risk_engine_update + ADD COLUMN total_pending_long_btc DOUBLE PRECISION NOT NULL DEFAULT 0.0, + ADD COLUMN total_pending_short_btc DOUBLE PRECISION NOT NULL DEFAULT 0.0; diff --git a/migrations/2026-02-21-100000_add_mm_ratio_to_risk_params/down.sql b/migrations/2026-02-21-100000_add_mm_ratio_to_risk_params/down.sql new file mode 100644 index 0000000..5d7b8ac --- /dev/null +++ b/migrations/2026-02-21-100000_add_mm_ratio_to_risk_params/down.sql @@ -0,0 +1,2 @@ +ALTER TABLE risk_params_update + DROP COLUMN IF EXISTS mm_ratio; diff --git a/migrations/2026-02-21-100000_add_mm_ratio_to_risk_params/up.sql b/migrations/2026-02-21-100000_add_mm_ratio_to_risk_params/up.sql new file mode 100644 index 0000000..68811f8 --- /dev/null +++ b/migrations/2026-02-21-100000_add_mm_ratio_to_risk_params/up.sql @@ -0,0 +1,2 @@ +ALTER TABLE risk_params_update + ADD COLUMN mm_ratio DOUBLE PRECISION NOT NULL DEFAULT 0.4; diff --git a/src/archiver.rs b/src/archiver.rs index bf80ae9..b1d90ca 100644 --- a/src/archiver.rs +++ b/src/archiver.rs @@ -1032,6 +1032,19 @@ impl DatabaseArchiver { relayer::RiskEngineCommand::SetPausePriceFeed(_) => { ("SetPausePriceFeed".to_string(), None, None) } + relayer::RiskEngineCommand::AddPendingExposure(pt, amt) => ( + "AddPendingExposure".to_string(), + Some(pt.clone().into()), + Some(*amt), + ), + relayer::RiskEngineCommand::RemovePendingExposure(pt, amt) => ( + "RemovePendingExposure".to_string(), + Some(pt.clone().into()), + Some(*amt), + ), + relayer::RiskEngineCommand::RecalculateExposure => { + ("RecalculateExposure".to_string(), None, None) + } }; let record = NewRiskEngineUpdate { @@ -1040,6 +1053,8 @@ impl DatabaseArchiver { amount, total_long_btc: risk_state.total_long_btc, total_short_btc: risk_state.total_short_btc, + total_pending_long_btc: risk_state.total_pending_long_btc, + total_pending_short_btc: risk_state.total_pending_short_btc, manual_halt: risk_state.manual_halt, manual_close_only: risk_state.manual_close_only, pause_funding: risk_state.pause_funding, @@ -1066,6 +1081,7 @@ impl DatabaseArchiver { max_position_pct: params.max_position_pct, min_position_btc: params.min_position_btc, max_leverage: params.max_leverage, + mm_ratio: params.mm_ratio, timestamp: Utc::now(), }; self.risk_params_update(record)?; diff --git a/src/database/models.rs b/src/database/models.rs index 118873a..877d06a 100644 --- a/src/database/models.rs +++ b/src/database/models.rs @@ -2744,6 +2744,8 @@ pub struct RiskEngineUpdateRow { pub amount: Option, pub total_long_btc: f64, pub total_short_btc: f64, + pub total_pending_long_btc: f64, + pub total_pending_short_btc: f64, pub manual_halt: bool, pub manual_close_only: bool, pub pause_funding: bool, @@ -2759,6 +2761,8 @@ pub struct NewRiskEngineUpdate { pub amount: Option, pub total_long_btc: f64, pub total_short_btc: f64, + pub total_pending_long_btc: f64, + pub total_pending_short_btc: f64, pub manual_halt: bool, pub manual_close_only: bool, pub pause_funding: bool, @@ -2795,6 +2799,7 @@ pub struct RiskParamsUpdateRow { pub min_position_btc: f64, pub max_leverage: f64, pub timestamp: DateTime, + pub mm_ratio: f64, } #[derive(Serialize, Deserialize, Debug, Clone, Insertable)] @@ -2805,6 +2810,7 @@ pub struct NewRiskParamsUpdate { pub max_position_pct: f64, pub min_position_btc: f64, pub max_leverage: f64, + pub mm_ratio: f64, pub timestamp: DateTime, } diff --git a/src/database/schema.rs b/src/database/schema.rs index 6ee7eb3..1365eb0 100644 --- a/src/database/schema.rs +++ b/src/database/schema.rs @@ -230,6 +230,8 @@ diesel::table! { amount -> Nullable, total_long_btc -> Float8, total_short_btc -> Float8, + total_pending_long_btc -> Float8, + total_pending_short_btc -> Float8, manual_halt -> Bool, manual_close_only -> Bool, pause_funding -> Bool, @@ -247,6 +249,7 @@ diesel::table! { min_position_btc -> Float8, max_leverage -> Float8, timestamp -> Timestamptz, + mm_ratio -> Float8, } } diff --git a/src/rpc/types.rs b/src/rpc/types.rs index 7d0956b..a7ce91e 100644 --- a/src/rpc/types.rs +++ b/src/rpc/types.rs @@ -532,6 +532,10 @@ pub struct AccountSummaryByTAddressResponse { // --- Market Risk Stats (moved from relayer-core) --- +fn default_mm_ratio() -> f64 { + 0.4 +} + #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] pub struct RiskParams { pub max_oi_mult: f64, @@ -539,6 +543,8 @@ pub struct RiskParams { pub max_position_pct: f64, pub min_position_btc: f64, pub max_leverage: f64, + #[serde(default = "default_mm_ratio")] + pub mm_ratio: f64, } impl RiskParams { @@ -564,6 +570,10 @@ impl RiskParams { .unwrap_or("50.0".to_string()) .parse::() .unwrap_or(50.0), + mm_ratio: std::env::var("RISK_MM_RATIO") + .unwrap_or("0.4".to_string()) + .parse::() + .unwrap_or(0.4), } } } @@ -580,6 +590,8 @@ pub struct MarketRiskStatsResponse { pub pool_equity_btc: f64, pub total_long_btc: f64, pub total_short_btc: f64, + pub total_pending_long_btc: f64, + pub total_pending_short_btc: f64, pub open_interest_btc: f64, pub net_exposure_btc: f64, pub long_pct: f64, diff --git a/src/rpc/util.rs b/src/rpc/util.rs index da7d1ef..de209de 100644 --- a/src/rpc/util.rs +++ b/src/rpc/util.rs @@ -133,6 +133,8 @@ pub fn compute_market_risk_stats( pool_equity_btc, total_long_btc: total_long, total_short_btc: total_short, + total_pending_long_btc: risk_state.total_pending_long_btc, + total_pending_short_btc: risk_state.total_pending_short_btc, open_interest_btc: oi_btc, net_exposure_btc: net_btc, long_pct,