Metadata-Version: 2.1
Name: defi
Version: 1.0.17
Summary: UNKNOWN
Home-page: https://github.com/gauss314/defi
Author: Juan Pablo Pisano
Author-email: jpp.programacion@gmail.com
License: UNKNOWN
Description: <br>
        
        # DeFi open source tools
        
        [![Downloads](https://pepy.tech/badge/defi)](https://pepy.tech/project/defi)
        [![License](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/gauss314/defi/blob/main/LICENSE.txt)
        [![Twitter](https://img.shields.io/twitter/follow/JohnGalt_is_www?color=blue&style=flat-square)](https://twitter.com/JohnGalt_is_www)
        [![Update](https://img.shields.io/github/last-commit/gauss314/defi)](https://github.com/gauss314/defi)
        [![Update](https://img.shields.io/pypi/pyversions/defi?color=green&label=python)](https://pypi.org/project/defi/)
        
        <br>
        
        ## Get Started
        * [Instalation](#instalation)
        
        ## General Tools
        * [Impermanent Loss, simple calculation](#impermanent-loss)
        * [Compare Buy & Hold with Staking and Farming](#buyhold-vs-stake--farming-strategy)
        * [Complete list for DeFi protocols TVL, volume and more](#defi-protocols)
        * [Example listing top20 DeFi dapps by TVL](#top-20-dapps-tvl-by-chain)
        * [Example show historical TVL for one or more protocols ](#historical-tvl)
        
        ## CoinGecko API
        * [API endpoints](#coingecko-api)
        * [Get IDs list](#coingecko---ids-list)
        * [Live prices](#coingecko---get-price-for-coins-at-diferent-currencies)
        * [All exchanges and prices for each coin](#coingecko---get-main-exchanges-for-a-coin-or-token)
        * [Historial prices por each coin](#coingecko---historical-prices-for-a-coin)
        * [Simulate Farming Strategy](#coingecko---farming-simulate)
        
        ## PancakeSwap API
        * [All token prices real time](#pancakeswap---get-tokens-prices-in-real-time)
        * [All pairs liquidity, volume and more](#pancakeswap---get-pairs-liquidity-and-more)
        * [Get data in real time for one token](#pancakeswap---get-token-info)
        * [Get data in real time for one pair](#pancakeswap---get-pair-info)
        * [Simulate invest in LP considering impermanent loss, 3D graph](#pancakeswap---simulate-lp-invest)
        
        
        
        <br><br>
        
        ## Get started
        
        <br>
        
        ### Instalation
        
        
        ```sh
        pip install defi
        ```
        
        <br>
        
        ### Impermanent Loss
        
        ```python
        import defi.defi_tools as dft
        
        # Impermanent loss for stableCoin & -20% return token 
        dft.iloss(0.8)
        ```
        > -0.62%
        
        
        
        ```python
        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%
        
        
        <br>
        
        ### Buy&Hold vs Stake & Farming strategy
        
        
        ```python
        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)
        ```
        
        ```json
        {
         "buy_hold": "75.00%",
         "stake": "75.60%",
         "farm": "71.96%",
         "Best": "Stake"
        }
        ```
        
        <br>
        
        ### DeFi protocols
        
        
        ```python
        import defi.defi_tools as dft
        
        metadata, df = dft.getProtocol('Uniswap')
        metadata
        ```
        
        ```json
        {
         "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"
        }
        ```
        
        <br>
        
        ### Top 20 dapps TVL by chain
        
        ```python
        import defi.defi_tools as dft
        import matplotlib.pyplot as plt
        
        df = dft.getProtocols()
        fig, ax = plt.subplots(figsize=(12,6))
        
        n = 50 # quantity to show
        top = df.sort_values('tvl', ascending=False).head(n)
        
        chains = top.groupby('chain').size().index.values.tolist()
        for chain in chains:
            filtro = top.loc[top.chain==chain]
            ax.bar(filtro.index, filtro.tvl, label=chain)
        
        ax.set_title(f'Top {n} dApp TVL, groupBy dApp main Chain', fontsize=14)
        ax.grid(alpha=0.5)
        plt.legend()
        plt.xticks(rotation=90)
        plt.show()
        ```
        <img src="images/top20_dapps.png" width=600>
        
        
        <br>
        ### Historical TVL
        
        
        ```python
        import defi.defi_tools as dft
        import pandas as pd
        
        exchanges = ['pancakeswap', 'curve', 'makerdao', 'uniswap','Compound', 'AAVE','sushiswap','anchor']
        
        hist = [dft.getProtocol(exchange)[1] for exchange in exchanges]
        df = pd.concat(hist, axis=1)
        df.columns = exchanges
        
        df.plot(figsize=(12,6))
        ```
        <img src="images/main_dapps.png" width=600>
        
        
        <br>
        
        ### CoinGecko API
        
        Endpoints available, some examples:
        
            * dft.getGeckoIDs()
                # coinGecko first 5000 ids
        
        	* 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 
        
            * dft.farmSimulate(['huobi-token','tether'], apr=45)
                # Simulate farming strategy with apr=45% 
        
        
        ### CoinGecko - ids list
        ```python
        import defi.defi_tools as dft
        
        ids = dft.getGeckoIDs()
        ids[:10]
        ```
        <pre>
        ['bitcoin',
         'ethereum',
         'binancecoin',
         'tether',
         'solana',
         'cardano',
         'ripple',
         'polkadot',
         'shiba-inu',
         'dogecoin']
        </pre>
        
        
        ### CoinGecko - Get price for coins at diferent currencies
        ```python
        import defi.defi_tools as dft
        
        dft.geckoPrice("bitcoin,ethereum", "usd,eur,brl")
        ```
        
        ```json
        {"ethereum": {"usd": 2149.85, "eur": 1807.58, "brl": 12208.77},
         "bitcoin": {"usd": 60188, "eur": 50606, "brl": 341802}}
        ```
        
        <br>
        
        ### CoinGecko - Get main exchanges for a coin or token 
        ```python
        import defi.defi_tools as dft
        
        df = dft.geckoMarkets("ethereum")
        print(df.info())
        # returns top 100 ethereum quotes by volume
        ```
        ```text
        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
        ```
        
        <br>
        
        ### CoinGecko - historical prices for a coin
        ```python
        import defi.defi_tools as dft
        
        df = dft.geckoHistorical('cardano')
        print(df)
        ```
        <pre>
                                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]
        </pre>
        
        
        ### CoinGecko - Farming Simulate
        ```python
        import defi.defi_tools as dft
        
        pair = ['huobi-token','tether']
        apr = 45
        
        dft.farmSimulate(pair, apr, start='2021-01-01')
        ```
        <pre>
        Downloading huobi-token
        Downloading tether
        {'Token 1': 'huobi-token',
         'Token 2': 'tether',
         'start': '2021-01-01',
         'fixed APR': '45%',
         'Buy & Hold': '68.90%',
         'Impermanent Loss': '-8.66%',
         'Farming Rewards': '75.45%',
         'Farming + Rewards - IL': '153.02%'}
        
        </pre>
        <img src="images/simulate.png" width=800>
        
        
        <br>
        
        ### PancakeSwap - Get tokens prices in real time
        ```python
        import defi.defi_tools as dft
        
        df = dft.pcsTokens()
        print(df)
        ```
        ```text
                                                                 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]
        ```
        
        <br>
        
        ### PancakeSwap - Get pairs, liquidity, and more
        ```python
        import defi.defi_tools as dft
        
        pairs = dft.pcsPairs(as_df=False)
        print(pairs)
        ```
        
        ```json
        {"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"
        	},
        }
        ```
        
        <br>
        
        ### PancakeSwap - Get token info
        ```python
        import defi.defi_tools as dft
        dft.pcsTokenInfo('cake')
        ```
        ```json
        {"name": "PancakeSwap Token",
         "symbol": "Cake",
         "price": "24.03353223898417117634582253598019",
         "price_BNB": "0.04503467915973850237292527741402623"
        }
        ```
        
        <br>
        
        ### PancakeSwap - Get pair info
        ```python
        import defi.defi_tools as dft
        dft.pcsPairInfo('cake','bnb')
        ```
        
        ```json
        {"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"
        }
        ```
        
        <br>
        
        ### PancakeSwap - Simulate LP invest
        ```python
        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)
        ```
        <img src="images/imp_loss_3d.png" width=600>
        
        
        
        
        <br>
        
        ### About
        
        - twitter user  [@JohnGalt_is_www](https://twitter.com/JohnGalt_is_www)
Keywords: defi,impermanent loss,finance,cryptos,bitcoin,liquidity pool,farming,bsc,eth,terra,heco,blockchain
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
