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.9.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.9-py3-none-any.whl (133.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uniswappy-1.7.9.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.9.tar.gz
Algorithm Hash digest
SHA256 fc2e01f491036c64e3944fa076e4dfa166b39934b46f1d4547915b2af63b1222
MD5 42cf86dfe7c3f8d6a9d3c10b03a85b87
BLAKE2b-256 61fa0b9bd0247b448ec81ec5d54f2c0bf3fd0d000920a36024c295a3d7c5144c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uniswappy-1.7.9-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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 4f3ae5e1ad3f4bf10231ace2a852e34d6b64f4f51628b79d7a05da2e29fafbde
MD5 a2ba227d39ae0dd5020b87d0ac0a8d10
BLAKE2b-256 4438a207d27f7d32d592a3648908e6d61f1938999669e750b430fe8ce4e3d78e

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