← Documentation home
Learn

FAQ

Common questions about tranched vaults.

Is the premium rate fixed forever?

No. The OPERATOR_ROLE holder can update it via setProtectionPremiumRate.

The metavault setter itself is immediate, so deployments that want a delay route OPERATOR_ROLE through an external timelock or through a Premium Rate Module. Every update first syncs accounting, so the old rate applies to the elapsed period and the new rate only applies going forward.

The rate can never exceed 100% APR, and it can never be set below the vault's immutable minProtectionPremiumBps floor.

What's the worst case for me as senior?

A drawdown deeper than what junior can absorb. Junior absorbs first, but if the underlying drops far enough, junior reaches zero and the residual loss starts marking down the senior share price. So your worst case is approximately (underlying loss − junior depth ÷ senior depth × 100%) plus the premium you've been paying.

At the 4× leverage cap, junior is 25% the size of senior, so senior is shielded from drawdowns up to roughly 20% of the underlying before any senior haircut starts.

What's the worst case for me as junior?

A drawdown deeper than your share of junior. Junior is the first absorber, so any underlying loss takes a bite out of the junior share price proportionally. If junior reaches zero, the share price reaches zero and your junior position is wiped on the affected drawdown.

There's no extra mechanism that takes more than 100% of your share. The loss is bounded by the value of your shares.

Is there a withdrawal fee?

There is no protocol exit fee when you execute your own notice.

Both senior and junior redemptions execute at the current share price after the notice matures, capped by the file-time snapshot value. The premium you've already paid (senior) or earned (junior) is already reflected in the share price.

If a third-party keeper executes a matured notice for you, the keeper receives KEEPER_FEE_BPS (5 bps) from your payout. Other LPs do not pay that fee.

Is there a performance fee?

The PROTOCOL_ROLE holder can set a performance fee up to MAX_PERFORMANCE_FEE_BPS (20% of underlying gains) and choose the fee recipient.

The fee is taken only when the wrapped vault's underlying value increases. It is paid by minting value-backed junior shares to the fee recipient, so it does not create a separate senior exit charge and it does not apply to losses or to the senior-to-junior protection premium.

Why does senior have a 5-day notice?

To stop senior holders from racing junior in a developing drawdown. Without the notice, a senior could see the vault wobbling and exit cleanly while junior is still locked behind their notice, leaving the protection cushion under-collateralised. The 5-day window plus execution-time pricing keeps both sides committed long enough that the protection economics stay honest.

Why does junior have a 10-day notice?

Junior is the protection-providing tranche. A 10-day lock prevents junior holders from yanking collateral right before a loss event, which would leave senior unprotected. The asymmetry (10d junior vs 5d senior) reflects the asymmetric protection role.

Does the notice lock in a price?

No. The notice locks the shares so they can't be transferred while pending. The redemption is priced at the lower of execution-time NAV and the file-time snapshot value, so a pending notice does not capture post-filing upside.

Can I cancel a notice?

Yes, any time, with no penalty. Cancelling returns the queued shares back to your wallet immediately.

What happens if I refile a notice?

You cannot refile while a notice is active. requestSeniorWithdrawal / requestJuniorWithdrawal reverts until the existing notice is cancelled, fully executed, or otherwise cleared.

Can the contract be paused?

The OPERATOR_ROLE holder can pause new deposits via a single global depositsPaused flag. Withdrawals are never paused. Filing, cancelling, and executing all keep working regardless of pause state.

Scenarios

What if the underlying drops a small amount (say 5%)?

At the 4× leverage cap, a 5% drop on the underlying is fully absorbed by junior, so senior doesn't feel it.

What if the underlying drops by exactly what junior can absorb (around 20%)?

This is the protocol's intended protection envelope: the worst case where senior is still fully whole.

What if the drop goes deeper than junior can absorb?

Past the depth of junior, senior bears the rest. This is the protocol's outer boundary.

What if the underlying vault is temporarily illiquid?

The withdrawal is blocked transiently, not lost. The notice doesn't consume, so the holder simply retries once liquidity returns.

What happens if the operator pauses new deposits?

New entries are blocked on both sides; withdrawals keep working regardless.

What if the underlying vault tries to charge a fee on routing?

The transaction is rejected before any value loss can be socialised.

What if every junior tries to exit at once?

Some exit successfully; the rest are blocked until the cap rebuilds. This is the race-on-contention trade-off of a continuous-flow pooled design.

Self-balancing mitigation: as junior thins out, junior yield mechanically rises (the same premium splits across fewer junior shares), which attracts fresh deposits and rebuilds the cap. The operator or PRM can also raise the premium rate to accelerate the rebalance, subject to the vault floor and rate cap.

Can senior front-run a developing drawdown?

Not meaningfully. Two design choices close this off:

The result: filing early is break-even at best.

What if someone files a notice and leaves it sitting?

It doesn't stay sitting for long. Once a notice matures, keepers crank it through, and holding a stale notice costs the filer, so it isn't a free option.

Keepers are permissionless bots that execute matured notices on behalf of the filer. Anyone can call withdrawSenior / withdrawJunior once a notice matures with owner set to the notice holder; the keeper earns KEEPER_FEE_BPS (5 bps) of the proceeds, skimmed from the holder's own payout — not socialised across other LPs. Self-execution by the holder is always free. The keeper-paid fee is what makes this economic: bots watch the chain, push matured notices to settlement, and pocket the spread. The metavault also enforces a 3-day NOTICE_EXECUTION_WINDOW after maturity, after which the notice becomes stale. Stale senior notices can be cleared by calling clearStaleSeniorWithdrawal(owner); stale junior notices are cancellable by the holder. Deployments where the public keeper market is too thin can set keeperRestricted, which limits the keeper path to PROTOCOL_ROLE holders while leaving self-execution open.

That economic pressure plus a few mechanical points stop the stale-notice strategy from working:

Net effect: a standing notice removes the time cost of exiting, not the price cost — and the keeper market means the time cost expires on its own.

What if junior gets fully wiped out?

Existing lcJUN shares become worthless, and the tranche is terminal, but the contract handles it cleanly.

What if the operator sets an unreasonable premium rate?

The metavault enforces hard bounds, but governance delay depends on who holds OPERATOR_ROLE.