Skip to content
Protocol

Parameters

The complete table of constants, by tier, each marked as fixed at construction, computed by formula, or opened by a dated tier.

Every number in Fyber is one of three things (Rule R-12.7.1, principle P7):

  • Fixed — an immutable or constant set in the deployment transaction, validated by a constructor assertion, and never changed afterwards by anybody.
  • Formula — computed on-chain at every read from protocol state, time, or an external reference.
  • Dated tier — a frozen table indexed by elapsed time, sometimes gated by an on-chain condition.

There is a fourth category that does not exist: a parameter somebody can set. forge inspect storage-layout is run at deployment to assert that no storage variable holds a risk constant (Rule R-16.5.1).

Values marked [F] were estimated rather than measured when the specification was frozen and are recalibrated before deployment from 28 days of feed logs and 30 days of depth measurements. After deployment there is no correction: freezing the specification is freezing the constants (Rule R-16.5.2).

Tier assignment: Tier 1 is SPY, QQQ, the third ETF and mega caps; Tier 2 is GLD and IWM. Tier 3 does not exist in version 1.

Values marked [P] are the founder working values of 7 September 2026 and are pending confirmation by specification v0.5. They are printed here so the site states one set of numbers, and they are the only figures on this page that a constructor assertion does not yet validate.

Headline values

Tier 1Tier 2
Maximum loan-to-value [P]80%75%
Minimum ratio to borrow, at full confidence [P]125%133.33%
Liquidation threshold, at every hour [P]115%120%
Ceiling on the valuation haircut30%35%
Recognition band, constant4%6%
Immunity ratio, MCR / (1 − band)119.8%127.7%
Liquidation bonus, live and open sale5% / 2%5% / 3%
Solvency cushion at the threshold6.09%10%
Interest rate floor1.5%3%
Debt ceiling multiple of measured depth4.0×2.5×

Protocol-wide: minimum debt 100 fyUSD, mint fee 7 days of interest, PSM entry fee 0.05%, PSM exit fee 0.20%, PSM cap 30%, redemption fee floor 0.5%, Stability Pool share of interest 90% in regime 1, Closer expiry 365 days.

Per branch, by tier

