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.7.tar.gz (71.8 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.7-py3-none-any.whl (129.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uniswappy-1.7.7.tar.gz
  • Upload date:
  • Size: 71.8 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.7.tar.gz
Algorithm Hash digest
SHA256 0505e59aeae3c07728cfeed9299447a41bf7e4956629bee7498752825248c77e
MD5 7b6ae163f52afbdb591c96625536c27c
BLAKE2b-256 d7530da986470e832d9319bed284560b7ae9a7bc101276a80427e2b7fae7d872

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uniswappy-1.7.7-py3-none-any.whl
  • Upload date:
  • Size: 129.2 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a1ca1c2eac5fddd4870c846a6efa77b6259a6f94fcdc79372067b437617a26cb
MD5 a9c05307a08b546a0cdf6c56101e6191
BLAKE2b-256 326e725e1e78888177b208c317f1d14703190d0453a5f49ee4c8573ee7b16ba2

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