defipy-devs/uniswappy
defipy-devs/uniswappy has 48 GitHub stars and 12 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-10 04:44 UTC. Last push 2026-05-15.
Uniswap V2 / V3 Analytics with Python
What you can do
- Abstracted Actions: Obfuscation is removed from standard Uniswap action events to help streamline analysis and lower line count; see article How to Handle Uniswap Withdrawals like an OG, and Setup your Uniswap Deposits like a Baller
- Indexing: Can calculate settlment LP token amounts given token amounts and vice versa; see article The Uniswap Indexing Problem
- Simulation: Can simulate trading using Geometric Brownian Motion (GBM) process, or feed in actual raw price data to analyze behavior; see article How to Simulate a Liquidity Pool for Decentralized Finance
- Randomized Events: Token amount and time delta models to simulate possible trading behavior
Measured star growth
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalUniswapPy: 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
📝 Disclaimer
UniswapPy is an unofficial, independent Python library for analytics, simulation, and modeling of the Uniswap protocol. It is not affiliated with, endorsed by, or associated with Uniswap Labs.
📝 Docs
Visit DeFiPy docs for full documentation
🔍 Install
> git clone https://github.com/defipy-devs/uniswappy
> pip install .
or
> pip install UniswapPy
Uniswap V2
- See test notebook for basic usage and tutorial on Uniswap V2 math
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
- See test notebook for basic usage and tutorial on Uniswap V3 math
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

Run application locally
> bokeh serve --show python/application/quant_terminal/bokeh_server.py
Special Features
- Abstracted Actions: Obfuscation is removed from standard Uniswap action events to help streamline analysis and lower line count; see article How to Handle Uniswap Withdrawals like an OG, and Setup your Uniswap Deposits like a Baller
- Indexing: Can calculate settlment LP token amounts given token amounts and vice versa; see article The Uniswap Indexing Problem
- Simulation: Can simulate trading using Geometric Brownian Motion (GBM) process, or feed in actual raw price data to analyze behavior; see article How to Simulate a Liquidity Pool for Decentralized Finance
- Randomized Events: Token amount and time delta models to simulate possible trading behavior
- Analytical Tools: Basic yeild calculators and risk tools to assist in analyzing outcomes; see article How to Simulate a Uniswap V3 Order Book in Python
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.
Explore related projects
Asabeneh/30-Days-Of-Python
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,486 starsgrafana/grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
77,790 starsredis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.
77,332 starsapache/superset
Apache Superset is a Data Visualization and Data Exploration Platform
75,455 stars