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

Uploaded Python 3

File details

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

File metadata

  • Download URL: uniswappy-1.7.8.tar.gz
  • Upload date:
  • Size: 75.4 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.8.tar.gz
Algorithm Hash digest
SHA256 abea3708469330a5496d05a9b409dc076366642bfb8920c7406633c95901f681
MD5 e8e4b6896e010501847a2c9db26df60f
BLAKE2b-256 4144f74155032f534b0426bac6c0cb776932724b5a3e27c1565468d193b982c2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uniswappy-1.7.8-py3-none-any.whl
  • Upload date:
  • Size: 133.7 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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 e1531f70f4273315ead6a0419f14aeba0824dc9b56b14a52c03323eac385b0a7
MD5 3d0d778911708ddf6287b90d6e98aca6
BLAKE2b-256 b02c1473fca27fff53926600b5a867a2e8bc0667791ac63e4a249b82d4c28f0b

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