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
さらなる改善案
ユーザーが選択したプールのデータを表示する
現在のコードでは、最初のプールのデータのみを表示しているが、ユーザーが選択したプールのデータを表示できるようにすると、より柔軟性が増す。データの可視化
取得したデータをグラフや図で視覚的に表現することで、データの傾向や変化をよりわかりやすく示すことができる。例えば、APYやTVLの時系列グラフを作成することができる。データの要約統計量の計算
データフレームを使って、APYやTVLの平均値、中央値、最大値、最小値などの要約統計量を計算し、表示することができる。これにより、プールのパフォーマンスをより詳細に分析することができる。
次回
プール間のAPYを比較