Expand description
Portfolio Margin (SPAN-style) computation.
Evaluates portfolios under stress scenarios combining spot and vol shocks. The worst-case weighted loss becomes the scanning risk. Contingency add-ons (option floor, gamma kicker for near-expiry shorts) are layered on top.
§Scenario Grid
13 core scenarios (spot: +/-4%, +/-8%, +/-12%; vol: +/-15%, +/-25%, +/-35%, +/-45%) plus 4 tail scenarios (spot: +/-25% at 0.60 weight, +/-40% at 0.35 weight).
§Margin Formula
IM = max(scanning_risk, option_floor) + gamma_overlay
MM = IM * 0.85
equity = cash + executed_option_UPNL + executed_perp_UPNLRe-exports§
pub use config::PortfolioMarginConfig;pub use config::PortfolioMarginContingencyConfig;pub use config::PortfolioMarginGridConfig;pub use config::PortfolioMarginScenario;pub use config::PortfolioMarginSymbolOverride;pub use contingency::ContingencyMargin;pub use recovery_planner::plan_pm_recovery;pub use recovery_planner::PmRecoveryAction;pub use recovery_planner::PmRecoveryOpenOrder;pub use recovery_planner::PmRecoveryOptionPosition;pub use recovery_planner::PmRecoveryPerpPosition;pub use recovery_planner::PmRecoveryPlan;pub use recovery_planner::PmRecoveryPlannerInput;pub use recovery_planner::PmRecoveryReason;pub use recovery_planner::PmRecoveryTrigger;pub use recovery_planner::RECOVERY_PRIORITY_VERSION;pub use settlement_pool::classify_liquidity_gap;pub use settlement_pool::pool_capacity_usdc;pub use settlement_pool::pool_target_usdc;pub use settlement_pool::pool_utilization;pub use settlement_pool::short_option_oi_usdc;pub use settlement_pool::utilization_apr;pub use settlement_pool::validate_pool_config;pub use settlement_pool::PmAccountSettlementFacts;pub use settlement_pool::PmFixtureOptionKey;pub use settlement_pool::PmFixturePosition;pub use settlement_pool::PmLiquidityClassification;pub use settlement_pool::PmMarketMarks;pub use settlement_pool::PmSettlementFixture;pub use settlement_pool::PmSettlementModelError;pub use settlement_pool::PmSettlementObligation;pub use settlement_pool::PmSettlementPoolConfig;pub use settlement_pool::PmSettlementPoolSnapshot;pub use snapshot::account_cash_decimal;pub use snapshot::market_state_from_snapshot;pub use snapshot::snapshot_from_account;pub use snapshot::PortfolioMarginMarketState;pub use snapshot::PortfolioMarginOptionExposure;pub use snapshot::PortfolioMarginOptionKey;pub use snapshot::PortfolioMarginOptionMarketState;pub use snapshot::PortfolioMarginPerpExposure;pub use snapshot::PortfolioMarginSnapshot;pub use snapshot::PortfolioMarginUnderlyingMarketState;pub use snapshot::PortfolioMarginUnderlyingSnapshot;pub use snapshot::SnapshotComponentKind;pub use span::compute_extended_risk_grid_from_snapshot;pub use span::compute_risk_grid_from_snapshot;pub use span::compute_span_margin_at;pub use span::empty_portfolio_margin_details;pub use span::generate_scenarios;pub use span::has_portfolio_positions;pub use span::ExtendedRiskGrid;pub use span::InstrumentRiskRow;pub use span::ScenarioPnl;