見出し画像

DefiLlama API (yields/APY編②)

前回の記事

今回は、特定のプールの経時的なAPYとTVLのデータを取得する

特定のプールを取得

/chart/{poolID}エンドポイントを使用

import requests
from pprint import pprint
import pandas as pd

yieldsUrl = 'https://yields.llama.fi'

poolData = requests.get(yieldsUrl + '/pools')
poolJson = poolData.json()

poolList = [[pool['symbol'], pool['chain'], pool['project'], pool['apy'], pool['tvlUsd']] for pool in poolJson['data']]
df = pd.DataFrame(poolList, columns=['Symbol', 'Chain', 'Project', 'APY', 'TVL(USD)'])

poolID = poolJson['data'][0]['pool']
projectName = poolJson['data'][0]['project']
poolData = requests.get(yieldsUrl + '/chart/' + poolID)
poolChartJson = poolData.json()

dataList = [[dataPoint['timestamp'], dataPoint['apy'], dataPoint['tvlUsd']] for dataPoint in poolChartJson['data']]
df_poolChart = pd.DataFrame(dataList, columns=['Timestamp', 'APY', 'TVL'])

# Timestampで降順にソート
df_poolChart = df_poolChart.sort_values('Timestamp', ascending=False)

print(f"Project: {projectName}")
print(df_poolChart.head(10))

出力結果

Project: lido
                    Timestamp    APY          TVL
699  2024-04-28T03:01:31.788Z  3.004  30493200451
698  2024-04-27T23:01:20.388Z  3.004  30259833329
697  2024-04-26T23:01:39.057Z  3.058  29399844844
696  2024-04-25T23:02:09.251Z  3.293  29750078559
695  2024-04-24T23:01:25.570Z  3.742  29366085501
694  2024-04-23T23:01:37.517Z  3.098  30004411402
693  2024-04-22T23:01:15.493Z  3.058  29906775524
692  2024-04-21T23:01:23.346Z  2.940  29335706943
691  2024-04-20T23:05:07.235Z  3.173  29433218852
690  2024-04-19T23:01:38.013Z  3.295  28811666039

さらなる改善案

  1. ユーザーが選択したプールのデータを表示する
    現在のコードでは、最初のプールのデータのみを表示しているが、ユーザーが選択したプールのデータを表示できるようにすると、より柔軟性が増す。

  2. データの可視化
    取得したデータをグラフや図で視覚的に表現することで、データの傾向や変化をよりわかりやすく示すことができる。例えば、APYやTVLの時系列グラフを作成することができる。

  3. データの要約統計量の計算
    データフレームを使って、APYやTVLの平均値、中央値、最大値、最小値などの要約統計量を計算し、表示することができる。これにより、プールのパフォーマンスをより詳細に分析することができる。

次回

プール間のAPYを比較

いいなと思ったら応援しよう!