Tools for use in DeFi. Impermanent Loss calculations, staking and farming strategies, coingecko and pancakeswap API queries, liquidity pools and more

Overview

DeFi open source tools

Downloads License Twitter Update Update


Get Started

General Tools

CoinGecko API

PancakeSwap API



Get started


Instalation

pip install defi

Impermanent Loss

import defi.defi_tools as dft

# Impermanent loss for stableCoin & -20% return token 
dft.iloss(0.8)

-0.62%

import defi.defi_tools as dft

# Impermanent loss for stableCoin & +60% return token 
dft.iloss(1.6, numerical=True)

0.027 # Same as 2.7%


Buy&Hold vs Stake & Farming strategy

import defi.defi_tools as dft

# Exercise: Get returns after 20 days, assuming token A is a stablecoin, token B perform + 150%
# individual staking pools for both = 0.01% & 0.05% daily
# liquidity-pool farming rewards =0.2% daily & Earn by fees/day = 0.01%
dft.compare(days=20, var_A=0, var_B=150, rw_pool_A=0.01, rw_pool_B=0.05, rw_pool_AB=0.2, fees_AB=0.01)
{
 "buy_hold": "75.00%",
 "stake": "75.60%",
 "farm": "71.96%",
 "Best": "Stake"
}

DeFi protocols

import defi.defi_tools as dft

metadata, df = dft.getProtocol('Uniswap')
metadata
{
 "id": "1",
 "name": "Uniswap",
 "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
 "symbol": "UNI",
 "url": "https://info.uniswap.org/",
 "description": "A fully decentralized protocol for automated liquidity provision on Ethereum.\r\n",
 "chain": "Ethereum",
 "logo": "None",
 "audits": "2",
 "audit_note": "None",
 "gecko_id": "uniswap",
 "cmcId": "7083",
 "category": "Dexes",
 "chains": ["Ethereum"],
 "module": "uniswap.js"
}

Top 20 dapps TVL by chain

import defi.defi_tools as dft
import matplotlib.pyplot as plt

df = dft.getProtocols()
fig, ax = plt.subplots(figsize=(12,6))
top_20 = df.sort_values('tvl', ascending=False).head(20)

chains = top_20.groupby('chain').size().index.values.tolist()
for chain in chains:
    filtro = top_20.loc[top_20.chain==chain]
    ax.bar(filtro.index, filtro.tvl, label=chain)

ax.set_title('Top 20 dApp TVL, groupBy dApp main Chain', fontsize=14)
plt.legend()
plt.xticks(rotation=90)
plt.show()

import defi.defi_tools as dft
import pandas as pd

exchanges = ['pancakeswap', 'venus', 'uniswap','Compound', 'AAVE']

hist = [dft.getProtocol(exchange)[1] for exchange in exchanges]
df = pd.concat(hist, axis=1)
df.columns = exchanges
df.plot(figsize=(12,6))


CoinGecko API

Endpoints available, some examples:

* dft.geckoPrice("bitcoin,ethereum", "usd,eur,brl")
	# coinGecko quotes

* dft.geckoList(page=1, per_page=250)
	# full coinGecko cyptocurrency list

* dft.geckoMarkets("ethereum")
	# top 100 liquidity markets, prices, and more, for eth or other coin

* dft.geckoHistorical('cardano')
	# full history containing price, market cap and volume 

CoinGecko - Get price for coins at diferent currencies

import defi.defi_tools as dft

dft.geckoPrice("bitcoin,ethereum", "usd,eur,brl")
{"ethereum": {"usd": 2149.85, "eur": 1807.58, "brl": 12208.77},
 "bitcoin": {"usd": 60188, "eur": 50606, "brl": 341802}}

CoinGecko - Get main exchanges for a coin or token

import defi.defi_tools as dft

df = dft.geckoMarkets("ethereum")
print(df.info())
# returns top 100 ethereum quotes by volume
Index: 100 entries, IDCM to FTX.US
Data columns (total 9 columns):
 #   Column       Non-Null Count  Dtype              
---  ------       --------------  -----              
 0   base         100 non-null    object             
 1   target       100 non-null    object             
 2   last         100 non-null    float64            
 3   volume       100 non-null    float64            
 4   spread       100 non-null    float64            
 5   timestamp    100 non-null    datetime64[ns, UTC]
 6   volume_usd   100 non-null    float64            
 7   price_usd    100 non-null    float64            
 8   trust_score  100 non-null    object             
dtypes: datetime64[ns, UTC](1), float64(5), object(3)
memory usage: 7.8+ KB

CoinGecko - historical prices for a coin

import defi.defi_tools as dft

df = dft.geckoHistorical('cardano')
print(df)
                        price   market_caps  total_volumes
