Skip to main content

Uniswap Analytics with Python

Project description

UniswapPy: Uniswap V2 / V3 Analytics with Python

This package contains python re-factors of both original Uniswap V2 and V3 pairing codes, and can be utilized for the purpose of analysing and modelling its behavior for DeFi.

🔗 SPDX-Anchor: anchorregistry.ai/AR-2026-M86pm5A

📘 Official Textbook

Looking for a structured, graduate-level walkthrough of DeFiPy and DeFi analytics?

DeFiPy: Python SDK for On-Chain Analytics is the official companion textbook for this project.
It covers:

  • AMM math and invariants (Uniswap V2 & V3, Balancer, Stableswap)
  • On-chain analytics and pool/event decoding
  • Python workflows for DeFi modeling and simulation
  • Agent-based architectures and risk pipelines built on DeFiPy

👉 Buy on Amazon: https://www.amazon.com/dp/B0G3RV5QRB

📝 Docs

Visit DeFiPy docs for full documentation

🔍 Install

> git clone https://github.com/defipy-devs/uniswappy
> pip install .

or

> pip install UniswapPy

Uniswap V2

from uniswappy import *

user_nm = 'user'
eth_amount = 1000
tkn_amount = 100000

tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")

factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)

Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()

OUTPUT:

Exchange ETH-TKN (LP)
Reserves: ETH = 1000, TKN = 100000
Liquidity: 10000.0

out = Swap().apply(lp, tkn, user_nm, 1000)
lp.summary()

OUTPUT:

Exchange ETH-TKN (LP)
Reserves: 990.1284196560293, TKN = 101000
Liquidity: 10000.0

Uniswap V3

from uniswappy import *

user_nm = 'user'
eth_amount = 1000
tkn_amount = 100000

eth = ERC20("ETH", "0x09")
tkn = ERC20("TKN", "0x111")

exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", 
                                   address="0x011", version = 'V3', 
                                   tick_spacing = tick_spacing, 
                                   fee = fee)

factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)

out_v3 = Join().apply(lp, user_nm, eth_amount, tkn_amount, lwr_tick, upr_tick)
lp.summary()

OUTPUT:

Exchange ETH-TKN (LP)
Reserves: ETH = 1000, TKN = 100000
Liquidity: 10000.0

out = Swap().apply(lp, tkn, user_nm, 1000)
lp.summary()

OUTPUT:

Exchange ETH-TKN (LP)
Real Reserves: ETH = 990.1284196560293, TKN = 101000
Liquidity: 10000.0

0x Quant Terminal

This application utilizes the 0x API to produce a mock Uniswap pool which allows end-users to stress test the limitations of a Uniswap pool setup using live price feeds from 0x API; for backend setup, see notebook

Click dashboard.defipy.org for live link; for more detail see README

plot

Run application locally

> bokeh serve --show python/application/quant_terminal/bokeh_server.py

Special Features

If you find this package helpful, please leave a ⭐!

Testing

Run the full test suite from the repo root:

> python -m pytest python/test/ -v

Tests cover V2 and V3 functionality including:

  • Process: join, swap, deposit, withdraw, add/remove liquidity
  • CPT index: rebase index token, settlement LP token, round-trip identity
  • Quotes: LP token pricing and reserve queries
  • Analytics: impermanent loss calculations
  • V3: mint, swap, LP quote, settlement, and rebase with tick ranges

Requirements

> pip install pytest

License

Licensed under the Apache License, Version 2.0.
See LICENSE and NOTICE for details.
Portions of this project may include code from third-party projects under compatible open-source licenses.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uniswappy-1.7.6.tar.gz (71.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uniswappy-1.7.6-py3-none-any.whl (129.1 kB view details)

Uploaded Python 3

File details

Details for the file uniswappy-1.7.6.tar.gz.

File metadata

  • Download URL: uniswappy-1.7.6.tar.gz
  • Upload date:
  • Size: 71.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for uniswappy-1.7.6.tar.gz
Algorithm Hash digest
SHA256 c8b041a931f39c836dd5eb9b6afa0fea2fba14d01a497a0cf60032f889cbfc5e
MD5 9b44e377717965a4dac263a6547eeb25
BLAKE2b-256 3c20d1856a185b27cfe675b434302f6baa03cd40362f4adb066219f478f67e68

See more details on using hashes here.

File details

Details for the file uniswappy-1.7.6-py3-none-any.whl.

File metadata

  • Download URL: uniswappy-1.7.6-py3-none-any.whl
  • Upload date:
  • Size: 129.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for uniswappy-1.7.6-py3-none-any.whl
Algorithm Hash digest
SHA256 15c2d930a8dfc2ac50ee8b93aeea8336432f276fb1e5e669254bef42c5a547a2
MD5 fa42e73b0b25918b78dd7bfa1a750c8c
BLAKE2b-256 418f90fb3a190490a6c2b3f4bfce32dd7d6f6f16d6ea1594d1ac9ef11a2f8a5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page