Skip to main content

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.

Metadata

Release files for UniswapPy 1.7.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for UniswapPy 1.7.9
File Size Uploaded
uniswappy-1.7.9.tar.gz 75.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for UniswapPy 1.7.9
File Interpreter ABI Platform
uniswappy-1.7.9-py3-none-any.whl Python 3 none any Details

Total release size: 209.1 kB

Release files / uniswappy-1.7.9.tar.gz

Download URL uniswappy-1.7.9.tar.gz
Size 75.4 kB
Tags Source
SHA-256 checksum
How to use checksums
fc2e01f491036c64e3944fa076e4dfa166b39934b46f1d4547915b2af63b1222
BLAKE2b-256 checksum
How to use checksums
61fa0b9bd0247b448ec81ec5d54f2c0bf3fd0d000920a36024c295a3d7c5144c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / uniswappy-1.7.9-py3-none-any.whl

Download URL uniswappy-1.7.9-py3-none-any.whl
Size 133.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f3ae5e1ad3f4bf10231ace2a852e34d6b64f4f51628b79d7a05da2e29fafbde
BLAKE2b-256 checksum
How to use checksums
4438a207d27f7d32d592a3648908e6d61f1938999669e750b430fe8ce4e3d78e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

1.7.9 This release

2 release files

1.7.8

2 release files

1.7.7

2 release files

1.7.6

2 release files

1.7.5

1 release file

1.7.4

1 release file

1.7.3

1 release file

1.7.2

1 release file

1.7.0

1 release file

1.6.2

1 release file

1.6.1

1 release file

1.6.0

1 release file

1.5.6

1 release file

1.5.5

1 release file

1.5.4

1 release file

1.5.3

1 release file

1.5.2

1 release file

1.5.1

1 release file

1.5.0

1 release file

1.4.0

1 release file

1.3.0

1 release file

1.2.0

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page