Estratégias de LP no Uniswap v3 e hedge
Uma posição passiva Uniswap v3 é um conjunto de ordens com limite restante que você não pode cancelar. Um livro ativo – faixa escolhida, recentrado em um cronograma, protegido por um criminoso – é um livro de criação de mercado e deve ser administrado como tal. Essa reformulação muda todas as decisões. Um formador de mercado avalia as cotações com base em uma previsão de volatilidade, não em uma intuição. Um formador de mercado trata cada recotação como um custo, não como um reflexo. Um formador de mercado conhece o delta de seu estoque o tempo todo e decide deliberadamente se deve carregá-lo ou protegê-lo. E um formador de mercado sabe que algumas de suas contrapartes são mais rápidas e mais bem informadas, e os preços estão incluídos.
O artigo sobre liquidez concentrada construiu os primitivos: ticks, liquidez , as fórmulas de valor simbólico, feeGrowthInside, e o fato de que uma posição LP é um retorno de volatilidade curta cujo custo operacional é perda versus reequilíbrio (LVR). Esta peça é o manual do operador no topo dessa base. Dimensionamos o intervalo a partir de uma previsão de variação, enquadramos a decisão de reequilíbrio como uma negociação explícita de ganho de taxa esperada versus custo realizado, derivamos o delta da posição diretamente da função de valor e neutralizamos-o com futuros perpétuos, olhamos para a liquidez just-in-time (JIT) como o caso extremo de LPing ativo e encerramos com as maneiras pelas quais um backtest on-chain honesto de tudo isso pode mentir para você. Durante todo o processo, o modelo mental é Avellaneda-Stoikov com duas modificações brutais: suas cotações estão em um livro-razão público antes de serem preenchidas, e cada nova cotação custa gás.
Largura do intervalo de uma previsão de volatilidade
O parâmetro mais importante de um LP ativo é a largura do intervalo e é uma aposta de pura volatilidade. Muito amplo e você dilui sua liquidez em ticks que raramente são negociados, ganhando taxas à taxa anêmica de um pool v2. Muito estreito e você concentra a profundidade lindamente - até o preço sair de sua faixa, você entra 100% no ativo perdedor e não ganha nada até se reequilibrar (cristalizando a perda de divergência no caminho). A largura ideal é aquela que mantém o preço dentro da faixa com freqüência suficiente para que a taxa de taxa concentrada pague mais do que o LVR que a concentração amplifica. Essa é uma afirmação sobre a distribuição de retornos futuros, então você a dimensiona a partir de uma previsão dessa distribuição.
Preço logarítmico do modelo ao longo de um horizonte de manutenção como aproximadamente , com a volatilidade por período. Um simétrico O intervalo -sigma no preço logarítmico é
então e . Escolhendo está escolhendo a probabilidade de permanecer no intervalo: mantém o preço dentro de cerca de 68% dos horizontes, para ~95%. Mais amplo negocia a taxa de taxa de acordo com o intervalo de tempo, e o ponto ideal depende do nível de taxa e do regime vol – que é exatamente a quantidade que um formador de mercado prevê, em vez de adivinhar.
A tradução para parâmetros on-chain é de uma linha, porque os ticks são log-price. Desde , o índice de ticks é , e , então a meia largura dos ticks é aproximadamente . Ajuste o espaçamento de ticks do pool e você terá seus limites:
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)
Um número trabalhado corrige a intuição. Tomemos como exemplo o ETH com um volume diário previsto de 4%, um horizonte de recentralização de uma semana ( dias) e . Então , então o intervalo abrange , ou seja, aproximadamente - sobre um banda, ou carrapatos ajustados ao espaçamento. A largura é linear na previsão de volume (até a primeira ordem no espaço logístico), que é o ponto principal: sua concentração de liquidez deve respirar com a do mercado, e não ficar estática "± 10% porque parecia certo no mês passado". Varie os dois botões – o regime e a confiança - e a banda se move da mesma forma que o spread cotado de um formador de mercado:
| Previsão diária | Regime | meia largura | meia largura | Aprox. carrapatos () |
|---|---|---|---|---|
| 2% | calma | ±5,3% | ±10,6% | ±529 |
| 4% | normais | ±10,6% | ±21,2% | ±1058 |
| 6% | elevado | ±15,9% | ±31,8% | ±1587 |
| 8% | estressado | ±21,2% | ±42,3% | ±2116 |
Leia a tabela como uma política de cotação, não como uma pesquisa. Uma faixa mais estreita ganha uma taxa de taxa mais alta por dólar enquanto estiver na faixa (mais profundidade por tick), mas sai da faixa mais cedo e centraliza novamente com mais frequência; uma banda mais larga é o oposto. O multiplicador de liquidez concentrada é a alavanca – um a banda cota aproximadamente uma ordem de magnitude a mais de profundidade por tick do que uma posição v2 de faixa completa e ganha taxas nesse múltiplo enquanto estiver na faixa - mas também é o mesmo múltiplo mais exposto ao LVR. A largura do intervalo é onde você escolhe seu ponto na fronteira taxa de taxa versus tempo dentro do intervalo, e a previsão de volume é o que indica onde essa fronteira está hoje.
Uma restrição limita o limite: espaçamento entre ticks. Seus limites devem se ajustar ao espaçamento do nível de taxa, de modo que o intervalo mínimo que você pode expressar é definido pelo pool que você escolheu - aproximadamente ±10 pb no nível de 0,05% (espaçamento 10), ±60 pb no nível de 0,30% (espaçamento 60), ±2% no nível de 1% (espaçamento 200). Isso une duas decisões que parecem independentes: a seleção do nível de taxas é uma seleção de faixa-resolução. Um par estável cuja previsão de volume deseja uma faixa de ±0,3% só pode realizá-la no nível de 0,05%; experimente no nível de 1% e a grade de ticks força você a ser pelo menos oito vezes maior, diluindo a concentração pela qual você estava pagando a taxa mais alta para obter. Combine a granularidade da camada com a largura solicitada pela sua previsão, e não o contrário.

