Rebase Flow¶
Trigger: A material real-world event shifts market probability on one active position, widening the gap between modeled and market NAV. Caller: Governance (operator)
Purpose¶
A rebase is a controlled, downward adjustment of a position's entry price. It acknowledges market reality without fully writing off the position — used when the outcome is still uncertain but the current model is overstating value.
Steps¶
-
Material event occurs affecting one market's probability (e.g., key evidence emerges, odds shift significantly).
-
Operator observes that
positionMarketValue(slotIndex)has dropped materially belowpositionModeledValue(slotIndex). -
Operator selects a new entry price that:
- Is at or above the current market price:
newEntryPrice >= adapter.currentPrice() -
Is below the current modeled price:
newEntryPrice <= _modeledPrice(position) -
Operator calls
vault.rebasePosition(slotIndex, newEntryPrice, newMaturity). -
Vault enforces constraints on-chain:
-
Position struct updated:
entryPrice = newEntryPricematurity = newMaturity-
lastRebase = block.timestamp -
PositionRebased(slot, oldEntryPrice, newEntryPrice, newMaturity)emitted. -
Accrual restarts from the new lower base. The modeled price starts from
newEntryPriceand accrues linearly to $1.00 over the remaining duration. -
Aggregate modeled NAV recalculates — the gap may narrow enough to unpause the system.
Constraints in Detail¶
| Constraint | Rule | Rationale |
|---|---|---|
| Downward only | newEntryPrice ≤ _modeledPrice(position) |
Prevents using rebase to inflate NAV |
| At or above market | newEntryPrice ≥ adapter.currentPrice() |
Prevents rebasing to an impossible level below current market |
| Zero exception | newEntryPrice == 0 bypasses both constraints above |
Allows write-off path via rebase |
| 7-day cooldown | block.timestamp ≥ lastRebase + 7 days |
Prevents serial rapid rebases that could systematically drain modeled NAV |
| Cooldown waived for zero | Zero-price rebase always allowed | Write-offs are time-sensitive |
Rebase vs. Write-Off¶
| Use Rebase When | Use Write-Off When |
|---|---|
| Outcome still uncertain — YES possible but not certain | Outcome is certain — YES will resolve |
| Market price has dropped but position has residual value | NO shares are effectively worthless |
| Gap can be partially closed by adjusting the model | Full position should be zeroed immediately |
Effect on the System¶
After a rebase:
- aggModeledNAV decreases (lower entry price → smaller modeled value)
- aggMarketNAV is unchanged (market price is unchanged)
- Gap may narrow (if the rebase brings modeled below the pause threshold)
- Gap may remain above 1500 bps — system stays paused
- Share price drops proportionally to the modeled NAV decrease