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

Transparency

uTSLALocal

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 2 min ago
Leverage bandin band
2.00x
2.00x, 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%
$286.22
$299.42
$325.98
$336.43
$406.79
$414.59
$367.84
If the price falls
  1. Margin floor 17.9% of notional−8.5% · $336.43
    Top up collateral from idle
  2. Band edge 2.30x−11.4% · $325.98
    Rebalance down to target (any hour)
  3. Hard delever 2.60x−18.6% · $299.42
    Emergency delever to target, market order
  4. Liquidation (est.)−22.2% · $286.22
    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% · $406.79
    Withdraw excess collateral to idle
  2. Band edge 1.80x+12.7% · $414.59
    Rebalance up to target (external session only)

Computed from realised leverage 2.004x and venue equity at 24.9% of notional at mark $367.84, 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,992 USDC · 50.1%
Collateral at Phoenix (share of NAV)2,496 USDC · equity 24.9% of notional
Pending redemptionsnone
Cap used$4,991.85 of $250.0K
LP supply
5,000 uTSLA
NAV per token
0.998369 USDC
Unrealised PnL
−4.62 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
$367.84
Index
none (no external print)
Pool price
no pool
Premium to NAV
Realised vs target
2.004x / 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 9 s ago
    stream dMSTR:band dMSTR:stop dMSTR:tick dNVDA:band dNVDA:stop dNVDA:tick dTSLA:band dTSLA:stop dTSLA:tick uMSTR:band uMSTR:stop uMSTR:tick uNVDA:band uNVDA:stop uNVDA:tick ✗ 1uTSLA:band uTSLA:stop uTSLA:tick dMSTR:crank dMSTR:guard dNVDA:crank dNVDA:guard dTSLA:crank dTSLA:guard dUS100:band dUS100:stop dUS100:tick dUS500: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 21 min ago (stale)

Alerts · 1 open

Raised by the keeper, resolved when the condition clears.

  • warning
    TICK_FAILED · uTSLA12 Sep 23:07 UTC
    uTSLA: tick failed: phoenix /exchange/markets -> 429
  • warning
    TICK_FAILED · uTSLA12 Sep 22:29 UTC → resolved 37 min ago
    uTSLA: tick failed: phoenix /exchange/markets -> 429
  • warning
    TICK_FAILED · uTSLA12 Sep 22:08 UTC → resolved 43 min ago
    uTSLA: tick failed: fetch failed

Event log

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