date                                                      
2017-10-18 00:00:00  0.026845  6.960214e+08   2.351678e+06
2017-10-19 00:00:00  0.026830  6.956220e+08   2.815156e+06
2017-10-20 00:00:00  0.030300  7.855800e+08   8.883473e+06
2017-10-21 00:00:00  0.028588  7.412021e+08   5.308857e+06
2017-10-22 00:00:00  0.027796  7.206698e+08   2.901876e+06
...                       ...           ...            ...
2021-04-13 00:00:00  1.319790  4.223483e+10   5.005258e+09
2021-04-14 00:00:00  1.422447  4.565529e+10   5.693373e+09
2021-04-15 00:00:00  1.456105  4.676570e+10   8.920293e+09
2021-04-16 00:00:00  1.478071  4.730118e+10   5.151595e+09
2021-04-17 03:47:55  1.433489  4.595961e+10   5.152747e+09

[1278 rows x 3 columns]

PancakeSwap - Get tokens prices in real time

import defi.defi_tools as dft

df = dft.pcsTokens()
print(df)
                                                         name     symbol       price  price_BNB                 updated
0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82  PancakeSwap Token       Cake     24.0636     0.0450 2021-04-17 04:29:08.332
0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c        Wrapped BNB       WBNB    534.2575     1.0000 2021-04-17 04:29:08.332
0x0F9E4D49f25de22c2202aF916B681FBB3790497B             Perlin        PRL      0.2091     0.0004 2021-04-17 04:29:08.332
0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56         BUSD Token       BUSD      1.0000     0.0019 2021-04-17 04:29:08.332
0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c         BTCB Token       BTCB  62166.5517   116.3604 2021-04-17 04:29:08.332
...                                                       ...        ...         ...        ...                     ...
0xB6802C06A441BA63624751C53C7c0708b75F06EC          FinalMoon  FINALMOON      0.0651     0.0001 2021-04-17 04:29:08.332
0x2cF0DA1EB4165d73156CE1E32450e4A0E1c1791b        FairUnicorn       FUni      0.0000     0.0000 2021-04-17 04:29:08.332
0x5CeD26185f82B07E1516d0B013c54CcBD252A4Ad            Peaches      PEACH      0.1130     0.0002 2021-04-17 04:29:08.332
0x2bA64EFB7A4Ec8983E22A49c81fa216AC33f383A        Wrapped BGL       WBGL      0.1000     0.0002 2021-04-17 04:29:08.332
0x019bE1796178516e060072004F267B59a49A0801     Pepper Finance       PEPR      0.1819     0.0003 2021-04-17 04:29:08.332

[854 rows x 5 columns]

PancakeSwap - Get pairs, liquidity, and more

import defi.defi_tools as dft

