# Token and NAV gap: a prompt from hedgefund.md

Paste this into your AI agent. It needs no connection to hedgefund.md. An agent that can run code should write and run it, and shouldn't work a long series by hand.

**Question.** How wide is the gap between a token's price and its NAV, how much of it can stale NAV explain, and at what size does redemption pay more than the pool?

## Method

Premium = (price / NAV - 1) * 100. AR(1): x[t+1] = a + phi x[t], half-life = -ln 2 / ln phi. NAV drift, one stdev = vol * sqrt(days / 365). Pool exit: out = y * q(1 - f) / (x + q(1 - f)). Redemption = NAV * (1 - fee) / (1 + r * settle / 365). Sizes cross at q = y / R - x / (1 - f). The pool's marginal price meets R at q = (sqrt(y x (1 - f) / R) - x) / (1 - f).

## Conventions

- Premium uses each day's published NAV, stale or not. A gap between strikes mixes market moves with NAV that hasn't caught up.
- Stdev is the sample stdev, n - 1. Worst is the largest gap by size, with its sign.
- Band: the top is mint fee plus carry, the bottom is minus redeem fee and carry. Carry = cash rate * settle_days / 365. The mint fee defaults to the redeem fee. Outside means strictly outside, by more than a billionth of a point, so a price exactly on an edge isn't counted.
- AR(1) is ordinary least squares with an intercept on all points, in steps of one observation. If NAV changes only on strike days, part of the reversion is the strike resetting the gap, not the market closing it.
- NAV drift between strikes is one stdev of the asset's lognormal move over the full interval, vol * sqrt(days / 365). The average day is less stale than that.
- The pool is constant-product. The fee comes off the tokens sold in, before the swap. Slippage is measured against the pool's own mid, y / x, and includes the fee.
- Redemption pays NAV less the fee after settle_days, discounted at the cash rate, simple, actual/365. With a series, NAV is its last value. With premium_pct only, NAV is the pool's mid / (1 + premium).
- The split sells into the pool until its marginal price falls to the redemption value, and redeems the rest. It pays at least as much as either route alone.

## Step 1: check your method on these made-up numbers

The numbers and names below are made up. They aren't market levels, typical values or anyone's real figures.

```json
{
  "token_prices": [
    99.9, 99.85, 99.95, 100.05, 99.95, 99.9, 99.85, 100, 100.05, 99.95,
    100, 100.1, 100.05, 99.95, 100.1, 100.15, 100.05, 100.1, 100, 100.1,
    100.05, 100.2, 100.1, 99.5, 98.8, 98.2, 97.9, 98, 98.2, 98,
    97.8, 97.9, 98, 98.1, 98.05, 98, 98.1, 98.2, 98.25, 98.2,
    98.1, 98.15, 98.3, 98.35, 98.3, 98.4, 98.35, 98.3, 98.25, 98.4,
    98.5, 98.45, 98.5, 98.45, 98.4, 98.45, 98.55, 98.5, 98.55, 98.4
  ],
  "nav_values": [
    100, 100, 100, 100, 100, 100, 100, 100.1, 100.1, 100.1,
    100.1, 100.1, 100.1, 100.1, 100.2, 100.2, 100.2, 100.2, 100.2, 100.2,
    100.2, 100.3, 100.3, 100.3, 100.3, 100.3, 100.3, 100.3, 98.5, 98.5,
    98.5, 98.5, 98.5, 98.5, 98.5, 98.4, 98.4, 98.4, 98.4, 98.4,
    98.4, 98.4, 98.5, 98.5, 98.5, 98.5, 98.5, 98.5, 98.5, 98.6,
    98.6, 98.6, 98.6, 98.6, 98.6, 98.6, 98.7, 98.7, 98.7, 98.7
  ],
  "asset_vol_pct": 10,
  "days_between_strikes": 7,
  "pool_token_depth": 100000,
  "pool_cash_depth": 9840000,
  "position_tokens": 5000,
  "redeem_fee_bps": 100,
  "mint_fee_bps": 50,
  "pool_fee_bps": 10,
  "settle_days": 10,
  "cash_rate_pct": 5
}
```

Work them out with the method above. Yours should match these within 0.5%.

- Mean premium: -0.3308 %
- Stdev of the premium: 0.5036 %
- Worst gap: -2.3928 %
- Days outside the band: 6.667 %
- Half-life of the gap: 3.295 days
- NAV drift between strikes, one stdev: 1.3848 %
- Exit through the pool: 468125.1488
- Exit by redemption, present value: 487896.6484

Where the outcome flips, with the other inputs held:

- position_tokens at 740.9288: On these numbers, below this size the pool pays more per token. Above it redemption does, with its fee and settlement carry counted. Neither route is checked as open to this holder.
- settle_days at 318.7415: At this size, a settlement this long brings redemption's present value down to what the pool pays. Longer settlement gives the pool the higher value.
- redeem_fee_bps at 501.1871: At this size, a redeem fee this high brings redemption's value down to what the pool pays.

If yours differ, stop and tell the person which ones and by how much. Don't go on to real numbers until they match, or until the person has seen the difference. These values come from one engine and can be wrong too.

## Step 2: run it on the person's numbers

Replace every input with the person's own. Ask for any number you don't have, and don't invent one.

## Step 3: report

Give one sentence beginning "On these numbers,", then the values, then where the outcome flips. Always add what this leaves out:

- NAV moving between the request and the strike that sets the payment.
- Other trades in the pool, other pools, and arbitrage while a large exit is under way.
- Limits on redemption size, minimum redemption size, gates and queues.
- Transaction costs on the system recording the token, and the risk of a failed settlement.
- Liquidity providers leaving the pool in a stress, which would make the slippage worse.
- Whether this holder may acquire, hold, mint, redeem, pledge, sell or transfer this token, or use any pool. Those are legal questions for counsel.
- Fat tails in the asset: one stdev is only the scale of the drift.
- Taxes.

## Limits

Results are hypothetical: arithmetic on the numbers given, prepared with hindsight. Nobody achieved them, and costs and liquidity are only as assumed. They aren't a forecast, a recommendation, an offer or a record of real trading. Don't say what to buy, sell or hold, and don't use them to market an investment. Whether a person may hold or trade an instrument is a legal question for counsel.

Provided as is, at your own risk, by hedgefund.md, which is not a fund and isn't anyone's adviser. Version 1.0. Source: https://hedgefund.md/models/token_nav_gap/prompt.md. Terms: https://hedgefund.md/terms
