Collateral & Margin System
Collateral Management
Symmio supports two distinct margin systems to manage risk and ensure solvency across counterparties:
1. Isolated Margin
Used exclusively for Party A option purchases.
Party A’s funds are deposited into an individual isolated balance, managed per user.
Party B is responsible for maintaining sufficient collateral in their own isolated balance to cover the total unrealized PnL of all open positions with all Party As.
The required collateral is determined by the loss coverage ratio, which defines what percentage of unrealized losses must be backed by actual funds.
Solvency checks for Party B are performed only against their isolated balance, aggregated across all counterparties (not per Party A).
If Party B’s available balance falls below the required threshold, liquidation is triggered.
The Scheduled Release Balance System governs how and when deposited funds become available, introducing timed delays for security.
2. Cross Margin
Available for both buying and selling by Party A.
Each Party A and Party B maintains a dedicated cross balance per counterparty pair.
This model is used for:
Party A’s maintenance margin (when selling options).
Party B’s loss coverage (when Party A is the buyer).
Funds can be allocated from the isolated balance into a cross balance specific to a trading counterparty.
Solvency and liquidation are pair-specific—they apply only to the trades and margin balances between a particular Party A and Party B.
Party A must maintain enough maintenance margin in their cross balance with Party B to support short positions.
Party B must allocate sufficient funds in the cross balance with Party A to cover the required unrealized PnL.
A dedicated reserve balance is introduced for Party B:
Acts as a fail-safe collateral source in critical situations.
Can be used to top up a cross balance and prevent liquidation if the account is at risk.
Scheduled Release Balance System
The Scheduled Release System is a smart contract-based balance management system that provides secure fund handling with time-delayed releases and multi-counterparty support. The system supports both isolated and cross-margin trading models with sophisticated locking mechanisms.
This system :
Controls fund release and transfers between parties
Implements security delays to prevent immediate fund availability
Mitigates risks associated with rapid fund movements
Provides different functionality for isolated vs. cross margin systems
Balance Types
Isolated Balance: User's main balance pool which used in isolated solvency checks
Cross Balance: Per-counterparty balance for cross-margin operations and solvency checks
Scheduled Balance: Time-locked funds awaiting first release
Transitioning Balance: Funds in second phase of release process
Margin Types
Isolated Margin: Uses scheduled release mechanism with time delays
Cross Margin: Direct balance operations without delays


Isolated Balance Functions
instantIsolatedAdd()
Immediately adds funds to party's isolated balance
isolatedSub()
Subtracts funds from isolated balance
isolatedLock()
/ isolatedUnlock()
Lock/unlock portions of isolated balance

Cross Balance Functions
allocateBalance()
Transfer funds from isolated to cross balance for specific counterparty
deallocateBalance()
Transfer funds from cross balance to isolated balance
crossLock()
/ crossUnlock()
Lock/unlock portions of cross balance
Scheduled Release Functions
scheduledAdd()
Add funds with time-delayed release. This delay is because of security issues.

subForCounterParty()
Subtract funds from balances for counterparty not just the isolated balance.

Release Mechanism
Time Intervals
The system uses two release intervals:
Release Interval 1: Scheduled Balance → Transitioning Balance
Release Interval 2: Transitioning Balance → Isolated Balance
Sync Function
The sync()
function must be called to progress funds through the release intervals. This function:
Checks elapsed time for each balance bucket
Moves funds from Scheduled to Transitioning when interval 1 expires
Moves funds from Transitioning to Isolated when interval 2 expires
Last updated