Onde é que vem? A volatilidade percebida em uma janela final é a resposta grosseira e é muito retrospectiva - indica o intervalo que você deveria ter definido na semana passada. A ferramenta certa é um modelo de variância condicional que reage ao regime atual: uma previsão GARCH(1,1) agregada ao horizonte, conforme desenvolvido em Previsão de volatilidade GARCH para criptografia. GARCH dá a você e, iterando a recursão, um -variância passo a passo cuja raiz quadrada é o você quer. O efeito de alavancagem da criptografia - vol salta mais em movimentos para baixo - defende uma variante assimétrica, e a mesma máquina de segmentação vol que redimensiona uma posição direcional por redimensiona um intervalo de LP por : direção oposta, previsão idêntica. Alimente essa série em range_from_vol em cada recentralização e a concentração da posição acompanha a previsão automaticamente. O que levanta a questão que este artigo aborda a seguir: com que frequência deve você centralizar novamente?
Reequilíbrio: o ganho de taxas versus a negociação de custos realizados
O reequilíbrio excessivo é o destruidor número um dos retornos de LPs no varejo e é um assassino sutil porque cada centro individual se sente responsável. O preço deslocou-se em direção ao limite do seu intervalo, então você se concentrou novamente para "permanecer ativo". Mas uma recentralização v3 não é uma nova cotação gratuita em um CEX. São três custos empilhados:
- Gás — queimar a posição antiga, cunhar a nova e (geralmente) uma troca para reequilibrar o estoque. Na mainnet, esse é um custo fixo por ciclo não trivial, brutal para posições pequenas.
- Custo de swap — para centralizar novamente, você deve negociar seu estoque desequilibrado de volta ao índice da nova faixa, pagando a taxa de swap e o impacto do preço nessa negociação.
- LVR cristalizado — este é o invisível. Enquanto o preço oscilava, a posição acumulava perda de divergência no papel. Manter o preço de ida e volta recuperaria grande parte dele (você mantém as taxas, devolve a oscilação do estoque). A recentralização percebe essa perda: você vende o ativo no qual está agora pesado, pelo preço deprimido, e reinicia. Cada recentrador converte LVR de papel em LVR reservado.
Portanto, a decisão de reequilíbrio não é “estou perto do limite?” mas o cálculo de recotações de um formador de mercado: o aumento futuro esperado das taxas a partir de uma posição mais centrada excede o custo realizado para chegar lá? Este é estruturalmente o problema de controle dos custos de transação — a política ideal é uma faixa sem reequilíbrio em torno do centro, e não um fio de disparo. Dentro da banda você deixa o estoque flutuar e continua cobrando taxas; você só age quando o benefício esperado compensa o custo.
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
Uma decisão de reequilíbrio com números
Torne isso concreto. Digamos que você mantenha uma posição de $50.000 em um pool de ETH/USDC de 0,05%, o preço deslocou-se para o limite de sua faixa e a recentralização aumentaria sua captura efetiva de taxas de uma situação anêmica. APR (você mal está ao alcance) de volta para ABRIL. Sua previsão GARCH diz que uma faixa recém-centrada dessa largura se mantém por cerca de dias anos antes de você se recentrar novamente. O aumento bruto é
Contra isso, o custo da recentragem: $25 de gás (mint + burn + swap), uma troca do inventário desequilibrado - digamos $20.000 cruzados a 5 pb de taxa mais impacto por $10 - e o LVR cristalizado da venda para a mudança, outros $60. Custo total realizado . Desde , você recentraliza – mas observe o quão próximo está e como um pico de gás de $5 ou uma espera mais curta inverte o sinal. Agora reduza a posição para $5.000 com as mesmas porcentagens: o aumento cai para $15 enquanto o gás permanece $25, e a negociação nunca vale a pena ser feita. O prazo de aumento de taxas varia com o nocional; o termo gás não. Essa única assimetria é a razão pela qual os pequenos LPs da rede principal deveriam executar uma faixa ampla e raramente tocada ou permanecer de fora.
Limite versus periódico
Dois regimes resultam desta desigualdade e são a resposta honesta à questão “baseada em limiares versus periódica”. Reequilíbrio de limite (banda) — agir quando o preço sai de uma faixa de tolerância — é a forma teoricamente correta, porque condiciona o estado que realmente importa. Reequilíbrio periódico — centralize novamente a cada blocos ou horas, independentemente – é uma aproximação grosseira que só é defensável porque é mais simples de executar e mais fácil de raciocinar; sua patologia é recentramento durante o chop que teria revertido a média de graça, pagando gasolina e cristalizando LVR para uma viagem de ida e volta que você teria ganho se não fizesse nada. Empiricamente, quanto maior o seu nível de taxas e quanto maior o gás, mais ampla deve ser a sua banda e mais raros os seus reequilíbrios - um pool de 1% recentralizado diariamente quase sempre incendeia o dinheiro. O corolário desconfortável: para muitas posições pequenas na mainnet, o prazo de aumento de taxa nunca compensa o prazo de gás, e o número correto de rebalanceamentos é zero – defina uma ampla faixa uma vez e deixe-a, ou não faça LP.
É também por isso que o local é tão importante quanto a estratégia. Toda a desigualdade é dominada pelo termo gas na rede principal Ethereum, onde um ciclo de reequilíbrio custa dinheiro real; em um L2 (Arbitrum, Base, Optimism) o mesmo ciclo custa centavos, então entra em colapso, a banda que a limpa se estreita e o LP ativo de faixa estreita com recentralização frequente torna-se viável exatamente para as pequenas posições que nunca poderiam pagar em L1. Isso não é uma nota de rodapé – é por isso que estratégias sérias de LP ativas migraram em grande parte para L2s, e por que “com que frequência reequilibrar” tem uma resposta diferente em cada cadeia. Contudo, os termos do LVR e do custo de swap não diminuem com o gás, pelo que o gás barato reduz a barreira ao sobre-reequilíbrio tanto quanto ao reequilíbrio sensato; a disciplina da desigualdade importa mais onde o gás para de aplicá-la para você.
Há uma terceira opção que evita totalmente a centralização: o intervalo unilateral. Em vez de uma banda simétrica que você desliza para acompanhar o preço, coloque uma faixa assimétrica que expresse uma visão – liquidez apenas abaixo do spot se você estiver satisfeito em acumular o ativo na descida, apenas acima se quiser distribuí-lo na subida. Este é o caso de uso de ordem limitada na cadeia e transforma um “reequilíbrio” em uma “recarga”: quando um intervalo unilateral é preenchido completamente (o preço o ultrapassa), você executou a compra ou venda pretendida a um preço médio com taxas aumentadas, e a decisão é se deve se rearmar, não se deve perseguir. Para mandatos de acumulação e distribuição, domina a recentragem simétrica, porque a oscilação de stocks que enfrentaria com uma cobertura é a posição que realmente desejava.

