POST /account/simulate/{user_id} is non-mutating. It clones the sub-account, applies optional pending transfers, applies a synthetic trade, and returns projected margin fields.
The simulated order is not reduce-only aware. Do not use simulate to prove a reduce-only order will pass. The handler currently returns liquidation_price: None, so simulate is not usable for liquidation-price monitoring.
Raw simulate
tpluspy
Worked example
Example verified from the simulate handler tests:available_margin = 9000, mm_surplus = 9000, utilized_margin = 0, account_leverage = 0.5, and margin_required = 1000.