pairs = dft.pcsPairs(as_df=False)
print(pairs)
{"updated_at": 1618645355351,
 "data": {"0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82_0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c": 
 	{"pair_address": "0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6",
	   "base_name": "PancakeSwap Token",
	   "base_symbol": "Cake",
	   "base_address": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82",
	   "quote_name": "Wrapped BNB",
	   "quote_symbol": "WBNB",
	   "quote_address": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
	   "price": "0.04503969270521829587",
	   "base_volume": "5473068.824002232134035221",
	   "quote_volume": "239997.1228321299572591638",
	   "liquidity": "1076144814.0632013827775993748053",
	   "liquidity_BNB": "2007551.221740467021401314"
	},
}

PancakeSwap - Get token info

import defi.defi_tools as dft
dft.pcsTokenInfo('cake')
{"name": "PancakeSwap Token",
 "symbol": "Cake",
 "price": "24.03353223898417117634582253598019",
 "price_BNB": "0.04503467915973850237292527741402623"
}

PancakeSwap - Get pair info

import defi.defi_tools as dft
dft.pcsPairInfo('cake','bnb')
{"pair_address": "0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6",
 "base_name": "PancakeSwap Token",
 "base_symbol": "Cake",
 "base_address": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82",
 "quote_name": "Wrapped BNB",
 "quote_symbol": "WBNB",
 "quote_address": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
 "price": "0.04503969270521829587",
 "base_volume": "5473068.824002232134035221",
 "quote_volume": "239997.1228321299572591638",
 "liquidity": "1076144814.0632013827775993748053",
 "liquidity_BNB": "2007551.221740467021401314"
}

PancakeSwap - Simulate LP invest

import defi.defi_tools as dft
dft.value_f, iloss = dft.iloss_simulate('cake','bnb', value=1000, base_pct_chg=50, quote_pct_chg=-25)


About

Owner
Juan Pablo Pisano
Profe @UCEMA-QUANt empresario pyme, programador, matemático, ingeniero UTN FRBA, altoNerd, Autor de libros: "Python para finanzas Quant"
Juan Pablo Pisano
QR login for pyrogram client

Generate Pyrogram session via QRlogin

ポキ 18 Oct 21, 2022
My telegram bot to download Instagram Profiles

Instagram Profile Get for Telegram My telegram bot to download Instagram Profiles First you have to get a telegrm bot api key from @BotFather Then you

Ali Yoonesi 2 Sep 22, 2022
An Telegram Bot By @ZauteKm To Stream Videos In Telegram Voice Chat Of Both Groups & Channels. Supports Live Streams, YouTube Videos & Telegram Media !!

Telegram Video Stream Bot (Py-TgCalls) An Telegram Bot By @ZauteKm To Stream Videos In Telegram Voice Chat Of Both Groups & Channels. Supports Live St

Zaute Km 14 Oct 21, 2022
GUI Pancakeswap2 and Uniswap3 trading client (and bot)

GUI Pancakeswap2 and Uniswap3 trading client (and bot) (MOST ADVANCE TRADING BOT SUPPORT WINDOWS LINUX MAC) (AUTO BUY TOKEN ON LUNCH AFTER ADD LIQUIDI

16 Dec 23, 2021
Wrapper for Between - 비트윈을 위한 파이썬 라이브러리

PyBetween Wrapper for Between - 비트윈을 위한 파이썬 라이브러리 Legal Disclaimer 오직 교육적 목적으로만 사용할수 있으며, 비트윈은 VCNC의 자산입니다. 악의적 공격에 이용할시 처벌 받을수 있습니다. 사용에 따른 책임은 사용자가

1 Mar 15, 2022
Discord ToolBox is a discord bot developed by DJD320 created for the purpose of having some convenient tools in the form of a single bot.

Discord ToolBox Discord ToolBox is a discord bot developed by DJD320 created for the purpose of having some convenient tools in the form of a single b

3 Aug 07, 2021
An API that allows you to get full information about TikTok videos

TikTok-API An API that allows you to get full information about TikTok videos without using any third party sources and only the TikTok API. ##API onl

FC 13 Dec 20, 2021
ClearML - Auto-Magical Suite of tools to streamline your ML workflow. Experiment Manager, MLOps and Data-Management

ClearML - Auto-Magical Suite of tools to streamline your ML workflow Experiment Manager, MLOps and Data-Management ClearML Formerly known as Allegro T

ClearML 3.9k Jan 01, 2023
Bot telegram yang menggemakan pesan apa pun yang Anda kirim atau modifikasi untuk menganonimkan pesan

Bot telegram yang menggemakan pesan apa pun yang Anda kirim atau modifikasi untuk menganonimkan pesan

KEN KAN 2 Oct 21, 2022
Simple Telegram Bot to Download and Upload Files From Mega.nz

Mega.nz-Bot Simple Telegram Bot to Download Files From Mega.nz and Upload It to Telegram Features All Mega.nz File Links supported No login required A

I'm Not A Bot #Left_TG 245 Jan 01, 2023
Python bindings for ArrayFire: A general purpose GPU library.

ArrayFire Python Bindings ArrayFire is a high performance library for parallel computing with an easy-to-use API. It enables users to write scientific

ArrayFire 402 Dec 20, 2022
Easy to use phishing tool with 63 website templates. Author is not responsible for any misuse.

PyPhisher [+] Created By KasRoudra [+] Description : Ultimate phishing tool in python. Includes popular websites like facebook, twitter, instagram, gi

KasRoudra 1.1k Jan 01, 2023
Python Twitter API

Python Twitter Tools The Minimalist Twitter API for Python is a Python API for Twitter, everyone's favorite Web 2.0 Facebook-style status updater for

Mike Verdone 2.9k Jan 03, 2023
A multi-platform HTTP(S) Reverse Shell Server and Client in Python 3

Phantom - A multi-platform HTTP(S) Reverse Shell Server and Client Phantom is a multi-platform HTTP(S) Reverse Shell server and client in Python 3. Bi

85 Nov 18, 2022
Fetching tweets and integrating it with Kafka and PySpark

KafkaPySpark Zookeeper bin/zookeeper-server-start.sh config/zookeeper.properties Kafka Server bin/kafka-server-start.sh config/server.properties Kafka

Priyansh 2 Dec 29, 2021
WallAlley.bot is an open source and free to use financial discord bot originaly build for WallAlley server's community

WallAlley.bot About WallAlley.bot is an open source and free to use financial discord bot originaly build for WallAlley server's community. All data a

Mohammad KHADDAN 1 Jan 22, 2022
Library written in Python that wraps Halo Infinite API.

haloinfinite Library written in Python that wraps Halo Infinite API. Before start It's unofficial, reverse-engineered, neither stable nor production r

Miguel Ferrer 4 Dec 28, 2022
Wrapper for the Swiss Parliament API for Python

swissparlpy This module provides easy access to the data of the OData webservice of the Swiss parliament. Table of Contents Installation Usage Get tab

Stefan Oderbolz 8 Jun 13, 2022
An EmbedBuilder in Python for discord.py embeds. Pip Module.

Discord.py-MaxEmbeds An EmbedBuilder for Discord bots in Python. You need discord.py to use this module. Installation Step 1 First you have to install

Max Tischberger 6 Jan 13, 2022
Live Coding - Mensageria na AWS com Amazon SNS e Amazon SQS

Live Coding - Mensageria na AWS com Amazon SNS e Amazon SQS Repositório para o Live Coding do dia 08/12/2021 Serviços utilizados Amazon SNS Amazon SQS

Cassiano Ricardo de Oliveira Peres 3 Mar 01, 2022