File size: 2,452 Bytes
65e0ff8
 
 
 
 
 
 
 
 
 
513b2d0
65e0ff8
 
 
 
 
 
 
 
 
 
 
513b2d0
65e0ff8
 
 
 
 
 
 
 
513b2d0
 
65e0ff8
 
 
513b2d0
65e0ff8
 
 
 
 
 
3380ac7
65e0ff8
 
3380ac7
65e0ff8
 
3380ac7
65e0ff8
 
3380ac7
65e0ff8
513b2d0
3380ac7
65e0ff8
 
3380ac7
65e0ff8
 
 
 
 
 
 
 
 
 
 
 
 
513b2d0
 
65e0ff8
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from pymongo import MongoClient
import pandas as pd
import requests
import json
import urllib.parse
import gradio as gr
import datetime
import os

client = MongoClient(os.getenv('MONGO_DB_URI'))

db = client["Patchy_balances"]
collection = db["balance_data"]

def load_from_mongo():
    latest = collection.find_one(sort=[("timestamp", -1)])
    if latest:
        df0 = pd.DataFrame(latest["df0"]).T
        df1 = pd.DataFrame(latest["df1"]).T
        df2 = pd.DataFrame(latest["df2"]).T
        df3 = pd.DataFrame(latest["df3"]).T
        df4 = pd.DataFrame(latest["df4"]).T
        df5 = pd.DataFrame(latest["df5"]).T

        return (
            df0, latest["total0"],
            df1, latest["total1"],
            df2, latest["total2"],
            df3, latest["total3"],
            df4, latest["total4"],
            f"PNL : {latest['pnl']:,.2f}",
            f"LP Rewards : {latest['rewards']:,.2f}",
            df5
        )
    else:
        empty_df = pd.DataFrame()
        return empty_df, 0, empty_df, 0, empty_df, 0, empty_df, 0, empty_df, 0,"PNL : $0.00","LP Rewards : $0.00",empty_df

if __name__ == "__main__":
    with gr.Blocks() as demo:
        gr.Markdown("## Patchy Balances and PnL")

        df0_out = gr.Dataframe(label="Starting Balances")
        txt0_out = gr.Textbox(label="Starting Value Total ($)")

        df2_out = gr.Dataframe(label="Wallet Balances")
        txt2_out = gr.Textbox(label="Wallet Value Total ($)")

        df3_out = gr.Dataframe(label="JUP Limit Balances")
        txt3_out = gr.Textbox(label="JUP Limit Value Total ($)")

        df4_out = gr.Dataframe(label="LP Balances")
        txt4_out = gr.Textbox(label="LP Balances Value Total ($)")

        df5_out = gr.Dataframe(label="LP Reward Balances")
        reward_out = gr.Textbox(label="LP Reward Value Total ($)")

        df1_out = gr.Dataframe(label="Total Balances")
        txt1_out = gr.Textbox(label="Current Value Total ($)")

        pnl_out = gr.Textbox(label="PNL (AUM Model)")

        # Load from MongoDB on app load (sync function)
        demo.load(
            fn=load_from_mongo,
            inputs=[],
            outputs=[
                df0_out, txt0_out,
                df1_out, txt1_out,
                df2_out, txt2_out,
                df3_out, txt3_out,
                df4_out, txt4_out,
                pnl_out,reward_out,
                df5_out
            ]
        )

    demo.launch(debug=True, share=True)