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ランキングを監視して、急激に変動したらアラートするというような応用もできるはず。