Vale a pena afirmar claramente a conexão com o LVR, porque ela liga toda esta série: a soma de suas perdas realizadas no centro recente ao longo da vida de uma posição, avaliada corretamente, converge para o LVR que a análise IL/LVR prevê a partir da variação realizada da trajetória de preço. O reequilíbrio não evita o LVR; ele escolhe quando pagar e em que moeda. Reequilibre com muita frequência e você também pagará taxas de gás e swap além do LVR que pagaria de qualquer maneira. É por isso que o reequilíbrio excessivo domina os modos de falha: é o LVR mais um imposto auto-infligido.
Delta-hedging do LP com futuros perpétuos
Se a largura do intervalo for sua aposta vol e a faixa de reequilíbrio for sua política de estoque, o hedge delta é como você separa os dois, de modo que você está executando um livro criador de mercado (vol curto, colete o spread) e não um livro direcional (ETH longo ou curto por acidente). Para fazer hedge, você precisa do delta da posição, e a beleza da v3 é que ela sai diretamente da função de valor, sem números.
O valor de uma posição dentro do intervalo, em unidades de token1 (o numerário, por exemplo, USDC), é a expressão derivada na parcela de liquidez concentrada:
Diferencie em relação ao preço do ativo de risco (token0, por exemplo, ETH):
O delta da posição é igual à quantidade de token0 que a posição detém atualmente. Isso não é uma coincidência e vale a pena fazer uma pausa: , então , e o invariante AMM torna o valor comercial marginal na curva neutro ao preço atual, ou seja, . Os dois termos finais são cancelados e o delta é apenas o estoque de ETH. Um LP está comprado no ativo de risco exatamente pelo valor dele atualmente na posição – um número que diminui à medida que o preço sobe (a posição vende ETH em força) e cresce à medida que o preço cai (ele compra a queda). Para neutralizar, segure um pequeno criminoso de tamanho em termos de 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
O delta em todo o intervalo, em números
Reutilize a posição exata do exemplo trabalhado de liquidez concentrada: na faixa , cunhado em . O delta é o short que você deve carregar, e ele caminha monotonamente de uma bolsa ETH cheia na parte inferior até plana na parte superior:
| (USDC/ETH) | Posição ETH | Cobertura de criminosos |
|---|---|---|
| 2500 (limite inferior) | 2.287 | vendido em 2.287 ETH |
| 2750 | 1.599 | vendido em 1.599 ETH |
| 3000 (cunhado aqui) | 1.000 | curto 1.000 ETH |
| 3250 | 0,471 | vendido em 0,471 ETH |
| 3500 (limite superior) | 0,000 | sem cobertura |
A cobertura não é “vender 1 ETH e esquecer”. À medida que o preço sobe de 3.000 para 3.250, a posição vende metade de seu ETH em força e sua posição vendida necessária cai de 1,0 para 0,47 – então você deve recomprar 0,53 ETH de hedge, pelo preço mais alto. Em uma liquidação até 2.750 a posição compra ETH e sua posição vendida deve crescer para 1,60, vendida pelo preço mais baixo. Compre na alta e venda na baixa no hedge, sempre: isso é gama negativa que torna o fluxo de caixa real, e seu custo operacional é a linha LVR no livro-razão abaixo.
O gama é negativo - – que é o retorno do short straddle visto do lado do risco. Gama negativa significa que o hedge nunca é estático: conforme o preço sobe, o delta da posição cai (ela retém menos ETH), então uma posição vendida que você dimensionou ao preço de ontem agora é muito grande e você deve comprar de volta; à medida que o preço cai, o delta aumenta e você deve vender mais. Você está sempre negociando na direção perdedora para permanecer neutro, e o custo cumulativo dessa nova cobertura contínua é precisamente LVR. Esse custo tem uma forma fechada para uma posição v3, que vale a pena derivar porque transforma o hedge em um número que você pode prever. A análise IL/LVR fornece a taxa LVR instantânea sob um preço de volatilidade GBM como , e acabamos de calcular — a magnitude do gama da posição. Substituindo:
Esse é o sangramento de dólar por unidade de tempo que o hedge delta bloqueia - proporcional a (a concentração é um multiplicador tanto no sangramento quanto nas taxas) e para o quadrado da previsão de volume que dimensionou seu intervalo. Ele também oferece o teste de equilíbrio diretamente: a posição é +EV antes do financiamento e do gás somente se a taxa de receita de taxas compensar,
onde é o nível de taxa e é o volume de swap que flui através do seu intervalo por unidade de tempo. Ambos os lados escalam com , então a concentração é cancelada na proporção – que é a razão profunda pela qual a largura do intervalo por si só nunca torna um pool perdedor lucrativo. O que compensa o LVR é o volume gerador de taxas em relação à volatilidade, ou seja, um pool onde os traders mudam mais rápido do que os arbitradores o escolhem. Um LP perfeitamente coberto pelo delta não é isento de risco – ele trocou o risco do preço pela certeza do pagamento - e seu P&L se reduz a um livro-razão limpo:
Esse prazo de financiamento é o aluguel que você paga para manter o hedge e merece respeito. O preço de um futuro perpétuo está vinculado ao preço à vista por meio de pagamentos periódicos de financiamento; uma posição curta paga financiamento quando a taxa é negativa e recebe quando positiva. Conforme abordado em como as taxas de financiamento matam sua alavancagem, o financiamento de criminosos criptográficos é positivo em média - os comprados pagam os vendidos no regime típico de contango - o que significa que o LP vendido com hedge delta é muitas vezes *pago * para realizar o hedge, um vento favorável genuíno que pode virar todo o comércio positivo. Mas é dependente do regime e inverte a média; numa liquidação sustentada, o financiamento torna-se negativo e a sua cobertura começa a custar-lhe mais do que tudo o resto. Dimensione o hedge de acordo com seu delta realizado, marque o financiamento como um item de linha real e nunca presuma que o vento favorável histórico do financiamento positivo é uma constante.
O livro-razão, em números
Coloque o livro inteiro em uma página para o eu = 738,37[2500,3500]P=3000\ell = \sigma^2 L\sqrt{P}/4\sigma$, o sangramento do LVR é
Isso representa 1,74% da posição em uma única semana — e contra uma posição v2 full-range o mesmo capital sangraria apenas , um proporção que é exatamente o multiplicador de concentração desta faixa. A concentração é uma alavanca em ambas as lâminas: 12,4× a taxa de taxa enquanto estiver dentro do alcance, 12,4× o LVR. Para compensar \char36 113/semana, a posição precisa de um rendimento de taxa da ordem de 90% APR – preocupante, e a razão honesta é que faixas estreitas em alto volume muitas vezes perdem. O financiamento, entretanto, é um erro de arredondamento aqui: cobrir cerca de 1 ETH de nocional a uma taxa típica de +0,01%/8h ganha cerca de \char36 6 ao longo da semana (a posição vendida é cobrada em regimes de financiamento positivo), um vento favorável suave que não faz nem quebra a negociação. E cada reequilíbrio adicionaria ~\char36 25 de gás no topo. A lição que o livro-razão ensina resumidamente: as taxas são o único item de linha que pode salvá-lo, o LVR é o que irá afundá-lo, e o financiamento e o gás são os detalhes — dimensione o intervalo para que o primeiro supere o segundo, ou não inicie a negociação.