ConstantUnitTier 1Tier 2NatureFormula or derivation
CR_mint [P]%125%133.33%fixedderived from the loan-to-value ceiling; assert > MCR / (1 − BAND_BASE)
CR_mint_eff%up to 178.6%up to 205.1%formulaCR_mint / (1 − h); assert the ceiling ≤ 250 (tier 1), ≤ 310 (tier 2)
MCR [P]%115%120%fixedassert ≥ 110; the only threshold, no session variant
CCR (mint freeze) [P]%140%145%fixedtested on TCR(pRef) without the haircut (decision D80)
SCR (shutdown) [P]%105%110%fixedtested on TCR(pLiq) in LIVE
H_MAX (valuation haircut ceiling)%3035fixed [F]h = H_MAX × (1 − conf)
U_MAX (uncertainty at zero confidence)bps400600fixed [F]assert ≥ BAND_BASE
σ_tier (annualised volatility)%2030fixed [F]grows u with √(market time)
BAND_BASE, constant%4%6%fixed [F]no widening and no separate ceiling since v0.4 (decision D78)
DROP_TRIGGERbps200200fixed [F]half the base band; starts the persistence clock
PERSIST_SINGLEh33fixed [F]one source alone must hold a fall this long
COH_MAX (dispersion between pools)bps300300fixed [F]above it, the outlying pool is excluded
D_REF / D_MIN_POOLUSD3 M / 500 k2 M / 300 kfixed [F]full witness credit / minimum to be a price source
CR_target after liquidation%126.5%138%formulaMCR × 1.10 (tier 1), × 1.15 (tier 2)
B_BASE (bonus at full confidence)%5%5%fixedassert ≤ 15 and < MCR − 100 pts
B_MIN (open-sale discount, bonus floor)%2%3%fixedb = B_MIN + (B_BASE − B_MIN) × conf in LIVE
Bonus adjustment, seizure above 0.5 × / 1.0 × d2pt+2 / +4+2 / +4fixed [F]LIVE only
Bonus ceiling%1515fixedclamp
Total liquidation below% ICR105105fixed
keeperShare and its cap% / USD0.5 / 2000.5 / 200fixed
κ× d2_eff4.02.5fixed
σ% of market cap1510fixedMC = totalSupply × price
C_abs(t)USDsee tiers belowsee tiers belowdated tierlocked by badDebtCumul and a TCR condition
ρ% of Σ C_abs40 [F]25 [F]fixed + formulamax(ρ, 1/n_active)
π (position maximum)× d2_eff1.00.75fixed + formula
Per-address debt capUSDsee tiers belowsamedated tier + formulamin(50 k, 10% D_max) then min(π d2_eff, 10% D_max)
d2_effUSDformulamin(d2_now, P25 over 7 d), ratchet +20%/d after 24 h, decay 10%/d after 48 h
Reference pools for LiquidityOracleaddresses≥ 2≥ 2fixedchosen seven days before deployment
Hourly liquidation bucket, LIVE× d2_eff1.0, or 1.5 in a regular sessionsamefixedrefilled linearly over 60 min
Hourly liquidation bucket, DRIFT× d2_eff0.25samefixed [F]
Open-sale ceiling per shut period× d2_eff / % of debt1.0 / 15%samefixed [F]min of the two, counted in debt burned
Per-transaction cap, LIVE / DRIFT× d2_eff of debt0.25× / 0.10×samefixed [F]one unit for both buckets since v0.4 (decision D89)
SESSION_EDGE_Ss600 secondssamefixedthe print applies in one step; only the pool waits
Confirmation, LIVE / DRIFTs90 / 1 800samefixed [F]flag to execution
Flag validity, LIVE / DRIFTs1 800 / 21 600samefixed [F]
τ_live: regular / extended / overnighth4 / 6 / 8samefixed [F]past it, LIVE becomes DRIFT; nothing is blocked
Missed heartbeat / calendar shut too longh26 / 120samefixed [F]the two ways into BLIND by age
Session weights for marketTime1.0 / 0.5 / 0.25 / 0.15samefixed [F]regular / extended / overnight / shut
c_sess: extended / overnight0.95 / 0.85samefixed [F]overnight has one price provider
REDEEM_K%22fixed [F]fee = 0.5% + baseRate + REDEEM_K × (1 − conf)
maxJumpPerMin / maxJumpAbs%/min / %0.6 / 121.0 / 18fixed [F]doubled within a session edge
Relative price window× last acceptedformula[/20, ×20]
expectedPrice at constructionUSD per tokenprice the day beforesamefixedassert feed within [/2, ×2]; initialises the window
minShare / maxShareUSD per underlying shareshare₀ / 3 and × 3 [F]samefixed + formularecalibrated by m_old / m_new
Silent multiplier change threshold%11fixed [F]
pools[] (price witness)addresses1 to 6, with a native accumulatorsamefixedv3 observe, v2 cumulative; v4 is never a price source
basket[] (coherence only)addressesthe other equity branchesempty for GLDfixedfeeds dispersion alone; confirms nothing, widens nothing (D78, invariant I-18)
TWAP window / fallbacks3 600 / 1 800samefixeda pool whose window is unreadable is excluded for that poke
ethUsdFeed window / ETHUSD_AVG_MAX_ROUNDSs / count3 600 / 12samefixed [F]averaging window for the WETH conversion, and the age past which WETH pools go
Circuit exit: rounds / delaycount / min3 / 10 minutes, or 2 / 60 minutessamefixedeither path clears it (decision D92)
Shutdown persistence below SCRs3 600 [F]3 600fixed
Automatic shutdown after degraded statedays77fixedon degradedSince
Interest clock stop after degraded stateh2424fixed
Upgrade freeze: initial / extension / maximumdays7 / 7 / 28samefixedcleared by an automatic transferability self-test
urgentFrom after a Closer shutdowndays77fixedzero for the mechanical causes
Post-shutdown settlementdaysurgentFrom + 30samefixedsettleAfterShutdown
spSeed (floor under the pool cap)USD500 k500 kfixedcap = max(spSeed, 1.0 × debt)
Pool cap per addressUSD100 k until day 90samedated tierunlimited afterwards
NAV discount on collateral being sold%5%5%formulaequals B_BASE, applied to min(pRef, pLiq) (decision D82)
CollateralSale: max discount / ramp / bucket% / h / × d23 / 6 / 1.0, 0.25 per txsamefixedstays at 3% after six hours
In-kind delivery threshold on the wrapper% of NAV2020fixed