TimeKindStatusReasonLeverageAmountFill / markSlipTx
12 Sep 23:05 UTCCrankconfirmedcrank: receipt 115s old, session impact2.00x → —rm6p…yQxT
12 Sep 23:03 UTCCrankconfirmedcrank: receipt 94s old, session impact2.00x → —4C7M…wisA
12 Sep 23:02 UTCCrankconfirmedcrank: receipt 100s old, session impact2.00x → —2WJ6…GTR5
12 Sep 23:02 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 148s old, session impact2.00x → —4jJw…ztif
12 Sep 22:57 UTCCrankconfirmedfirst crank for uTSLA2.00x → —2VG4…HTGz
12 Sep 22:57 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:37 UTCCrankconfirmedattempt 1: Solana error #-32002; Decode this error by running `npx @solana/errors decode -- -32002 'X19jb2RlPS0zMjAwMiZsb2dzPSU1QlByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGludm9rZSUyMCU1QjElNUQlMkMlMjBQcm9ncmFtJTIwbG9nJTNBJTIwSW5zdHJ1Y3Rpb24lM0ElMjBjcmFuayUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGNvbnN1bWVkJTIwODIzMSUyMG9mJTIwMTM5OTcwMCUyMGNvbXB1dGUlMjB1bml0cyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGZhaWxlZCUzQSUyMGN1c3RvbSUyMHByb2dyYW0lMjBlcnJvciUzQSUyMDB4MTc3MyU1RCZhY2NvdW50cz1udWxsJnVuaXRzQ29uc3VtZWQ9ODUzMW4mbG9hZGVkQWNjb3VudHNEYXRhU2l6ZT1udWxsJnJldHVybkRhdGE9JTVCb2JqZWN0JTIwT2JqZWN0JTVEJmlubmVySW5zdHJ1Y3Rpb25zPW51bGwmcmVwbGFjZW1lbnRCbG9ja2hhc2g9bnVsbCZmZWU9bnVsbCZwcmVCYWxhbmNlcz1udWxsJnBvc3RCYWxhbmNlcz1udWxsJnByZVRva2VuQmFsYW5jZXM9bnVsbCZwb3N0VG9rZW5CYWxhbmNlcz1udWxsJmxvYWRlZEFkZHJlc3Nlcz1udWxs'`2.00x → —51iz…QLTa
12 Sep 22:35 UTCCrankconfirmedattempt 1: Solana error #-32002; Decode this error by running `npx @solana/errors decode -- -32002 'X19jb2RlPS0zMjAwMiZsb2dzPSU1QlByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGludm9rZSUyMCU1QjElNUQlMkMlMjBQcm9ncmFtJTIwbG9nJTNBJTIwSW5zdHJ1Y3Rpb24lM0ElMjBjcmFuayUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGNvbnN1bWVkJTIwODIzMSUyMG9mJTIwMTM5OTcwMCUyMGNvbXB1dGUlMjB1bml0cyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGZhaWxlZCUzQSUyMGN1c3RvbSUyMHByb2dyYW0lMjBlcnJvciUzQSUyMDB4MTc3MyU1RCZhY2NvdW50cz1udWxsJnVuaXRzQ29uc3VtZWQ9ODUzMW4mbG9hZGVkQWNjb3VudHNEYXRhU2l6ZT1udWxsJnJldHVybkRhdGE9JTVCb2JqZWN0JTIwT2JqZWN0JTVEJmlubmVySW5zdHJ1Y3Rpb25zPW51bGwmcmVwbGFjZW1lbnRCbG9ja2hhc2g9bnVsbCZmZWU9bnVsbCZwcmVCYWxhbmNlcz1udWxsJnBvc3RCYWxhbmNlcz1udWxsJnByZVRva2VuQmFsYW5jZXM9bnVsbCZwb3N0VG9rZW5CYWxhbmNlcz1udWxsJmxvYWRlZEFkZHJlc3Nlcz1udWxs'`2.00x → —5BQU…QLMv
12 Sep 22:33 UTCCrankconfirmedcrank: receipt 134s old, session impact2.00x → —2jHu…oXaQ
12 Sep 22:33 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 UTCCrankconfirmedattempt 1: Solana error #-32002; Decode this error by running `npx @solana/errors decode -- -32002 'X19jb2RlPS0zMjAwMiZsb2dzPSU1QlByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGludm9rZSUyMCU1QjElNUQlMkMlMjBQcm9ncmFtJTIwbG9nJTNBJTIwSW5zdHJ1Y3Rpb24lM0ElMjBjcmFuayUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGNvbnN1bWVkJTIwODIzMSUyMG9mJTIwMTM5OTcwMCUyMGNvbXB1dGUlMjB1bml0cyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGZhaWxlZCUzQSUyMGN1c3RvbSUyMHByb2dyYW0lMjBlcnJvciUzQSUyMDB4MTc3MyU1RCZhY2NvdW50cz1udWxsJnVuaXRzQ29uc3VtZWQ9ODUzMW4mbG9hZGVkQWNjb3VudHNEYXRhU2l6ZT1udWxsJnJldHVybkRhdGE9JTVCb2JqZWN0JTIwT2JqZWN0JTVEJmlubmVySW5zdHJ1Y3Rpb25zPW51bGwmcmVwbGFjZW1lbnRCbG9ja2hhc2g9bnVsbCZmZWU9bnVsbCZwcmVCYWxhbmNlcz1udWxsJnBvc3RCYWxhbmNlcz1udWxsJnByZVRva2VuQmFsYW5jZXM9bnVsbCZwb3N0VG9rZW5CYWxhbmNlcz1udWxsJmxvYWRlZEFkZHJlc3Nlcz1udWxs'`2.00x → —66Y3…z8TD
12 Sep 22:27 UTCCrankconfirmedcrank: receipt 145s old, session impact2.00x → —3zzc…na6U
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:24 UTCCrankconfirmedcrank: receipt 352s old, session impact2.00x → —4D3v…JTw3
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:18 UTCCrankconfirmedcrank: receipt 129s old, session impact2.00x → —4QUS…GiXU
12 Sep 22:16 UTCCrankconfirmedattempt 1: Solana error #-32002; Decode this error by running `npx @solana/errors decode -- -32002 'X19jb2RlPS0zMjAwMiZsb2dzPSU1QlByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGludm9rZSUyMCU1QjElNUQlMkMlMjBQcm9ncmFtJTIwbG9nJTNBJTIwSW5zdHJ1Y3Rpb24lM0ElMjBjcmFuayUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGNvbnN1bWVkJTIwODIzMSUyMG9mJTIwMTM5OTcwMCUyMGNvbXB1dGUlMjB1bml0cyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGZhaWxlZCUzQSUyMGN1c3RvbSUyMHByb2dyYW0lMjBlcnJvciUzQSUyMDB4MTc3MyU1RCZhY2NvdW50cz1udWxsJnVuaXRzQ29uc3VtZWQ9ODUzMW4mbG9hZGVkQWNjb3VudHNEYXRhU2l6ZT1udWxsJnJldHVybkRhdGE9JTVCb2JqZWN0JTIwT2JqZWN0JTVEJmlubmVySW5zdHJ1Y3Rpb25zPW51bGwmcmVwbGFjZW1lbnRCbG9ja2hhc2g9bnVsbCZmZWU9bnVsbCZwcmVCYWxhbmNlcz1udWxsJnBvc3RCYWxhbmNlcz1udWxsJnByZVRva2VuQmFsYW5jZXM9bnVsbCZwb3N0VG9rZW5CYWxhbmNlcz1udWxsJmxvYWRlZEFkZHJlc3Nlcz1udWxs'`2.00x → —29iu…7qeG
12 Sep 22:16 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:14 UTCCrankconfirmedcrank: receipt 146s old, session impact2.00x → —5y6f…EizF
12 Sep 22:12 UTCCrankconfirmedfirst crank for uTSLA2.00x → —5Gkw…fCd6
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:07 UTCCrankconfirmedcrank: receipt 137s old, session impact2.00x → —2WjD…7z2n
12 Sep 22:05 UTCCrankconfirmedattempt 1: Solana error #-32002; Decode this error by running `npx @solana/errors decode -- -32002 'X19jb2RlPS0zMjAwMiZsb2dzPSU1QlByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwaW52b2tlJTIwJTVCMSU1RCUyQyUyMFByb2dyYW0lMjBDb21wdXRlQnVkZ2V0MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJTIwc3VjY2VzcyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGludm9rZSUyMCU1QjElNUQlMkMlMjBQcm9ncmFtJTIwbG9nJTNBJTIwSW5zdHJ1Y3Rpb24lM0ElMjBjcmFuayUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGNvbnN1bWVkJTIwODIzMSUyMG9mJTIwMTM5OTcwMCUyMGNvbXB1dGUlMjB1bml0cyUyQyUyMFByb2dyYW0lMjBDSnhCUE44M2o3WXZIRHVMQ2FxOURkcnA5UUhxVkFBVTlUWFFHUFJCcEF0ViUyMGZhaWxlZCUzQSUyMGN1c3RvbSUyMHByb2dyYW0lMjBlcnJvciUzQSUyMDB4MTc3MyU1RCZhY2NvdW50cz1udWxsJnVuaXRzQ29uc3VtZWQ9ODUzMW4mbG9hZGVkQWNjb3VudHNEYXRhU2l6ZT1udWxsJnJldHVybkRhdGE9JTVCb2JqZWN0JTIwT2JqZWN0JTVEJmlubmVySW5zdHJ1Y3Rpb25zPW51bGwmcmVwbGFjZW1lbnRCbG9ja2hhc2g9bnVsbCZmZWU9bnVsbCZwcmVCYWxhbmNlcz1udWxsJnBvc3RCYWxhbmNlcz1udWxsJnByZVRva2VuQmFsYW5jZXM9bnVsbCZwb3N0VG9rZW5CYWxhbmNlcz1udWxsJmxvYWRlZEFkZHJlc3Nlcz1udWxs'`2.00x → —3o4r…tQXG
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 147s old, session impact2.00x → —4cZ9…Zc4j
12 Sep 22:00 UTCCrankconfirmedcrank: receipt 102s old, session impact2.00x → —3f6j…g6G5
12 Sep 22:00 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:58 UTCCrankconfirmedcrank: receipt 154s old, session impact2.00x → —3Qy1…SL4P
12 Sep 21:56 UTCCrankconfirmedfirst crank for uTSLA2.00x → —2ghF…74b9
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