Duas notas práticas. Em primeiro lugar, a granularidade da cobertura é o seu próprio compromisso de custos: a nova cobertura de cada tick minimiza o erro de acompanhamento, mas maximiza as taxas de negociação de criminosos e a rotatividade de financiamento, pelo que a maioria das mesas refaz a cobertura numa banda delta, a mesma lógica de região sem comércio que o reequilíbrio de LP. Em segundo lugar, o hedge apenas neutraliza o delta enquanto estiver dentro do intervalo; assim que o preço sai, a posição torna-se 100% um ativo com um delta plano ou totalmente linear, e uma cobertura dimensionada para o regime dentro do intervalo está agora errada – outra razão pela qual a largura do intervalo e a política de reequilíbrio não podem ser concebidas independentemente da cobertura.
Onde colocar a sebe
O instrumento de hedge é uma decisão em tempo real, não um detalhe. Um criminoso de câmbio centralizado (Binance, Bybit) oferece a maior liquidez e os spreads mais reduzidos, mas reintroduz o risco de custódia e de ponte – seu LP está na rede, seu hedge não, e as duas pernas podem ser dessincronizadas em um mercado rápido ou em um congelamento de retiradas. Um criminoso na rede (Hyperliquid, GMX, dYdX) mantém tudo em um domínio de liquidação e é combinável com a posição LP, ao custo de livros mais finos e seu próprio oráculo e peculiaridades de financiamento. De qualquer maneira, você carrega um risco de base: o criminoso rastreia um índice que não é idêntico ao preço do seu pool, portanto, um livro perfeitamente delta-neutro ainda tem um pequeno resíduo que aumenta exatamente quando você menos pode pagar por ele. E a gama curta é um risco de liquidação - uma cobertura que deve crescer na descida é a mesma direção que uma chamada de margem, por isso dimensione a garantia do criminoso para a faixa de volume estressado da primeira seção, não a calma, ou um movimento de gap liquida a cobertura e deixa o LP nu no pior momento.
Liquidez JIT: o criador de mercado de um bloco
Leve o LPing ativo ao seu extremo lógico – reequilibre cada bloco, mantenha a posição durante um único swap – e você obterá liquidez just-in-time, a estratégia mais precisa no espaço de design LP. Um provedor JIT observa o mempool em busca de um grande swap de entrada e, no mesmo bloco: cria uma posição de liquidez extremamente estreita e profunda, colocando o preço atual imediatamente antes do swap da vítima, permite que o swap seja executado contra essa parede de liquidez (capturando a maior parte de sua taxa, já que o JIT supera o passivo já no tick), então queima a posição imediatamente depois — tudo dentro de um bloco.
A economia é impressionante. Como mint e burn abrangem um único swap sem essencialmente nenhuma evolução de preço entre eles, a posição ganha a taxa total sobre um enorme valor nocional, ao mesmo tempo em que carrega quase ** zero perda impermanente ** - não houve tempo para o preço divergir. O multiplicador da taxa de liquidez concentrada, levado ao limite: fornece, digamos, milhares de vezes a profundidade passiva no exato instante em que ganha e desaparece antes que qualquer seleção adversa possa afetar. É o que há de mais próximo na cadeia da criação de mercado sem risco e é por isso que o JIT existe.
A divisão de taxas é apenas uma parcela de liquidez. Um swap de 10 milhões de \char36 por meio de um pool de 0,05% paga 5.000 \char36 em taxas, dividido pro-rata por dentro do intervalo . Se LPs passivos mantiverem nos ticks cruzados e nos bots JIT para o bloco, a posição JIT captura
deixando os LPs passivos que estiveram lá a semana toda com \char36 50. O bot não fez nada por 99,99% do bloco e recebeu 99% da taxa na única troca que importava – e é exatamente por isso que a receita de taxas passivas, medida honestamente, fica aquém da receita principal do pool.
E como todas as arestas legíveis da rede, o JIT foi derrotado. Depois que vários bots observam os mesmos grandes swaps pendentes e simulam a mesma captura de taxa, eles fazem lances entre si no leilão do construtor pelo direito de ficar na frente do fluxo, e a gorjeta paga ao construtor converge para a taxa capturada – o mesmo cerco que aconteceu com liquidações on-chain e atomic arb. O que resta é o resíduo: trocas perdidas por outros bots, pools com mercados construtores imaturos e a qualidade operacional para manter um grande estoque ocioso e nunca perder uma queima. É uma estratégia genuína e um negócio real; não é um varejo.
O problema, e a razão pela qual o JIT é um jogo para especialistas e não dinheiro grátis, é triplo. Ele precisa de inventário real. Ao contrário da arbitragem atômica com empréstimos instantâneos que se financia e paga em uma transação, um JIT mint-swap-burn abrange três transações separadas no bloco (a casa da moeda, a troca da vítima, a queima), portanto, um empréstimo instantâneo - que deve ser pago dentro de uma única transação - não pode financiar a perna LP. O bot JIT deve manter o capital subjacente, muitas vezes milhões em ambos os tokens, ocioso e pronto. É um pacote na cadeia de fornecimento de MEV. Ganhar o pedido – cunhar logo antes da troca, queimar logo depois – requer o envio de um pacote a um construtor de bloco através exatamente do encanamento de separação proponente-construtor dissecado no artigo MEV e mempool; O JIT compete pelo espaço do bloco e paga o construtor como qualquer outro pesquisador, e o lucro após essa oferta é pequeno. É uma seleção adversa para LPs passivos. Os bots JIT exploram o fluxo maior e mais benigno — os swaps gordos e desinformados, onde as taxas são suculentas e a toxicidade é baixa — e deixam posições passivas mantendo as negociações menores e o fluxo tóxico e informado que gera LVR. A receita de taxas realizadas de um LP passivo é inferior à receita de taxas principais do pool precisamente porque o JIT capturou as melhores fatias. Este último ponto não é apenas uma nota de rodapé económica; é uma mina terrestre na próxima seção.

