見出し画像

DefiLlamaのAPIを活用したDeFi戦略

1が一番実装が簡単で、下に行くほど難しくなる。

1. DeFiの市場動向を捉えるダッシュボードの作成

  • APIから取得したデータを可視化するだけで実装可能

  • 市場トレンドの把握に直結し、他の戦略の基盤となる

  • 基本的には、Defillama本家のサイトで良いため、差別化を図る必要がある

2. DeFiプロトコル間の利回り比較

  • APIから各プロトコルの利回りデータを取得し、比較するだけで実装可能

  • 利回りの高いプロトコルを特定し、投資判断に活用できる

  • 計算ロジックがシンプルで、実装が容易

3. TVLの動向分析

  • APIからTVLデータを取得し、時系列でプロットするだけで実装可能

  • DeFi市場の全体的な資金の流れを把握できる

4. DeFiプロジェクトのデューデリジェンスに活用

  • APIから必要なデータを取得し、分析・可視化するだけで実装可能

  • 投資判断の材料として、プロジェクトの評価に活用できる

  • ただし、定性的な情報の収集・評価は別途必要

例)TVL取得

以下は、DeFi Llama APIを使用して、指定されたチェーンとカテゴリの上位のDeFiプロトコルを、TVLの降順で取得し、表示するPythonスクリプト

import requests
import pandas as pd
from datetime import datetime

base_url = 'https://api.llama.fi'

# プロトコルエンドポイントからデータを取得
protocols = requests.get(base_url + '/protocols')

# データをデータフレームに変換
protocol_data = pd.DataFrame.from_dict(protocols.json())

# 事前に定義された変数
chain_name = 'All'  # 'All' または特定のチェーン名(例: 'Ethereum', 'Polygon')
category = 'All'  # 'All' または特定のカテゴリ名(例: 'Dexes', 'Lending', 'Yield')
num_protocols = 5  # 表示するプロトコルの数

# チェーンとカテゴリによるフィルタリング
if chain_name != 'All':
    protocol_data = protocol_data[protocol_data['chain'] == chain_name]
if category != 'All':
    protocol_data = protocol_data[protocol_data['category'] == category]

# ブロックチェーンが存在しない場合のエラーハンドリング
if protocol_data.empty:
    print(f"No protocols found for the selected chain and category.")
    exit()

# CEXを除外
protocol_data = protocol_data[protocol_data['category'] != 'CEX']

# TVLの降順でソート
protocol_data = protocol_data.sort_values('tvl', ascending=False)

# 指定された数のプロトコルを選択
top_protocols = protocol_data.head(num_protocols)

# 必要な列のみを選択
top_protocols = top_protocols[['name', 'symbol', 'category', 'chain', 'tvl']]

# TVLを百万ドル単位に変換
top_protocols['tvl'] = top_protocols['tvl'] / 1000000

# 列名を変更
top_protocols.columns = ['Name', 'Symbol', 'Category', 'Chain', 'TVL (millions)']

# 現在の日付を取得
current_date = datetime.now().strftime("%Y-%m-%d")

# 結果を表示
print(f"Top {num_protocols} Protocols by TVL (excluding CEX) as of {current_date}:")
print("=" * 100)
print(f"{'No.':<5} {'Name':<30} {'Symbol':<10} {'Category':<20} {'Chain':<20} {'TVL (millions)':<20}")
print("=" * 100)
for i, (_, row) in enumerate(top_protocols.iterrows(), start=1):
    print(f"{i:<5} {row['Name']:<30} {row['Symbol']:<10} {row['Category']:<20} {row['Chain']:<20} {row['TVL (millions)']:<20.2f}")
print("=" * 100)

こんな感じで出力される

Top 5 Protocols by TVL (excluding CEX) as of 2024-04-24:
====================================================================================================
No.   Name                           Symbol     Category             Chain                TVL (millions)      
====================================================================================================
1     Lido                           LDO        Liquid Staking       Multi-Chain          30465.08            
2     EigenLayer                     -          Restaking            Ethereum             15634.75            
3     WBTC                           -          Bridge               Multi-Chain          10339.23            
4     Arbitrum Bridge                ARB        Chain                Ethereum             10328.48            
5     AAVE V3                        AAVE       Lending              Multi-Chain          8933.29             
====================================================================================================

requestsとpandasのライブラリのインポートが必要

微妙にDefiLlama本家のサイトのデータと違うのは、なぜかわからない

TVLランキングを監視して、急激に変動したらアラートするというような応用もできるはず。

この記事が気に入ったらサポートをしてみませんか?