Demo on a mainnet fork: real Phoenix prices, test USDC, nothing here is real money. What that means
upside

Transparency

uNVDALocal

What backs the token, where the keeper’s lines are, and every action it has taken. Read straight from the keeper’s own records.

Last snapshot 9 s ago
Leverage bandin band
2.01x
2.01x, band 1.80x to 2.30x
1.80x2.00x2.30x2.60x
Venue equity / notionalbetween floor and ceiling
24.9%
24.9%, band 17.9% to 32.1%
17.9%25%32.1%17.9%

Action ladder

At what underlying move does each keeper action fire, from the latest snapshot and this token's policy.

impact pricing
−19%
−13%
−6%
+6%
+13%
+19%
$169.90
$178.00
$193.80
$199.71
$241.47
$246.45
$218.41
If the price falls
  1. Margin floor 17.9% of notional−8.6% · $199.71
    Top up collateral from idle
  2. Band edge 2.30x−11.3% · $193.80
    Rebalance down to target (any hour)
  3. Hard delever 2.60x−18.5% · $178.00
    Emergency delever to target, market order
  4. Liquidation (est.)−22.2% · $169.90
    Phoenix liquidates the account; the stop and top-ups sit well before this
If the price rises
  1. Margin ceiling 32.1% of notional+10.6% · $241.47
    Withdraw excess collateral to idle
  2. Band edge 1.80x+12.8% · $246.45
    Rebalance up to target (external session only)

Computed from realised leverage 2.006x and venue equity at 24.9% of notional at mark $218.41, holding everything else fixed. Margin distances follow this token's own policy: lower tiers post more collateral, so a 2x token has further to fall than a 3x one (D27). Liquidation is where equity reaches the 3.5% maintenance margin Phoenix requires on notional (registry value, Q13); the on-chain stop and the keeper's top-ups are designed to act well before it. Estimates for reading, not for trading.

Leverage over time

Realised leverage against the band, the target and the hard-delever line. Markers are keeper actions; hover for reason, before/after and fill.

Realised leverageBand 1.8x2.3xHard delever 2.6xRebalanceEmergency delever

Margin over time

Venue equity (collateral plus unrealised PnL) as a share of notional, against the floor, target and ceiling. Distances do not depend on leverage. Top-ups and withdrawals are the keeper's margin loop; the stop is refreshed after every rebalance.

Venue equity / notionalFloor 17.9% – ceiling 32.1%Top-upWithdraw excessStop set

Buffers and capacity

Idle USDC pays instant redemptions and Jupiter sells; collateral sits at Phoenix; the cap bounds TVL against Phoenix depth.

Idle USDC in vault2,500 of 4,988 USDC · 50.1%
Collateral at Phoenix (share of NAV)2,496 USDC · equity 24.9% of notional
Pending redemptionsnone
Cap used$4,988.07 of $250.0K
LP supply
5,000 uNVDA
NAV per token
0.997613 USDC
Unrealised PnL
−0.96 USDC
Funding (annualised)

Session

How the underlying is being priced right now.

impact pricingImpact pricing

The underlying exchange is closed. Phoenix prices the market from its own order flow, bounded to 1/max-leverage from the last external print. NAV marks to that price. Only defensive rebalances run; NAV shows "internal pricing".

Mark
$218.41
Index
none (no external print)
Pool price
no pool
Premium to NAV
Realised vs target
2.006x / 2.0x

Keeper liveness

Heartbeats, halted flag and per-loop status. Two keepers on different RPCs are the target.

  • keeper-stagingv0.1.0 · surfpool#0 · heartbeat 11 s ago
    stream dMSTR:band dMSTR:stop dMSTR:tick dNVDA:band dNVDA:stop dNVDA:tick ✗ 1dTSLA:band dTSLA:stop dTSLA:tick uMSTR:band uMSTR:stop uMSTR:tick uNVDA:band uNVDA:stop uNVDA:tick uTSLA:band uTSLA:stop uTSLA:tick dMSTR:crank dMSTR:guard dNVDA:crank dNVDA:guard dTSLA:crank dTSLA:guard dUS100:band dUS100:stop dUS100:tick ✗ 1dUS500:band dUS500:stop dUS500:tick uMSTR:crank uMSTR:guard uNVDA:crank uNVDA:guard uTSLA:crank uTSLA:guard uUS100:band uUS100:stop uUS100:tick uUS500:band uUS500:stop uUS500:tick dMSTR:inflow dMSTR:margin dMSTR:redeem dNVDA:inflow dNVDA:margin dNVDA:redeem dTSLA:inflow dTSLA:margin dTSLA:redeem dUS100:crank dUS100:guard dUS500:crank dUS500:guard uMSTR:inflow uMSTR:margin uMSTR:redeem uNVDA:inflow uNVDA:margin uNVDA:redeem uTSLA:inflow uTSLA:margin uTSLA:redeem uUS100:crank uUS100:guard uUS500:crank uUS500:guard dMSTR:harvest ✗ 1dNVDA:harvest ✗ 1dTSLA:harvest ✗ 1dUS100:inflow dUS100:margin dUS100:redeem dUS500:inflow dUS500:margin dUS500:redeem uMSTR:harvest ✗ 1uNVDA:harvest ✗ 1uTSLA:harvest ✗ 1uUS100:inflow uUS100:margin uUS100:redeem uUS500:inflow uUS500:margin uUS500:redeem dUS100:harvest ✗ 1dUS500:harvest ✗ 1uUS100:harvest ✗ 1uUS500:harvest ✗ 1
  • keeper-ahaltedv0.1.0 · test · heartbeat 24 min ago (stale)