Backtesting LP a partir de dados on-chain, honestamente
Cada afirmação acima – intervalos de tamanho vol superam os estáticos, rebalanceamento de banda supera periódico, LPing protegido é +EV no regime X – é uma hipótese que você deve testar em relação ao histórico da rede antes de comprometer capital. Os dados estão ali: eventos de swap e eventos de liquidez nos registros do contrato de pool, ou pré-agregados no subgráfico Uniswap. A armadilha é que um backtest de LP ingênuo é sistematicamente otimista e todos os preconceitos apontam na mesma direção. Você deve lidar com três ou seu Sharpe será ficção.
Atribuição de taxas. O atalho sedutor é estimar a receita de taxas como (volume do pool) × (nível de taxas) × (sua parcela do TVL do pool). Isto está errado em dois aspectos. As taxas são acumuladas apenas para a liquidez que está dentro da faixa no momento de cada swap, portanto, o denominador correto é sua parcela dentro da faixa , não a sua participação na TVL – e eles diferem sempre que o preço fica longe do seu centro. E o crescimento das taxas depende do caminho: depende da sequência exata de swaps e de onde cada um deixou o preço em relação aos seus limites. O único método honesto é repetir as trocas e diferenciar as feeGrowthInside acumuladores através dos limites do seu intervalo, exatamente como o contrato faz - a escrituração O(1) da peça de liquidez concentrada. O rateio do volume por TVL pode estar errado em um grande múltiplo em qualquer direção, e está mais certo quando o preço está vagando perto de suas bordas, que é o regime que você mais precisa modelar corretamente.
Alinhamento preço versus tick do pool. Existem dois preços a cada instante e eles não são iguais: o tick do próprio pool (onde fica o preço marginal do AMM após o último swap) e o intermediário externo/CEX (onde o ativo realmente é negociado). Marque sua posição no tick do pool e você incorporará o lucro do arbitrador em seus próprios retornos, porque o tick do pool fica obsoleto entre as negociações de arbitragem; marca no CEX mid e você deve alinhar os carimbos de data e hora nos locais com diferentes relógios e horários de bloco. A cadência de instantâneos agrava isso: instantâneos de subgráficos de hora em hora perdem silenciosamente os cruzamentos de faixa dentro da hora - uma posição que saiu e entrou novamente em sua faixa dentro de uma hora parece que permaneceu na faixa o tempo todo, exagerando as taxas e subestimando o LVR. Qualquer coisa que você reivindicar sobre o tempo dentro do intervalo ou LVR deve vir do nível de troca, replay com registro de data e hora do bloco, e não de marcas horárias.
MEV e JIT dentro do pool contaminando a estimativa de taxas. Este é o mais sutil e o mais perigoso, e é por isso que a seção JIT fica logo antes desta. Se você estimar a receita de taxas de uma estratégia passiva a partir da receita histórica de taxas realizadas do pool, estará creditando sua posição passiva com taxas que os bots JIT realmente capturaram – renda que um LP passivo real nunca teria visto, porque a liquidez JIT foi cunhada antes dele para essas trocas exatas. Seu backtest herda taxas fantasmas. Os mesmos swaps carregam a outra metade da distorção: uma grande fração do volume do pool é arbitragem – o fluxo tóxico e informado que é o seu LVR – portanto, contar tudo isso como um volume “bom” gerador de taxas, ignorando a seleção adversa que ele impõe, duplamente lisonjeia o resultado. Um backtest de LP honesto deve (a) reconstruir a liquidez dentro da faixa incluindo posições JIT transitórias para atribuir taxas corretamente, (b) contabilizar separadamente o LVR do caminho de preço realizado, em vez de assumir que as taxas são dinheiro grátis, e (c) tratar a arbitragem e os swaps desnatados pelo JIT como o que são - o lado dos custos do razão, não o lado das receitas. Ignore isso e sua bela estratégia de tamanho vol, reequilibrada em banda e com hedge delta parecerá lucrativa no papel e sangrará na produção, por razões que o jornal nunca lhe mostrou.
Cada um desses vieses aumenta o retorno estimado para cima, que é o pior modo de falha possível - um backtest que lisonjeia:
| Fonte de polarização | Atalho ingênuo | Método honesto | Efeito nos lucros e perdas estimados |
|---|---|---|---|
| Atribuição de taxas | volume × participação TVL | diferença feeGrowthInside na repetição de troca |
superestima ou subestima, piores bordas próximas |
| Marca de preço | carrapato de piscina | CEX médio, carimbo de data e hora do bloco alinhado | exagera (obtém lucro arb) |
| Cadência do instantâneo | instantâneos de hora em hora | nível de troca, carimbo de data/hora do bloco | exagera o tempo dentro do intervalo |
| Desnatado JIT | créditos taxas fantasmas | reconstruir JIT transitório | exagera receita de taxas |
| Fluxo de arbitragem | conta como volume "bom" | conta separadamente como LVR | exagera (ignora a seleção adversa) |
A disciplina é a mesma que separa um backtest de estratégia comercial real de uma fantasia: modele os custos com o mesmo rigor que a receita e suspeite mais do número quando ele parecer melhor.
O que levar
Execute uma posição v3 da mesma forma que uma mesa administra um livro, e as cinco decisões se alinham:
- A largura é uma aposta vol. Dimensione o intervalo como um banda -sigma de uma previsão de variância futura - GARCH, sem rastreamento realizado - para que a concentração respire com o regime em vez de permanecer em um padrão estático. O mapa para os ticks é uma linha, porque os ticks são log-price.
- O reequilíbrio é um custo de recotação, não um reflexo. Agir somente quando o aumento esperado da taxa compensar o gás + swap + LVR cristalizado; o formato correto é uma banda sem reequilíbrio e a frequência correta é muito mais baixa do que o instinto sugere. O reequilíbrio excessivo é o LVR mais um imposto autoinfligido e, para muitas posições pequenas, a contagem de reequilíbrio ideal é zero.
- O delta é o estoque. Para uma posição dentro do intervalo , o ETH que você possui atualmente; resumindo, um criminoso para publicar um livro de criação de mercado em vez de um livro direcional acidental. Gama negativa significa re-cobertura contínua, cujo custo é LVR, e o financiamento é a renda dependente do regime – muitas vezes um vento favorável, nunca uma garantia.
- JIT é o limite de um bloco de LPing ativo: liquidez profunda em torno de um único swap, IL quase zero, capital real necessário (sem empréstimo instantâneo) e um pacote na cadeia de fornecimento de MEV que retira o melhor fluxo dos LPs passivos.
- O backtest é otimista, a menos que você faça diferença
feeGrowthInsidepara atribuição, use marcas com registro de data e hora de bloco no nível de swap e trate o fluxo desnatado e de arbitragem do JIT como o lado do custo. Taxas fantasmas mais LVR ignorado é como uma estratégia perdedora passa na revisão.
O ponto principal desta série é que uma posição LP tem uma estrutura analítica exata – valor, delta, gama, LVR – e no momento em que você as anota, LPing deixa de ser “depositar e orar” e se torna uma negociação hedgeável, considerável e testável. A matemática estava em liquidez concentrada; o cálculo de rentabilidade está em [perda impermanente e LVR](/blog/perda impermanente-lvr-lp-lucratividade); esta peça é como você realmente opera a posição entre os dois. Nada disso elimina o risco. Ele apenas informa, em detalhes, qual risco você está sendo pago para assumir.
Referências
- Adams, H., Zinsmeister, N., Salem, M., Keefer, R., Robinson, D. (2021). Uniswap v3 Core (documento técnico).
- Milionis, J., Moallemi, C., Roughgarden, T., Zhang, AL (2022). Criação de mercado automatizada e perda versus reequilíbrio. arXiv:2208.06046.
- Milionis, J., Moallemi, C., Roughgarden, T. (2023). Compensações de complexidade-aproximação em mecanismos de câmbio: AMMs vs. LOBs e trabalho relacionado de LVR com taxas. arXiv:2302.11737.
- Cartea, Á., Drissi, F., Monga, M. (2023). Perdas Previsíveis de Provisão de Liquidez em Mercados de Função Constante e Mercados de Liquidez Concentrada. arXiv:2309.08431.
- Fritsch, R., et al. (2023). Analisando e comparando a liquidez Just-in-Time (JIT) no Uniswap v3.
- Subgrafo Uniswap e bibliotecas principais:
Position.sol,Tick.sol,SqrtPriceMath.sol(crescimento das taxas e cálculo do valor para uma reprodução honesta). - Bollerslev, T. (1986). Heterocedasticidade Condicional Autoregressiva Generalizada — a previsão GARCH(1,1) por trás do dimensionamento do intervalo.
Authors
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.