New to Nutbox?

[암호화폐] defi의 현재 실제 수익률 계산(2)

9 comments

tradingideas
83
3 years ago2 min read

defi의 실시간 수익률을 계산하려고 하니 조금은 복잡해집니다. 특히 지금과 같이 bsc가 느려터진 경우에는 언제 값을 읽어올 수 있을지 장담을 할 수 없습니다. sleep() 주기로 동작하지 않는다는 말입니다.
그래서 기존 프로그램을 싹 뒤집고 ㅠㅠ
새로 작업을 했습니다. 이건 주말에 할 예정이었는데, 개인적으로 현재 수익률이 너무 궁금하여.. 새벽까지 열 코딩을 했습니다.

우선 최근에 확인한 채굴 코인의 수와 그 당시 시간을 저장하는 구조를 만들었습니다.

    "latest_rewards": {
        "JAGUAR": {
            "amount": 40.84929867141338,
            "time": 1620729469.46
        },

이후 주기적으로 동작하면서 다시 해당 코인이 채굴된 수량과 현재 시간을 이용하여 일당 수익률을 계산하는 함수를 만들었습니다. 초기 투자금액(inv) 대비 수익금(diff) 그리고 이전시간, 현재시간 마지막으로 해당 코인의 현재가 입력을 받아서 계산합니다.

def get_yield_rate_per_day(diff, inv, from_time, to_time, cur_price) :
    period = to_time - from_time # based on sec
    if period == 0 :
        return 0
    diff_day = diff * cur_price / inv * 86400 / period * 100 # 1 day = 86400 sec
    return diff_day 

이렇게 정리를 하고 나니, 확인하는 주기가 변하더라도 비교적 정확한 APR을 계산할 수 있습니다.

드뎌 채굴 코인의 현재가를 반영한 실제 수익률을 볼 수 있게 되었군요.

두군두군한 마음으로 프로그램을 돌려봅니다. 그런데 - 수익률이 나오기도 하는군요. 또 오류인가 해서 코드를 살펴보았으나 특별한 문제가 없습니다. 곰곰히 생각해보니 채굴한 코인의 현재가가 떨어지면 일시적으로 채굴 수익률이 -로 나오는 경우도 있습니다(코인 가격 급락). 반면에 너무 높게 나오는 경우도 있습니다(코인 가격 급등).

이렇게 주기적으로 계산한 값을 그래프로 그려서 확인한다면 해당 defi 수익률의 전반적인 흐름을 파악할 수 있을 것 같습니다. 만약 수익률이 지속적으로 낮게 나온다면 과감하게 수익률이 높게 나오는 곳으로 이동할 수 있는 상황판을 만들어서 나름 뿌듯합니다.

Comments

Sort byBest