Spaces:
Sleeping
Sleeping
import pandas as pd | |
import gradio as gr | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
from seaborn import FacetGrid | |
import plotly.express as px | |
from datetime import datetime, UTC, date | |
from typing import Tuple | |
def get_based_tokens_distribution(market_id: str, all_markets: pd.DataFrame): | |
"""Function to paint the evolution of the probability of the outcomes based on the tokens distributions over time""" | |
sns.set_style("darkgrid") | |
plt.rcParams["figure.figsize"] = (10, 5) | |
selected_market = all_markets.loc[all_markets["id"] == market_id] | |
ax = selected_market.plot.barh( | |
x="sample_datetime", y=["first_token_perc", "second_token_perc"], stacked=True | |
) | |
# add overall title | |
# plt.title( | |
# "Outcomes probability over time based on tokens distributions", fontsize=8 | |
# ) | |
# add axis titles | |
plt.xlabel("Probability percentage(%)") | |
plt.ylabel("Sample date") | |
plt.yticks(fontsize=8) | |
first_outcome = selected_market.iloc[0].first_outcome | |
second_outcome = selected_market.iloc[0].second_outcome | |
ax.legend( | |
loc="upper left", | |
labels=[first_outcome, second_outcome], | |
) | |
return gr.Plot(value=ax.figure) | |
def get_based_votes_distribution(market_id: str, all_markets: pd.DataFrame): | |
"""Function to paint the evolution of the probability of the outcomes based on the votes distributions over time""" | |
sns.set_style("darkgrid") | |
plt.rcParams["figure.figsize"] = (10, 5) | |
selected_market = all_markets.loc[all_markets["id"] == market_id] | |
ax = selected_market.plot.barh( | |
x="sample_datetime", | |
y=["votes_first_outcome_perc", "votes_second_outcome_perc"], | |
stacked=True, | |
) | |
# add overall title | |
# plt.title("Outcomes probability over time based on votes distributions", fontsize=8) | |
# add axis titles | |
plt.xlabel("Probability percentage(%)") | |
plt.ylabel("Sample date") | |
plt.yticks(fontsize=8) | |
first_outcome = selected_market.iloc[0].first_outcome | |
second_outcome = selected_market.iloc[0].second_outcome | |
ax.legend( | |
loc="upper left", | |
labels=[first_outcome, second_outcome], | |
) | |
return gr.Plot(value=ax.figure) | |
def get_extreme_cases(live_fpmms: pd.DataFrame) -> Tuple: | |
"""Function to return the id of the best and worst case according to the dist gap metric""" | |
# select markets with some trades | |
selected_markets = live_fpmms.loc[(live_fpmms["total_trades"] > 0)] | |
print(selected_markets.head()) | |
selected_markets.sort_values(by="dist_gap_perc", ascending=False, inplace=True) | |
return ( | |
selected_markets.iloc[-1].id, | |
selected_markets.iloc[-1].dist_gap_perc, | |
selected_markets.iloc[0].id, | |
selected_markets.iloc[0].dist_gap_perc, | |
) | |