Alerts

Raised by the keeper, resolved when the condition clears.

  • warning
    TICK_FAILED · uNVDA12 Sep 23:06 UTC → resolved 2 min ago
    uNVDA: tick failed: Hawkeye return data expected at least 8 bytes, got 0
  • warning
    DEPTH_UNAVAILABLE · uNVDA12 Sep 23:03 UTC → resolved 4 min ago
    uNVDA: order-book depth unreadable; expansion is refused and defensive slices use the fallback depth
  • warning
    TICK_FAILED · uNVDA12 Sep 23:02 UTC → resolved 6 min ago
    uNVDA: tick failed: phoenix /exchange/markets -> 429
  • warning
    DEPTH_UNAVAILABLE · uNVDA12 Sep 22:37 UTC → resolved 12 min ago
    uNVDA: order-book depth unreadable; expansion is refused and defensive slices use the fallback depth
  • warning
    TICK_FAILED · uNVDA12 Sep 22:33 UTC → resolved 34 min ago
    uNVDA: tick failed: phoenix /exchange/markets -> 429
  • warning
    TICK_FAILED · uNVDA12 Sep 22:29 UTC → resolved 38 min ago
    uNVDA: tick failed: Hawkeye return data expected at least 8 bytes, got 0
  • warning
    DEPTH_UNAVAILABLE · uNVDA12 Sep 22:14 UTC → resolved 53 min ago
    uNVDA: order-book depth unreadable; expansion is refused and defensive slices use the fallback depth
  • warning
    TICK_FAILED · uNVDA12 Sep 22:12 UTC → resolved 55 min ago
    uNVDA: tick failed: Hawkeye return data expected at least 8 bytes, got 0
  • warning
    DEPTH_UNAVAILABLE · uNVDA12 Sep 22:00 UTC → resolved 1.1 h ago
    uNVDA: order-book depth unreadable; expansion is refused and defensive slices use the fallback depth

Event log

Every action planned, sent or observed for this token, newest first.