Global constants

ConstantUnitValue at deploymentNatureFormula or derivation
Fixed rate floors, A / B%1.5 / 3.0fixedfloor = max(fixed, k × rRef)
k, A / B×0.5 / 0.9fixedassert k × rMax ≤ 10%
rRef bounds / window / minimum samples% / days / count[2, 6] / 30 / 15fixed + formula30-day TWA of the reference borrow rate; zero if unavailable
RateFloor reference marketaddress, idchosen seven days before deploymentfixedUSDG loan token, largest borrowed assets
Reference unavailabilityUSD / dayssupplied assets < 10 M, or last update > 30 dfixedgives rRef = 0
rateMax%100fixed
Mint feedays of interest7fixedΔdebt × rate × 7/365
rateCooldowndays7fixed
minDebtfyUSD100fixed
globalCeiling(t)USD2 M from day 14, up to 10.5 MformulaΣ_active C_abs_i(t)
DEPLOY_TSsthe deployment timestampfixedreference for the global dated tiers
Liquidation flag: minimum delay / expirys90 / 1 800fixed [F]
SESSION_EDGE_Ss600fixedcalendar boundary, print after a long silence, exit from BLIND
preActions86 400fixed
SEQ_GRACEs1 800fixed [F]with no uptime feed, SEQ_DOWN does not exist at all
CIRCUIT exit: rounds / delaycount / s3 / 600, or 2 / 3 600fixedeither path, decision D92
Global hourly liquidation bucket× Σ d2_eff0.6 [F]fixed
Redemption fee: floor / low-confidence premium% / %0.5 / up to 2.0fixed + formula0.5% + baseRate + 2% × (1 − conf)
baseRate half-lifes21 600fixed
redemptionCooldowns86 400 [F]fixed
Urgent redemption: bonus / fee%2 / 0fixed
PSM feeIn / feeOut%0.05 / 0.20fixedzero in Sunset
PSM capShare% of supply30fixed100 in Sunset; never raised otherwise
PSM reserve target / minimum% of supply10% / 5%operationalthe only weekend peg line once collateral has fallen (D88)
PSM reserve deployed%0, for the whole life of version 1fixed
Interest shares: pool / backstop / treasury / incentives%90 / (5 from pool) / 0 / 10, then 75 / (5 from treasury) / 15 / 10, then 100 / 0 / 0 / 0formularegime by D_total and Sunset
Fee-switch thresholdUSD of debt25 Mfixedone-way permissionless latch
Backstop target% of D_total2fixed5 points routed while below
Redistribution: delay / backstop thresholdh / USD72 / below minDebtfixedpermissionless
Backstop collateral sale: discount / per-tx cap% / × d23 / 0.25fixedlive session only
Pool-depth alert: low / recovery% of supply30 / 40fixedhysteresis
PoolIncentive: pools / purgecount / days1, or 2 if the hook is ready / 180fixedpro rata in-range liquidity × time
Closer: max freeze / max liquidation freeze / cumulative / freeze counth / h / days / count72 / 24 / 30 per branch / 3 per branchfixedat least 7 days between two liquidation freezes, and pool deposits refused during one
Closer.EXPIRES_ATsDEPLOY_TS + 365 daysfixedrenounce() brings it forward
Automatic Sunset: branches / aggregate TCR / persistencecount / % / s2 / 130 / 3 600fixedpermissionless
Sunset: rates to zero afterdays90fixedinterest clock frozen
Calendar exceptions frozen throughdate2036-12-31fixedrules continue afterwards
Backstop initial endowmentUSD100 k [F]outside the protocolthrough fund()
Initial fyUSD/USDG liquidityUSD250 k to 500 koutside the protocolfounders
Pool bootstrapUSD500 k to 1 M through swapInToSPoutside the protocolat most spSeed per branch before debt exists

Dated tiers

