Strategie LP su Uniswap v3 e hedging
Una posizione passiva Uniswap v3 è un insieme di ordini limite a riposo che non è possibile annullare. Uno attivo (intervallo scelto, ricentrato su un programma, coperto da un colpevole) è un libro di market-making e dovrebbe essere gestito come tale. Questa ristrutturazione cambia ogni decisione. Un market maker valuta le quotazioni in base a una previsione di volatilità, non a una sensazione viscerale. Un market maker tratta ogni riquotazione come un costo, non come un riflesso. Un market maker conosce in ogni momento il suo delta di inventario e decide deliberatamente se mantenerlo o coprirlo. E un market maker sa che alcune delle sue controparti sono più veloci e meglio informate, e lo sconta.
L'articolo sulla liquidità concentrata ha costruito le primitive: tick, liquidità , le formule per l'importo del token, feeGrowthInside, e il fatto che una posizione LP è un payoff a breve volatilità il cui costo di gestione è il rapporto perdita contro ribilanciamento (LVR). Questo pezzo è il manuale dell'operatore sopra quella base. Ridimensioniamo l'intervallo da una previsione della varianza, inquadriamo la decisione di ribilanciamento come un'operazione esplicita tra guadagno di commissione atteso e costo realizzato, ricaviamo il delta di posizione direttamente dalla funzione di valore e lo neutralizziamo con futures perpetui, consideriamo la liquidità just-in-time (JIT) come il caso estremo di LPing attivo e chiudiamo con i modi in cui un onesto backtest on-chain di tutto ciò può mentirti. In tutto, il modello mentale è Avellaneda–Stoikov con due brutali modifiche: le tue quotazioni sono su un registro pubblico prima che si riempiano, e ogni riquotazione costa gas.
Ampiezza dell'intervallo da una previsione di volatilità
Il singolo parametro più importante di un LP attivo è l'ampiezza del range, ed è una scommessa di pura volatilità. Troppo ampio e diluirai la tua liquidità tra tick che raramente vengono scambiati, guadagnando commissioni al tasso anemico di un pool v2. Troppo ristretto e concentri magnificamente la profondità: fino a quando il prezzo non esce dal tuo range, vai al 100% nell'asset in perdita e non guadagni nulla finché non ti riequilibri (cristallizzando la perdita di divergenza lungo il percorso). L'ampiezza ottimale è quella che mantiene il prezzo all'interno dell'intervallo abbastanza spesso da far sì che la tariffa concentrata ripaghi più che l'LVR amplificato dalla concentrazione. Questa è una dichiarazione sulla distribuzione dei rendimenti futuri, quindi la dimensioni da una previsione di tale distribuzione.
Modello del prezzo logaritmico su un orizzonte di mantenimento come approssimativamente , con la volatilità per periodo. Un simmetrico -l'intervallo sigma nel prezzo logaritmico è
COSÌ E . Scegliere sta scegliendo la probabilità di rimanere nell'intervallo: mantiene il prezzo all'interno per circa il 68% degli orizzonti, per circa il 95%. Più ampio negozia il tasso di commissione per un periodo di tempo compreso nell'intervallo di tempo e il punto ottimale dipende dal livello di commissione e dal regime di volume, che è esattamente la quantità che un market maker prevede anziché indovinare.
La traduzione in parametri on-chain è di una riga, perché i tick sono log-prezzo. Da , l'indice di spunta è , E , quindi la metà della larghezza in tick è approssimativamente . Aggancia alla spaziatura dei tick del pool e hai i tuoi limiti:
import numpy as np
TICK = np.log(1.0001) # ≈ 1.0000e-4, one tick in log-price
def range_from_vol(price, sigma_per_day, horizon_days, k=1.0, spacing=10):
"""Symmetric k-sigma range -> tick bounds for a v3 position.
`price` is the RAW pool price (token1/token0, base units)."""
sig_h = sigma_per_day * np.sqrt(horizon_days) # vol over the horizon
i0 = round(np.log(price) / TICK) # current tick
half = round(k * sig_h / TICK) # half-width in ticks
lower = ((i0 - half) // spacing) * spacing # floor to spacing
upper = -(-(i0 + half) // spacing) * spacing # ceil to spacing
return lower, upper, np.exp(lower*TICK), np.exp(upper*TICK)
Un numero elaborato fissa l'intuizione. Prendi ETH con un volume giornaliero previsto del 4%, un orizzonte di ricentramento di una settimana ( giorni) e . Poi , quindi l'intervallo si estende , cioè approssimativamente – circa a banda, o le zecche scattavano alla spaziatura. L'ampiezza è lineare nella previsione vol (al primo ordine nello spazio logaritmico), che è il punto: la tua concentrazione di liquidità dovrebbe respirare con quella del mercato, non sedersi a uno statico "±10% perché sembrava giusto il mese scorso". Varia le due manopole: il regime e la fiducia - e la banda si muove nel modo in cui si muove lo spread quotato da un market maker:
| Previsioni giornaliere | Regime | mezza larghezza | mezza larghezza | ca. zecche () |
|---|---|---|---|---|
| 2% | calma | ±5,3% | ±10,6% | ±529 |
| 4% | normale | ±10,6% | ±21,2% | ±1058 |
| 6% | elevato | ±15,9% | ±31,8% | ±1587 |
| 8% | sottolineato | ±21,2% | ±42,3% | ±2116 |
Leggi la tabella come una politica di quotazione, non come una ricerca. Una banda più stretta guadagna una commissione per dollaro più elevata mentre si trova nel range (maggiore profondità per tick), ma esce dal range prima e si ricentra più spesso; una banda più ampia è l'opposto. Il moltiplicatore della liquidità concentrata è la leva: a band quota all'incirca un ordine di grandezza in più di profondità per tick rispetto a una posizione v2 a range completo, e guadagna commissioni a quel multiplo mentre è nel range - ma è anche lo stesso multiplo più esposto a LVR. L'ampiezza dell'intervallo è il punto in cui scegli il tuo punto sulla frontiera della tariffa rispetto al tempo nell'intervallo e la previsione del volume è ciò che ti dice dove si trova quella frontiera oggi.
Un vincolo limita l'estremità stretta: la spaziatura dei tick. I tuoi limiti devono corrispondere alla spaziatura del livello di commissione, quindi l'intervallo minimo che puoi esprimere è impostato dal pool che hai scelto: circa ±10 bp sul livello dello 0,05% (spaziatura 10), ±60 bp sul livello dello 0,30% (spaziatura 60), ±2% sul livello dell'1% (spaziatura 200). Ciò abbina due decisioni che sembrano indipendenti: la selezione del livello tariffario è una selezione in base alla risoluzione dell'intervallo. Una coppia stabile la cui previsione vol vuole una banda di ±0,3% può realizzarla solo sul livello dello 0,05%; provalo sul livello dell'1% e la griglia dei tick ti costringerà almeno otto volte troppo ampio, diluendo proprio la concentrazione per cui stavi pagando la tariffa più alta. Abbina la granularità del livello alla larghezza richiesta dalla previsione, non viceversa.

Dove va vieni? La volatilità realizzata su una finestra finale è la risposta cruda ed è decisamente retrospettiva: ti dice l’intervallo che avresti dovuto impostare la settimana scorsa. Lo strumento giusto è un modello di varianza condizionale che reagisce al regime attuale: una previsione GARCH(1,1) aggregata all'orizzonte, come sviluppato in GARCH volatility Forecasting for crypto. GARCH ti dà e, iterando la ricorsione, an -varianza del passo avanti la cui radice quadrata è la vuoi. L'effetto leva delle criptovalute (vol salta di più durante i movimenti al ribasso) sostiene una variante asimmetrica e lo stesso meccanismo di vol-targeting che ridimensiona una posizione direzionale di ridimensiona un intervallo LP di : direzione opposta, previsione identica. Inserisci quella serie in range_from_vol ad ogni ricentratura e la concentrazione della posizione traccia automaticamente la previsione. Il che solleva la domanda su cui questo articolo si rivolge successivamente: quanto spesso dovresti ricentrare?
Ribilanciamento: il rapporto tra guadagno tariffario e costo realizzato
Il ribilanciamento eccessivo è il principale distruttore dei rendimenti degli LP al dettaglio, ed è un killer subdolo perché ogni individuo che si ricentra si sente responsabile. Il prezzo si è spostato verso il limite del tuo intervallo, quindi ti sei concentrato su "rimanere attivo". Ma un ricentramento v3 non è una riquotazione gratuita su un CEX. Sono tre i costi cumulativi:
- Gas: brucia la vecchia posizione, crea quella nuova e (di solito) effettua uno scambio per riequilibrare l'inventario. Sulla mainnet si tratta di un costo fisso per ciclo non banale, brutale per piccole posizioni.
- Costo di scambio: per ricentrarlo devi riportare il tuo inventario sbilanciato verso il nuovo rapporto dell'intervallo, pagando la commissione di scambio e l'impatto del prezzo su tale operazione.
- LVR cristallizzato: questo è quello invisibile. Mentre il prezzo oscillava, la posizione accumulava perdite per divergenza sulla carta. Il mantenimento del prezzo durante un viaggio di andata e ritorno ne recupererebbe gran parte (mantieni le commissioni, restituisci l'oscillazione dell'inventario). La ricentratura realizza quella perdita: vendi l'asset in cui sei pesante, a un prezzo basso, e resetti. Ogni recentetore converte la LVR cartacea in LVR prenotata.
Quindi la decisione di ribilanciamento non è "sono vicino al limite?" ma il calcolo di riquotazione di un market maker: l'aumento futuro previsto delle commissioni da una posizione meglio centrata supera il costo realizzato per arrivarci? Questo è strutturalmente il problema del controllo dei costi di transazione: la politica ottimale è una banda di non ribilanciamento attorno al centro, non un filo di allarme. All'interno della banda lasci che l'inventario vada alla deriva e continui a riscuotere le commissioni; agisci solo quando il beneficio atteso cancella il costo.
def should_rebalance(pos, price, fee_apr, sigma, gas_usd, swap_bps):
"""Rebalance only if expected fee uplift beats the realized recenter cost."""
V = pos.value(price)
recenter_cost = (gas_usd
+ swap_bps * 1e-4 * pos.inventory_to_swap(price) # fee+impact
+ pos.crystallized_lvr(price)) # the hidden one
tau = pos.expected_time_in_range(price, sigma) # horizon until next recenter
fee_uplift = (pos.fee_rate_centered(price) - pos.fee_rate_now(price)) \
* fee_apr * V * tau
return fee_uplift > recenter_cost
Una decisione di riequilibrio con i numeri
Rendilo concreto. Supponiamo che tu abbia una posizione da $50.000 in un pool ETH/USDC dello 0,05%, che il prezzo sia arrivato al limite del tuo intervallo e che il ricentramento solleverebbe la tua acquisizione effettiva delle commissioni da una situazione anemica APR (sei a malapena nel raggio d'azione) torniamo a APR. Le tue previsioni GARCH dicono che un intervallo appena centrato di questa larghezza vale per circa giorni anni prima che ti ricentrassi di nuovo. Il miglioramento lordo è
A fronte di ciò, il costo del ricentramento: 20.000 incrocia a 5 punti base di commissione più impatto per 60. Costo totale realizzato . Da , ricentra, ma nota quanto è vicino e come un picco di gas di 5.000 con le stesse percentuali: il rialzo scende a 25, e non vale la pena fare lo scambio. Il termine di incremento delle commissioni è proporzionale al nozionale; il termine gas no. Questa singola asimmetria è il motivo per cui i piccoli LP della mainnet dovrebbero gestire un raggio ampio e raramente toccato o restarne fuori.
Soglia rispetto a periodica
Due regimi emergono da questa disuguaglianza e rappresentano la risposta onesta al concetto "basato su soglia o periodico". Ribilanciamento della soglia (fascia) – agire quando il prezzo esce da una fascia di tolleranza – è la forma teoricamente corretta, perché condiziona lo stato che conta effettivamente. Ribilanciamento periodico — ricentrare ogni blocchi o ore a prescindere: è un'approssimazione grossolana che è difendibile solo perché è più semplice da eseguire e su cui è più facile ragionare; la sua patologia si sta ricentrando durante il taglio che avrebbe significato invertire gratuitamente, pagando gas e cristallizzando LVR per un viaggio di andata e ritorno che avresti vinto senza fare nulla. Empiricamente, più ampio è il tuo livello tariffario e più alto è il gas, più ampia dovrebbe essere la tua fascia e più rari saranno i tuoi ribilanciamenti: un pool ricentrato all'1% ogni giorno è quasi sempre un fuoco di denaro. Lo scomodo corollario: per molte piccole posizioni sulla mainnet, il termine dell'aumento delle commissioni non cancella mai il termine del gas, e il numero corretto di ribilanciamenti è zero: imposta un intervallo ampio una volta e lascialo, oppure non eseguire affatto LP.
Questo è anche il motivo per cui la sede conta tanto quanto la strategia. L’intera disuguaglianza è dominata dal termine del gas sulla rete principale di Ethereum, dove un ciclo di riequilibrio costa denaro reale; su un L2 (Arbitrum, Base, Ottimismo) lo stesso ciclo costa centesimi, quindi crolla, la banda che lo cancella si restringe e l'LP attivo a raggio ristretto con frequente ricentramento diventa praticabile esattamente per le piccole posizioni che non potrebbero mai permetterselo su L1. Questa non è una nota a piè di pagina: è il motivo per cui le strategie attive di LP sono in gran parte passate alle L2 e perché "quanto spesso ribilanciare" ha una risposta diversa su ogni catena. Tuttavia, i termini dell’LVR e dei costi di swap non si riducono con il gas, quindi il gas a buon mercato abbassa la barriera tanto verso un ribilanciamento eccessivo quanto verso un ribilanciamento sensato; la disciplina della disuguaglianza conta più laddove il gas smette di imporla per te.
Esiste una terza opzione che evita completamente il ricentramento: l'intervallo unilaterale. Invece di una banda simmetrica che fai scorrere per seguire il prezzo, posiziona un intervallo asimmetrico che esprima una visione: liquidità solo sotto il punto spot se sei felice di accumulare l'asset durante la discesa, solo sopra se vuoi distribuirlo durante la salita. Questo è il caso d'uso dell'ordine limite sulla catena e trasforma un "ribilanciamento" in una "ricarica": quando un intervallo unilaterale si riempie completamente (il prezzo lo attraversa), hai eseguito l'acquisto o la vendita previsti a un prezzo medio maggiorato e la decisione è se riarmare, non se inseguire. Per i mandati di accumulazione e distribuzione domina il ricentramento simmetrico, perché l’oscillazione delle scorte che combatteresti con una copertura è la posizione che effettivamente volevi.

Vale la pena sottolineare il collegamento con l'LVR, perché collega l'intera serie: la somma delle perdite di ricentramento realizzate nel corso della vita di una posizione, misurata correttamente, converge all'LVR che l'analisi IL/LVR prevede dalla varianza realizzata del percorso del prezzo. Il ribilanciamento non evita l'LVR; sceglie quando pagarlo e in quale valuta. Ribilancia troppo spesso e pagherai anche commissioni di gas e swap oltre all'LVR che avresti pagato comunque. Ecco perché il riequilibrio eccessivo domina le modalità di fallimento: si tratta dell’LVR più una tassa autoinflitta.
Copertura delta dell'LP con futures perpetui
Se l'ampiezza dell'intervallo è la tua scommessa vol e la banda di ribilanciamento è la tua politica di inventario, la copertura delta è il modo in cui separi i due in modo da gestire un libro di market making (vol breve, raccogli lo spread) e non un libro direzionale (ETH lungo o corto per sbaglio). Per effettuare la copertura è necessario il delta della posizione e il bello di v3 è che esce direttamente dalla funzione valore senza numeri.
Il valore di una posizione nel range, in unità di token1 (il numerario, ad esempio USDC), è l'espressione derivata nel pezzo di liquidità concentrata:
Differenziare rispetto al prezzo dell’asset rischioso (token0, ad esempio ETH):
Il delta della posizione è uguale alla quantità di token0 attualmente detenuta dalla posizione. Questa non è una coincidenza e vale la pena soffermarsi su: , COSÌ , e l'invariante AMM rende il valore commerciale marginale sulla curva neutro al prezzo corrente, cioè . I due termini finali si annullano e il delta è solo l'inventario ETH. Un LP è lungo sull'asset rischioso esattamente per l'importo di esso attualmente nella posizione - un numero che si riduce all'aumentare del prezzo (la posizione vende ETH in forza) e cresce al diminuire del prezzo (acquista il calo). Per neutralizzare, tieni un perp corto di taglia in termini di ETH.
def lp_delta(L, price, pb):
"""dV/dP for an in-range v3 position == token0 (ETH) currently held."""
sp, spb = price**0.5, pb**0.5
return L * (1.0/sp - 1.0/spb) # short this many ETH on a perp to neutralize
def lp_gamma(L, price):
return -L / (2.0 * price**1.5) # < 0: short gamma -> hedge must be re-shorted
Il delta dell'intero intervallo, in numeri
Riutilizza la posizione esatta dall'esempio di liquidità concentrata: sulla gamma , coniato a . Il delta è il corto che devi portare con te e cammina monotonicamente da una borsa ETH piena in basso a piatta in alto:
| (USDC/ETH) | Posizione ETH | Siepe perp |
|---|---|---|
| 2500 (limite inferiore) | 2.287 | corto 2.287 ETH |
| 2750 | 1.599 | corto 1.599 ETH |
| 3000 (coniato qui) | 1.000 | breve 1.000 ETH |
| 3250 | 0,471 | corto 0,471 ETH |
| 3500 (limite superiore) | 0.000 | nessuna siepe |
La copertura non è "short 1 ETH e dimenticatelo". Quando il prezzo sale da 3000 a 3250, la posizione vende metà dei suoi ETH in forza e lo short richiesto scende da 1,0 a 0,47, quindi devi riacquistare 0,53 ETH di copertura, al prezzo più alto. In caso di svendita a 2750, la posizione acquista ETH e il tuo short deve crescere fino a 1,60, venduto al prezzo più basso. Acquista-alto, vendi-basso sulla copertura, ogni volta: questo è il gamma negativo che rende reale il flusso di cassa, e il suo costo di gestione è la linea LVR nel registro sottostante.
La gamma è negativa — – che è il payoff a breve termine visto dal lato del rischio. Una gamma negativa significa che la copertura non è mai statica: quando il prezzo aumenta, il delta della posizione diminuisce (detiene meno ETH), quindi uno short che hai dimensionato al prezzo di ieri ora è troppo grande e devi riacquistarne una parte; man mano che il prezzo scende, il delta aumenta e devi vendere di più. Fai sempre trading nella direzione perdente per rimanere neutrale e il costo cumulativo di quella continua ricopertura è esattamente LVR. Questo costo ha una forma chiusa per una posizione v3, che vale la pena derivare perché trasforma la copertura in un numero che puoi prevedere. L'analisi IL/LVR fornisce il tasso LVR istantaneo in base a un prezzo di volatilità GBM COME e abbiamo appena calcolato — l'entità della gamma della posizione. Sostituendo:
Questo è il dissanguamento in dollari per unità di tempo bloccato dalla copertura delta, proporzionale a (la concentrazione è un moltiplicatore sia sul sanguinamento che sulle commissioni) e al quadrato della previsione vol che ha dimensionato il tuo intervallo. Ti fornisce anche direttamente il test di pareggio: la posizione è +EV prima del finanziamento e del gas solo se il tasso di commissione lo supera,
Dove è il livello tariffario e è il volume di swap che scorre attraverso l'intervallo per unità di tempo. Entrambi i lati si ridimensionano con , quindi la concentrazione si annulla nel rapporto, che è il motivo profondo per cui l'ampiezza del range da sola non rende mai redditizio un pool perdente. Ciò che elimina l’LVR è il volume che genera commissioni rispetto alla volatilità, ovvero un pool in cui i trader si muovono più velocemente di quanto gli arbitraggisti ti prendano in giro. Un LP con copertura delta perfetta non è esente da rischi: ha scambiato il rischio di prezzo con la certezza del pagamento - e il suo conto economico si riduce a un registro pulito:
Questo termine di finanziamento è l’affitto che paghi per mantenere la copertura e merita rispetto. Il prezzo di un future perpetuo è vincolato al posizionamento tramite pagamenti periodici di finanziamento; una posizione corta paga il finanziamento quando il tasso è negativo e lo riceve quando è positivo. Come spiegato in come i tassi di finanziamento uccidono la tua leva finanziaria, il finanziamento di criptovalute è in media positivo: i long pagano i short nel tipico regime di contango, il che significa che il LP short con copertura delta è spesso pagato per mantenere la copertura, un vero e proprio vento favorevole che può ribaltare l'intero trade in positivo. Ma è dipendente dal regime e tende a invertire la media; in una svendita prolungata il finanziamento diventa negativo e la tua copertura inizia a costarti oltre a tutto il resto. Dimensiona la copertura in base al delta realizzato, contrassegna il finanziamento come una voce reale e non dare mai per scontato che il vento favorevole storico del finanziamento positivo sia una costante.
Il registro, in numeri
Metti l'intero libro su una pagina per il L = 738,37[2500,3500]P=3000\ell = \sigma^2 L\sqrt{P}/4\sigma$, il sanguinamento LVR è
Ciò equivale a 1,74% della posizione in una sola settimana — e rispetto a una posizione v2 a range completo lo stesso capitale si disperderebbe solo , UN rapporto che è esattamente il moltiplicatore di concentrazione di questo intervallo. La concentrazione è una leva su entrambe le lame: 12,4× la tariffa in range, 12,4× l'LVR. Per cancellare \char36 113/settimana la posizione necessita di una commissione di rendimento dell'ordine del 90% APR: fa riflettere, e l'onesta ragione per cui i range ristretti ad alto volume spesso perdono. Il finanziamento, nel frattempo, è un errore di arrotondamento in questo caso: la copertura di circa 1 ETH di nozionale a un tasso tipico di +0,01%/8 ore guadagna circa \char36 6 durante la settimana (le raccolte short in regimi di finanziamento positivo), un lieve vento favorevole che non crea né distrugge l'operazione. E ogni ribilanciamento aggiungerebbe ~\char36 25 di gas in più. La lezione che il registro insegna a colpo d'occhio: le commissioni sono l'unica voce che può salvarti, LVR è quella che ti affonderà e finanziamenti e gas sono i dettagli - dimensiona l'intervallo in modo che il primo batta il secondo, oppure non effettuare lo scambio.

Due note pratiche. In primo luogo, la granularità della copertura è un compromesso in termini di costi: la nuova copertura ad ogni tick minimizza il tracking error ma massimizza le commissioni di trading perp e l’abbandono dei finanziamenti, quindi la maggior parte dei desk ricopre su una banda delta, la stessa logica di no-trade-region del ribilanciamento LP. In secondo luogo, la copertura neutralizza il delta solo mentre si trova nel range; una volta che il prezzo esce, la posizione diventa al 100% un asset con un delta piatto o completamente lineare, e una copertura dimensionata per il regime in-range ora è sbagliata: un altro motivo per cui l'ampiezza del range e la politica di ribilanciamento non possono essere progettate indipendentemente dalla copertura.
Dove mettere la siepe
Lo strumento di copertura è una decisione concreta, non un dettaglio. Un perp di scambio centralizzato (Binance, Bybit) offre la liquidità più profonda e gli spread più ridotti, ma reintroduce il rischio di custodia e di ponte: il tuo LP è on-chain, la tua copertura no, e le due gambe possono disincronizzarsi in un mercato veloce o in un blocco dei prelievi. Un criminale on-chain (Hyperliquid, GMX, dYdX) mantiene tutto in un dominio di liquidazione ed è componibile con la posizione LP, a scapito di libri più sottili e del proprio oracolo e di stranezze di finanziamento. In ogni caso, corri un rischio di base: il criminale traccia un indice che non è identico al prezzo del tuo pool, quindi un libro perfettamente neutrale del delta ha ancora un piccolo residuo che si allarga esattamente quando meno te lo puoi permettere. E la gamma corta è un rischio di liquidazione: una copertura che deve crescere durante la discesa è nella stessa direzione di una richiesta di margine, quindi dimensiona la garanzia del colpevole per l'intervallo di stress-vol della prima sezione, non quella calma, o un movimento di gap liquida la copertura e lascia l'LP nudo nel momento peggiore.
Liquidità JIT: il market maker a un blocco
Spingi il LPing attivo al suo estremo logico – ribilancia ogni blocco, mantieni la posizione per la durata di un singolo swap – e otterrai liquidità just-in-time, la strategia più intelligente nello spazio di progettazione LP. Un fornitore JIT controlla il mempool per un grande swap in entrata e, nello stesso blocco: conia una posizione di liquidità estremamente stretta ed estremamente profonda che racchiude il prezzo corrente immediatamente prima dello swap della vittima, lascia che lo swap venga eseguito contro quel muro di liquidità (catturando la parte del leone della sua commissione, dal momento che il JIT sminuisce il passivo già nel tick), quindi brucia la posizione immediatamente dopo — tutto all'interno di un blocco.
L’economia è sorprendente. Poiché mint e burn si trovano a cavallo di un singolo swap senza sostanzialmente alcuna evoluzione del prezzo tra di loro, la posizione guadagna l'intera commissione su un nozionale enorme comportando quasi zero perdite temporanee: non c'era tempo perché il prezzo divergesse. Il moltiplicatore del tasso di commissione della liquidità concentrata, portato al limite: fornisce, diciamo, migliaia di volte la profondità passiva per l’istante esatto in cui guadagna, e svanisce prima che qualsiasi selezione avversa possa prendere il sopravvento. È la cosa più vicina alla creazione di un mercato privo di rischi sulla catena, ed è il motivo per cui esiste JIT.
La ripartizione delle commissioni è solo una quota di liquidità. Uno swap da 10 milioni di \char36 attraverso un pool dello 0,05% paga \char36 5.000 in commissioni, divise proporzionalmente per l'intervallo . Se gli LP passivi reggono nelle zecche incrociate e nelle zecche bot JIT per il blocco, viene acquisita la posizione JIT
lasciando gli LP passivi che erano lì tutta la settimana con \char36 50. Il bot non ha fatto nulla per il 99,99% del blocco e ha preso il 99% della commissione sull'unico scambio che contava - che è esattamente il motivo per cui il reddito da commissioni passive, misurato onestamente, è inferiore alle entrate principali del pool.
E come ogni vantaggio leggibile sulla catena, JIT è stato sconfitto. Una volta che diversi bot osservano gli stessi grandi swap in sospeso e simulano la stessa acquisizione della commissione, si fanno offerte a vicenda nell'asta del costruttore per il diritto di sedersi di fronte al flusso, e la mancia pagata al costruttore converge verso la commissione catturata - lo stesso recinto che è accaduto a [liquidazioni on-chain] (/blog/onchain-liquidations-aave-compound) e atomic arb. Ciò che rimane è il residuo: scambi di altri bot persi, pool con mercati di costruttori immaturi e la qualità operativa per mantenere grandi scorte inattive e non perdere mai un burn. È una vera strategia e un vero business; non è un negozio al dettaglio.
Il problema, e il motivo per cui JIT è un gioco da specialisti piuttosto che denaro gratuito, è triplice. Ha bisogno di un inventario reale. A differenza dell'arbitraggio atomico con prestiti flash che si finanzia da solo e ripaga all'interno di una transazione, un mint-swap-burn JIT si estende su tre transazioni separate nel blocco (il conio, lo scambio della vittima, il burn), quindi un prestito flash - che deve essere rimborsato all'interno di un'unica transazione - non può finanziare la gamba LP. Il bot JIT deve detenere il capitale sottostante, spesso milioni in entrambi i token, inattivo e pronto. È un pacchetto nella catena di fornitura MEV. Per ottenere l'ordine (coniato subito prima dello scambio, bruciato subito dopo) è necessario inviare un pacchetto a un costruttore di blocchi esattamente attraverso il sistema idraulico di separazione proponente-costruttore sezionato in l'articolo MEV e mempool; JIT compete per lo spazio del blocco e paga il costruttore come qualsiasi altro ricercatore, e il profitto dopo tale offerta è minimo. Si tratta di una selezione avversa per gli LP passivi. I robot JIT scremano il flusso più grande e più benigno - i grossi swap non informati in cui le commissioni sono succose e la tossicità è bassa - e lasciano posizioni passive che detengono le operazioni più piccole e il flusso tossico e informato che genera LVR. Le entrate realizzate dalle commissioni di un LP passivo sono inferiori alle entrate dalle commissioni principali del pool proprio perché JIT ha catturato le fette migliori. Quest’ultimo punto non è solo una nota economica; è una mina nella sezione successiva.

Backtesting di LP da dati on-chain, onestamente
Ogni affermazione di cui sopra - gli intervalli di dimensioni vol battono quelli statici, il ribilanciamento della banda batte quello periodico, l'LPing con copertura è +EV nel regime X - è un'ipotesi che devi testare rispetto alla storia on-chain prima di impegnare capitale. I dati sono proprio lì: eventi di swap ed eventi di liquidità nei registri del contratto del pool o preaggregati nel sottografo Uniswap. La trappola è che un backtest LP ingenuo è sistematicamente ottimista e che i pregiudizi spingono tutti nella stessa direzione. Tre devi gestirne, altrimenti il tuo Sharpe sarà una finzione.
Attribuzione delle commissioni. La scorciatoia seducente è stimare il reddito delle commissioni come (volume del pool) × (livello della commissione) × (la tua quota di TVL del pool). Questo è sbagliato per due motivi. Le commissioni maturano solo sulla liquidità che è nel range al momento di ogni swap, quindi il denominatore corretto è la tua quota di nel range , non la tua quota di TVL, che differisce ogni volta che il prezzo si allontana dal tuo centro. E la crescita delle commissioni dipende dal percorso: dipende dall’esatta sequenza degli swap e da dove ognuno di essi ha lasciato il prezzo rispetto ai tuoi limiti. L'unico metodo onesto è riprodurre gli scambi e differenziarli feeGrowthInside accumulatori oltre i limiti del tuo intervallo, esattamente come fa il contratto: la contabilità O (1) dal pezzo di liquidità concentrata. La ripartizione proporzionale del volume in base al TVL può essere errata di un grande multiplo in entrambe le direzioni, ed è errata quasi proprio quando il prezzo si avvicina ai tuoi limiti, che è il regime di cui hai più bisogno per modellare correttamente.
Allineamento prezzo rispetto al tick del pool. Esistono due prezzi in ogni istante e non sono uguali: il tick del pool (dove si trova il prezzo marginale dell'AMM dopo l'ultimo scambio) e il mid esterno/CEX (dove l'asset viene effettivamente scambiato). Segna la tua posizione sul tick del pool e costruisci il profitto dell'arbitraggio nei tuoi rendimenti, perché il tick del pool è stantio tra le operazioni di arbitraggio; segnare al CEX mid e devi allineare i timestamp tra le sedi con orologi e orari di blocco diversi. La cadenza delle istantanee aggrava questo: le istantanee dei sottografi orari perdono silenziosamente gli attraversamenti del range intra-ora: una posizione che è uscita ed è rientrata nel tuo range entro un'ora sembra che sia rimasta nel range per tutto il tempo, sopravvalutando le tariffe e sottostimando l'LVR. Tutto ciò che affermi riguardo al time-in-range o all'LVR deve provenire da livello di scambio, replay con timestamp del blocco, non segni orari.
MEV in pool e JIT contaminano la stima delle commissioni. Questo è il più sottile e pericoloso, ed è il motivo per cui la sezione JIT si trova proprio prima di questa. Se stimi le entrate da commissioni di una strategia passiva dalle entrate da commissioni realizzate storiche del pool, stai accreditando la tua posizione passiva con le commissioni che i bot JIT hanno effettivamente catturato: entrate che un vero LP passivo non avrebbe mai visto, perché la liquidità JIT è stata coniata prima di esso per quegli esatti swap. Il tuo backtest eredita commissioni fantasma. Gli stessi swap comportano l’altra metà della distorsione: gran parte del volume del pool è arbitraggio – il flusso tossico e informato che è il tuo LVR – quindi conteggiarlo tutto come volume “buono” che genera commissioni ignorando la selezione avversa che impone adula il risultato. Un backtest LP onesto deve (a) ricostruire la liquidità nell'intervallo comprese le posizioni JIT transitorie per attribuire correttamente le commissioni, (b) contabilizzare separatamente l'LVR dal percorso dei prezzi realizzati piuttosto che presumere che le commissioni siano denaro gratuito e (c) trattare l'arbitraggio e gli swap JIT scremati per quello che sono: il lato dei costi del registro, non il lato delle entrate. Salta questo e la tua bellissima strategia a volume, ribilanciata in banda e con copertura delta sembrerà redditizia sulla carta e sanguinerà in produzione, per ragioni che la carta non ti ha mai mostrato.
Ognuno di questi pregiudizi spinge il rendimento stimato verso l'alto, che è la peggiore modalità di fallimento possibile: un backtest che lusinga:
| Fonte di pregiudizio | Scorciatoia ingenua | Metodo onesto | Effetto sul conto economico stimato |
|---|---|---|---|
| Attribuzione compenso | volume × quota TVL | differenza feeGrowthInside sul replay di scambio |
sopra o sottostima, peggio vicino ai bordi |
| Marchio del prezzo | segno di spunta della piscina | CEX a metà, timestamp del blocco allineato | esagera (cuoce profitti arbitrari) |
| Cadenza dell'istantanea | istantanee orarie | a livello di swap, con timestamp di blocco | sopravvaluta il tempo nell'intervallo |
| Scrematura JIT | crediti tasse fantasma | ricostruire il JIT transitorio | sopravvaluta il reddito da commissioni |
| Flusso di arbitraggio | conta come volume "buono" | contabilizzare separatamente come LVR | esagera (ignora la selezione avversa) |
La disciplina è la stessa che separa un vero backtest di strategia commerciale da una fantasia: modellare i costi con lo stesso rigore delle entrate e diffidare maggiormente del numero quando sembra migliore.
Cosa portare via
Esegui una posizione v3 nel modo in cui una scrivania gestisce un libro e le cinque decisioni si allineano:
- La larghezza è una scommessa vol. Dimensiona l'intervallo come a -banda sigma da una previsione di varianza anticipata - GARCH, non realizzata - in modo che la concentrazione respiri con il regime invece di restare su un default statico. La mappa dei tick è una riga, perché i tick sono log-prezzo.
- Il ribilanciamento è un costo di riquotazione, non un riflesso. Agire solo quando l'incremento tariffario previsto cancella gas + swap + LVR cristallizzato; la forma corretta è una banda di non riequilibrio e la frequenza corretta è molto più bassa di quanto suggerisce l'istinto. Il ribilanciamento eccessivo è dato dall’LVR più un’imposta autoinflitta, e per molte piccole posizioni il conteggio di ribilanciamento ottimale è pari a zero.
- Il delta è l'inventario. Per una posizione nell'intervallo , gli ETH che detieni attualmente; In breve, che un criminale gestisca un libro di creazione di mercato invece di uno direzionale accidentale. Una gamma negativa significa una continua ricopertura, il cui costo è LVR, e il finanziamento è la rendita dipendente dal regime – spesso un vantaggio, mai una garanzia.
- JIT è il limite di un blocco di LPing attivo: liquidità profonda attorno a un singolo swap, IL vicino allo zero, capitale reale richiesto (nessun prestito flash) e un pacchetto nella catena di fornitura MEV che sottrae il flusso migliore dagli LP passivi.
- Il backtest è ottimistico a meno che tu non faccia differenza
feeGrowthInsideper l'attribuzione, utilizzare contrassegni con timestamp di blocco a livello di swap e trattare il flusso di scrematura JIT e di arbitraggio come il lato dei costi. Commissioni fantasma e LVR ignorato sono il modo in cui una strategia perdente supera la revisione.
Il filo conduttore di questa serie è che una posizione LP ha un'esatta struttura analitica - valore, delta, gamma, LVR - e nel momento in cui le scrivi, LPing smette di essere "deposito e preghiera" e diventa un'operazione coprebile, considerevole e testabile. I calcoli erano in liquidità concentrata; il calcolo della redditività è in perdita impermanente e LVR; questo pezzo è il modo in cui gestisci effettivamente la posizione tra questi due. Niente di tutto ciò elimina il rischio. Ti dice semplicemente, esattamente, per quale rischio sei pagato.
Riferimenti
- Adams, H., Zinsmeister, N., Salem, M., Keefer, R., Robinson, D. (2021). Uniswap v3 Core (whitepaper).
- Milionis, J., Moallemi, C., Roughgarden, T., Zhang, A. L. (2022). Market Making automatizzato e ribilanciamento delle perdite rispetto al ribilanciamento. arXiv:2208.06046.
- Milionis, J., Moallemi, C., Roughgarden, T. (2023). Compromessi tra complessità e approssimazione nei meccanismi di scambio: AMM e LOB e relativo lavoro LVR con commissioni. arXiv:2302.11737.
- Cartea, A., Drissi, F., Monga, M. (2023). Perdite prevedibili di fornitura di liquidità nei mercati a funzione costante e nei mercati a liquidità concentrata. arXiv:2309.08431.
- Fritsch, R., et al. (2023). Analisi e benchmarking della liquidità Just-in-Time (JIT) su Uniswap v3.
- Sottografo Uniswap e librerie principali:
Position.sol,Tick.sol,SqrtPriceMath.sol(crescita delle tariffe e calcolo dell'importo per una riproduzione onesta). - Bollerslev, T. (1986). Eteroschedasticità condizionale autoregressiva generalizzata: la previsione GARCH(1,1) alla base del dimensionamento dell'intervallo.
Autori
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.