← Back to FAQ

Wrapper Allocation Deep Dive

This page provides technical detail on how YieldGuard allocates capital across different tokenised U.S. Treasury Bill products ("wrappers").

How many wrappers are active at any given time?

YieldGuard doesn’t fix a hard cap. The number is dynamic and depends on (1) which tokenised T-bill products the core team has whitelisted in the `StrategyRouter`, and (2) which of those wrappers are actually funded after the daily yield-based allocation. The metrics fall into three buckets:

MetricWhat it countsCurrent value (Jul 2025)Where to see it
numWrappersERC-20 contracts in StrategyRouter.approvedWrappers[]2 (Sepolia MVP)strategyRouter.listWrappers() or dashboard "Issuer split"
numIssuersDistinct legal issuers behind those wrappers2Aggregated on frontend
Market UniverseLive U.S. T-bill wrappers YieldGuard could whitelist5-7 credible productsSee snapshot below

The Broader Wrapper Universe

The MVP on Sepolia whitelists mock versions of TBILL (OpenEden) and wSTBT (Matrixdock) because they expose an on-chain NAV getter and Chainlink Proof-of-Reserve feed. Adding another wrapper is a simple multisig call. Below are other well-capitalised wrappers that could be whitelisted next:

Wrapper (Ticker)Manager / IssuerNotes
TBILLOpenEdenBVI-regulated vault; mint/redeem 1 USD : 1 TBILL.
STBT / wSTBTMatrixdockRebasing token + non-rebasing wrapper.
bIB01Backed FinanceERC-20 tracker of BlackRock’s 0-1 yr Treasury ETF.
OUSGOndo FinanceNote for qualified purchasers backed by T-Bills & MMFs.
USTBSuperstate40-Act–style tokenised fund holding short-duration Treasuries.

Roadmap

We plan to add Backed’s bIB01 in Q1 2026, followed by Ondo’s OUSG and Superstate’s USTB once their PoR feeds are robust. The practical limit is gas cost, which suggests an upper bound of 10-15 wrappers before rebalancing becomes inefficient.

How Deposits Are Distributed

Each individual deposit is "bundled" into one wrapper, not all wrappers at once. This keeps the per-deposit gas cost low and avoids complex splitting logic. Here’s a phase-by-phase breakdown of what happens when an investor calls `deposit()`:

PhaseOn-Chain ActionPractical Effect
1. Vault Receives USDC`AggregatorVault.deposit()` pulls the user’s USDC and mints them vault shares.The user now holds YieldGuard-shares; underlying cash is still in the vault.
2. Single-Shot AllocationIn the same transaction, `StrategyRouter.allocate(amount)` picks the highest-yield wrapper with available capacity and pushes the entire deposit into it.Exactly one wrapper is hit per deposit call.
3. Cap TestIf the deposit would breach the wrapper’s 60% issuer ceiling, the router skips it and sends the whole amount to the next one. (Partial “split” fills are not implemented yet.)Early deposits fall into the 5% APY TBILL until its cap is hit; later deposits go 100% into the 4.9% wSTBT.
4. Daily RebalanceA keeper runs `rebalance()` every 24h on the aggregate balances. If a high-yield wrapper has capacity, funds are migrated in bulk.Over time the system equalises yields across all investors without ever looping over individual wallets.

Roadmap Note: A "partial-fill" feature that would pro-rata split a single large deposit across wrappers the moment a cap is crossed is planned for a future version (v0.2). Until then, one-wrapper-per-deposit is the intended behaviour.

Why Deposit Timing Still Matters

The vault's operating cost scales with the number of wrappers, not investors. However, the order in which deposits arrive can still affect individual allocations during periods of high demand.

  • Transactions are Sequential: Even if 100 investors click "Deposit" at the same time, the blockchain processes their transactions one by one.
  • State Changes After Each Deposit: Each successful deposit alters the vault's state (e.g., the amount allocated to a specific wrapper).
  • First-Come, First-Served for Caps: When a high-yield wrapper nears its 60% concentration cap, the transaction that fills the remaining capacity gets the last spot. The very next transaction, even moments later, will be routed to the second-best wrapper.

This "arrival-order" effect is most relevant when a wrapper's cap is a constraint. The daily rebalancing process works to smooth out these minor differences over time for all investors.

How Rebalancing Creates Fairness Over Time

While the initial deposit allocation is first-come, first-served, the nightly rebalancing process ensures fairness and yield optimization for all investors over time. This process is collective and operates on the vault's aggregate holdings.

  • One Bulk Operation: The rebalancer does not loop through individual investor accounts. It looks at the total amount in each wrapper (e.g., `$15M` in TBILL, `$10M` in wSTBT) and moves funds in one bulk transaction.
  • Triggered by Spreads: If a yield spread of ≥ 5 basis points opens up and the higher-yield wrapper has capacity, the rebalancer will migrate funds to capture that improved return for the entire vault.
  • Passive Benefit: Individual investors don't need to do anything. They benefit passively as the Net Asset Value (NAV) of their yTBill shares increases from the optimized yield of the underlying assets.

Switching Tolls

To cover the costs of rebalancing (gas, slippage, wrapper fees) and deter excessive trading, a dynamic switching toll is applied. This toll is capped based on TVL (from 3 bps down to 0.5 bps) and is often absorbed by the vault's operating allowance, making most switches free for the investor. Any applied toll is rebated to remaining holders.

The Bottom Line

The protocol only switches wrappers when the expected net benefit clearly outweighs all associated costs, ensuring that every rebalance adds value to the vault.