Margin Parameters
Onchain: stored in Config’sMarginConfig struct. Setter: Config.setMarginConfig().
| Parameter | Key | Default | Range | Unit | Role |
|---|---|---|---|---|---|
| Initial Margin Factor | imFactorBps | 200 (2%) | 1 — 10,000 | bps | owner |
| Maintenance Margin Factor | mmFactorBps | 100 (1%) | 1 — 10,000 | bps | owner |
| Trading Fee | tradingFeeBps | 5 (0.05%) | 0 — 10,000 | bps | owner |
| Liquidation Penalty | liquidationPenaltyBps | 30 (0.3%) | 0 — 10,000 | bps | owner |
imFactorBps must be strictly greater than mmFactorBps. This guarantees a liquidation buffer between the margin posted at open and the threshold that triggers liquidation.
Existing positions use snapshotted values from the time of opening. Parameter changes apply only to future positions.
Pricing Parameters
Onchain: stored in Config’sPricingConfig struct. Setter: Config.setPricingConfig().
| Parameter | Key | Default | Range | Unit | Role |
|---|---|---|---|---|---|
| Base Spread | baseSpreadBps | 5 (0.05%) | 0 — 1,000 | bps | owner |
| Premium/Discount Adjustment | premiumDiscountAdjBps | 5 (0.05%) | 0 — 10,000 | bps | owner |
Position Parameters
Onchain: stored in Config. Setter:Config.setMinPositionNotional().
| Parameter | Key | Default | Range | Unit | Role |
|---|---|---|---|---|---|
| Minimum Position Notional | minPositionNotional | 100,000,000 (100 USDC) | 1 — 1,000,000,000,000 | USDC raw (6 decimals) | owner |
Tenor Parameters
Onchain: stored in Config’sTimeConfig struct. Setter: Config.setTimeConfig().
| Parameter | Key | Default | Range | Unit | Role | Restrictions |
|---|---|---|---|---|---|---|
| 1-Day Duration | tenorSecondsOneDay | 86,400 (24h) | 1 — 31,536,000 | seconds | owner | No open positions |
| 1-Week Duration | tenorSecondsOneWeek | 604,800 (7d) | 1 — 31,536,000 | seconds | owner | No open positions |
| 1-Month Duration | tenorSecondsOneMonth | 2,592,000 (30d) | 1 — 31,536,000 | seconds | owner | No open positions |
| Test Duration | tenorSecondsTest | 60 (1min) | 1 — 31,536,000 | seconds | owner | No open positions |
openPositionCount == 0), because changing a tenor’s duration would invalidate the fixing timestamps of existing positions.
Individual tenors are enabled/disabled via Config.setTenorEnabled().
Oracle Parameters
Onchain: stored across Config and OracleModule.| Parameter | Key | Default | Range | Unit | Role |
|---|---|---|---|---|---|
| Oracle Fee | oracleFee | 100,000 (0.10 USDC) | 0 — 10,000,000 | USDC raw | owner |
| Max Spot Oracle Age | maxOracleAge | 30 | 1 — 3,600 | seconds | owner |
| Max Forward Price Age | maxForwardAge | 60 | 1 — 3,600 | seconds | oracle_admin |
| Spot Fixing Window | spotFixingWindowSeconds | 120 | 1 — 3,600 | seconds | owner |
OracleStale reverts when exceeded.
Oracle Safeguard Parameters
Onchain: stored in OracleModule. Setter:OracleModule.setOracleSafeguardConfig().
| Parameter | Key | Default | Range | Unit | Role |
|---|---|---|---|---|---|
| Min Forward Update Spacing | minForwardUpdateSpacing | 10 | 0 — 3,600 | seconds | oracle_admin |
| Max Oracle Move Per Update | maxOracleMovePerUpdateBps | 200 (2%) | 1 — 10,000 | bps | oracle_admin |
| Max Deviation vs Prior | maxDeviationVsPriorBps | 50 (0.5%) | 1 — 10,000 | bps | oracle_admin |
| Max Deviation vs Last Close | maxDeviationVsLastCloseBps | 150 (1.5%) | 1 — 10,000 | bps | oracle_admin |
Risk Parameters
Onchain: stored in RiskManager’sRiskConfig struct. Setter: RiskManager.setConfig().
| Parameter | Key | Default | Range | Unit | Role |
|---|---|---|---|---|---|
| Net Exposure Cap Factor | netExposureCapFactorBps | 10,000 (100%) | 1 — 10,000 | bps | risk_admin |
| Stress Move | stressMoveBps | 200 (2%) | 1 — 10,000 | bps | risk_admin |
| Per-Position Cap Factor | perPositionCapFactorBps | 500 (5%) | 1 — 10,000 | bps | risk_admin |
| Per-Account Cap Factor | perAccountCapFactorBps | 500 (5%) | 1 — 10,000 | bps | risk_admin |
| Max Gross Notional Delta/Window | maxGrossNotionalDeltaPerWindow | 0 (disabled) | 0 — 1e15 | USDC raw | risk_admin |
| Max Net Exposure Delta/Window | maxNetExposureDeltaPerWindow | 0 (disabled) | 0 — 1e15 | USDC raw | risk_admin |
| Rate Window Duration | rateWindowSeconds | 3,600 (1h) | 1 — 86,400 | seconds | risk_admin |
maxNetExposure = poolEquity * 10000 / 200 = poolEquity * 50. A pool with 1M USDC equity allows 50M net exposure. Per-position and per-account caps are 5% of that (2.5M each).
Rate-of-change limits are disabled by default (value = 0). When enabled, they throttle how quickly gross notional or net exposure can change within the rolling window. See Pool Exposure Caps for formulas.
Pool Parameters
Onchain: stored in PoolVault and Config.| Parameter | Key | Default | Range | Unit | Role |
|---|---|---|---|---|---|
| Max Notional Utilization | maxUtilizationBps | 8,000 (80%) | 0 — 10,000 | bps | owner |
| Treasury Fee Share | treasuryShareBps | 3,000 (30%) | 0 — 10,000 | bps | owner |
grossNotional / totalAssets would exceed the cap. Setting to 0 disables the check. See Pool Utilization for details.
Treasury share determines the fee split: 30% to treasury, 70% to the pool. The split is configured via Config.setFeeDestinations() using FeeDestination structs whose shareBps values must sum to exactly 10,000.
Fixing Parameters
Onchain: stored in Config per pair. Setter:Config.setPairFixingTime().
| Parameter | Key | Default | Range | Unit | Role | Restrictions |
|---|---|---|---|---|---|---|
| Fixing Hour (UTC) | fixingHourUtc | 16 (4 PM) | 0 — 23 | hour | owner | No open positions for pair |
| Fixing Minute (UTC) | fixingMinuteUtc | 0 | 0 — 59 | minute | owner | No open positions for pair |
| Fixing Second (UTC) | fixingSecondUtc | 0 | 0 — 59 | second | owner | No open positions for pair |
Mode Parameters
Onchain: stored in ModeController’sDegradedConfig struct. Setter: ModeController.setDegradedConfig().
| Parameter | Key | Default | Range | Unit | Role |
|---|---|---|---|---|---|
| Degraded Threshold | degradedThresholdBps | 500 (5%) | 1 — 10,000 | bps | admin |
| Degraded Duration | degradedDurationSeconds | 3,600 (1h) | 1 — 86,400 | seconds | admin |
Roles Summary
| Role | Parameters Controlled |
|---|---|
owner | Margin, pricing, tenors, position minimums, oracle fee, pool utilization, fee destinations, fixing times |
oracle_admin | Forward age, update spacing, move limits, deviation limits |
risk_admin | Exposure caps, position/account caps, rate-of-change limits |
admin | Degraded mode thresholds and duration |
Related Pages
Config Contract
Config contract API reference.
Risk Manager
Risk cap validation logic.
Margin Model
IM/MM factor mechanics and liquidation thresholds.