TierFromSPY, QQQThird ETFGLD, IWMCondition
C_abs 1activation100 k USD100 k100 k14-day observation
C_abs 2activation + 14 d1.0 M500 k500 k
C_abs 3activation + 90 d2.0 M1.0 M1.0 MbadDebtCumul == 0
C_abs 4activation + 180 d3.0 M1.5 M1.5 MbadDebtCumul == 0 and TCR ≥ 200% at the mint
Per-address debt capday 0 to day 90min(50 k, 10% D_max)samesame
Per-address debt capafter day 90min(π × d2_eff, 10% D_max)samesame
Pool cap per addressday 0 to day 90100 ksamesame
Pool cap per addressafter day 90nonesamesame
Pool cap, globalalwaysmax(500 k, 1.0 × branch debt)samesame
Closerday 0 to day 365armedrenounce() possible at any time
Closerafter day 365inoperative

Activation criteria for the dormant branches

Date (day 90 for the third ETF and GLD, day 150 for IWM); d2P25 at least 1.0 M USD for Tier 1 and 500 k for Tier 2; depth buffer at least 84 of 168 slots; at least two reference pools at 250 k or more; on-chain market capitalisation at least 8 M (A) or 4 M (B); the adapter deployed at least 90 days with no degraded episode longer than 24 hours; regime LIVE with no pending corporate action; and, for Tier 2 only, the sum of active Stability Pools at least 40% of the fyUSD supply. Full detail: Branches and versions.

Constructor assertions

A configuration that violates any of these cannot be deployed, and a configuration that is wrong cannot be corrected (Rule R-12.7.1):

MCR                       ≥ 110%
CR_mint                   > MCR / (1 − BAND_BASE)    // the band alone never liquidates a fresh position
CR_mint / (1 − H_MAX)     ≤ 250% (tier 1), ≤ 310% (tier 2)
MCR × (1 − BAND_BASE)     > 1 + B_BASE + 300 bps     // a sale at the bottom of the band is still solvent
U_MAX                     ≥ BAND_BASE                // "band full" and "confidence zero" coincide
B_MIN                     < B_BASE ≤ 15%
DROP_TRIGGER              ≤ BAND_BASE / 2
PERSIST_SINGLE_H          ≥ 2 h
CONFIRM_LIVE < SESSION_EDGE_S < FLAG_TTL_LIVE ≤ CONFIRM_DRIFT < FLAG_TTL_DRIFT
LIQ_TX_CAP_DRIFT ≤ LIQ_TX_CAP_LIVE ≤ BUCKET_DRIFT_HOURLY
ETHUSD_AVG_MAX_ROUNDS     ≥ 2
CLOSER_LIQ_FREEZE_GAP     ≥ 24 h
sequencerFeed == 0, or latestRoundData() is readable
floorFixed                ≥ 0.5%
rateMax                   ≤ 100%
k × rMax                  ≤ 10%
treasury share            ≤ 20% in every regime
capShare                  ≤ 50% outside Sunset
τ_live regular ≤ extended ≤ overnight < HEARTBEAT_MISS
CLOSED_MAX_H              > 80 h
W_REGULAR ≥ W_EXTENDED ≥ W_OVERNIGHT ≥ W_CLOSED > 0
C_abs tiers increasing
at least one price pool per branch, each v2 or v3
EXPIRES_AT                == DEPLOY_TS + 365 days
all cross-addresses non-zero and mutually consistent
no two branches share a token
fyUSD minters             == exactly the five branches and the PSM

Two further assertions of specification v0.4, CR_mint ≥ MCR + 20 pts and SCR ∈ [100%, MCR − 20 pts], are omitted above because the ratios marked [P] do not satisfy them. They return once v0.5 settles the thresholds.

What is no longer here

MCR_closed, CR_withdraw_closed, HardFloor, the fixed out-of-session band, graceOpen, the Monday grace, the sweep bonus adjustment, the relief-valve parameters and the long out-of-session staleness thresholds went with the closed-market design. Nothing replaced them one for one: the single MCR, the haircut, the recognition band and the open sale together do the work all nine used to do.

Version 0.4 removed four more. BAND_RATE and BAND_MAX, because the band no longer widens. RETURN_RAMP, replaced by SESSION_EDGE_S, which stops the Stability Pool executing for ten minutes instead of interpolating a price nobody trades at. And the ETH/USD sequencer substitute, whose 7 200-second threshold would have blinded every branch at once on a quiet night. Confirmation of a fall by the basket of other equity branches went with them.

Last reviewed: 2026-09-07 · Spec v0.4