Skip to main content

Module portfolio

Module portfolio 

Source
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_UPNL

Re-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;

Modules§

config
contingency
equity
evaluator
recovery_planner
settlement_pool
snapshot
span