TimeKindStatusReasonLeverageAmountFill / markSlipTx
12 Sep 23:09 UTCCranksentattempt 1: Solana error #-32002; Decode this error by running `npx @solana/errors decode -- -32002 'X19jb2RlPS0zMjAwMiZsb2dzPSU1QlByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGludm9rZSUyMCU1QjElNUQlMkMlMjBQcm9ncmFtJTIwbG9nJTNBJTIwSW5zdHJ1Y3Rpb24lM0ElMjBjcmFuayUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGNvbnN1bWVkJTIwODIzMSUyMG9mJTIwMTM5OTcwMCUyMGNvbXB1dGUlMjB1bml0cyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGZhaWxlZCUzQSUyMGN1c3RvbSUyMHByb2dyYW0lMjBlcnJvciUzQSUyMDB4MTc3MyU1RCZhY2NvdW50cz1udWxsJnVuaXRzQ29uc3VtZWQ9ODUzMW4mbG9hZGVkQWNjb3VudHNEYXRhU2l6ZT1udWxsJnJldHVybkRhdGE9JTVCb2JqZWN0JTIwT2JqZWN0JTVEJmlubmVySW5zdHJ1Y3Rpb25zPW51bGwmcmVwbGFjZW1lbnRCbG9ja2hhc2g9bnVsbCZmZWU9bnVsbCZwcmVCYWxhbmNlcz1udWxsJnBvc3RCYWxhbmNlcz1udWxsJnByZVRva2VuQmFsYW5jZXM9bnVsbCZwb3N0VG9rZW5CYWxhbmNlcz1udWxsJmxvYWRlZEFkZHJlc3Nlcz1udWxs'`2.01x → —
12 Sep 23:09 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 23:08 UTCCrankconfirmedcrank: receipt 234s old, session impact2.00x → —38CA…FfBQ
12 Sep 23:06 UTCCrankconfirmedcrank: receipt 126s old, session impact2.00x → —4t4V…RsNG
12 Sep 23:04 UTCCrankconfirmedcrank: receipt 209s old, session impact2.00x → —t6Zi…93HM
12 Sep 23:04 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 23:00 UTCCrankconfirmedcrank: receipt 111s old, session impact2.00x → —2rJP…dhzd
12 Sep 22:58 UTCCrankconfirmedfirst crank for uNVDA2.01x → —4A2a…Q4um
12 Sep 22:58 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 22:35 UTCCrankconfirmedcrank: receipt 255s old, session impact2.00x → —ZH81…kaAw
12 Sep 22:35 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 22:31 UTCCrankconfirmedcrank: receipt 229s old, session impact2.00x → —5yvG…Ye3g
12 Sep 22:27 UTCCrankconfirmedcrank: receipt 135s old, session impact2.01x → —23hG…MJxW
12 Sep 22:27 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 22:25 UTCCrankconfirmedcrank: receipt 148s old, session impact2.00x → —66ez…zbXQ
12 Sep 22:22 UTCCrankconfirmedcrank: receipt 213s old, session impact2.01x → —36zW…AFhv
12 Sep 22:22 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 22:19 UTCCrankconfirmedcrank: receipt 119s old, session impact2.00x → —5cgR…8MrL
12 Sep 22:17 UTCCrankconfirmedcrank: receipt 132s old, session impact2.00x → —31Ln…kosp
12 Sep 22:17 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 22:15 UTCCrankconfirmedfirst crank for uNVDA2.00x → —4yzN…ps9i
12 Sep 22:12 UTCCrankconfirmedfirst crank for uNVDA2.00x → —3cUk…fZSk
12 Sep 22:12 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 22:08 UTCCrankconfirmedattempt 1: Solana error #-32002; Decode this error by running `npx @solana/errors decode -- -32002 'X19jb2RlPS0zMjAwMiZsb2dzPSU1QlByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGludm9rZSUyMCU1QjElNUQlMkMlMjBQcm9ncmFtJTIwbG9nJTNBJTIwSW5zdHJ1Y3Rpb24lM0ElMjBjcmFuayUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGNvbnN1bWVkJTIwODIzMSUyMG9mJTIwMTM5OTcwMCUyMGNvbXB1dGUlMjB1bml0cyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGZhaWxlZCUzQSUyMGN1c3RvbSUyMHByb2dyYW0lMjBlcnJvciUzQSUyMDB4MTc3MyU1RCZhY2NvdW50cz1udWxsJnVuaXRzQ29uc3VtZWQ9ODUzMW4mbG9hZGVkQWNjb3VudHNEYXRhU2l6ZT1udWxsJnJldHVybkRhdGE9JTVCb2JqZWN0JTIwT2JqZWN0JTVEJmlubmVySW5zdHJ1Y3Rpb25zPW51bGwmcmVwbGFjZW1lbnRCbG9ja2hhc2g9bnVsbCZmZWU9bnVsbCZwcmVCYWxhbmNlcz1udWxsJnBvc3RCYWxhbmNlcz1udWxsJnByZVRva2VuQmFsYW5jZXM9bnVsbCZwb3N0VG9rZW5CYWxhbmNlcz1udWxsJmxvYWRlZEFkZHJlc3Nlcz1udWxs'`2.00x → —5qKB…sfxx
12 Sep 22:05 UTCCrankconfirmedcrank: receipt 151s old, session impact2.00x → —62pz…WnA4
12 Sep 22:05 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 22:03 UTCCrankconfirmedcrank: receipt 132s old, session impact2.00x → —363e…StSm
12 Sep 22:01 UTCCrankconfirmedcrank: receipt 114s old, session impact2.00x → —4aBu…xcQ4
12 Sep 22:01 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection
12 Sep 21:59 UTCCrankconfirmedcrank: receipt 139s old, session impact2.00x → —4PJC…XGb5
12 Sep 21:56 UTCCrankconfirmedfirst crank for uNVDA2.00x → —5Jqm…ZEzt
12 Sep 21:56 UTCCrankskippedthe adaptor cannot place a conditional stop yet (#8); there is no keeper-independent backstop until it can, so keeper uptime is the only protection