File size: 4,407 Bytes
e2483e1 0487dc0 16e2cb0 4f7c20c 2acfed7 ba0ca62 2acfed7 54916c4 16e2cb0 54916c4 6e8d51f 7208a5f 2acfed7 0487dc0 ba0ca62 e2483e1 99c38a1 2acfed7 e2483e1 16e2cb0 e2483e1 8ba86e5 16e2cb0 e2483e1 99c38a1 e2483e1 99c38a1 a2efc63 16e2cb0 a2efc63 d637ff8 ba0ca62 d637ff8 0487dc0 4f7c20c d637ff8 0487dc0 4f7c20c d637ff8 b4a0040 16e2cb0 ba0ca62 16e2cb0 0487dc0 16e2cb0 7208a5f 16e2cb0 0487dc0 16e2cb0 98c5ea8 16e2cb0 d637ff8 ba0ca62 9aba56f 6e8d51f ba0ca62 0487dc0 e2483e1 98c5ea8 |
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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
import logging
from datetime import datetime
import pandas as pd
from markets import etl as mkt_etl, DEFAULT_FILENAME as MARKETS_FILENAME, fpmmTrades_etl
from tools import DEFAULT_FILENAME as TOOLS_FILENAME, generate_tools_file
from profitability import run_profitability_analysis
from utils import (
get_question,
current_answer,
RPC,
measure_execution_time,
DATA_DIR,
HIST_DIR,
TMP_DIR,
)
from get_mech_info import (
get_mech_events_since_last_run,
update_json_files,
)
from update_tools_accuracy import compute_tools_accuracy
from cleaning_old_info import clean_old_data_from_parquet_files
from web3_utils import updating_timestamps
from manage_space_files import move_files
from cloud_storage import load_historical_file
from tools_metrics import compute_tools_based_datasets
logging.basicConfig(level=logging.INFO)
def add_current_answer(tools_filename: str):
# Get currentAnswer from FPMMS
fpmms = pd.read_parquet(DATA_DIR / MARKETS_FILENAME)
tools = pd.read_parquet(DATA_DIR / tools_filename)
# Get the question from the tools
logging.info("Getting the question and current answer for the tools")
tools["title"] = tools["prompt_request"].apply(lambda x: get_question(x))
tools["currentAnswer"] = tools["title"].apply(lambda x: current_answer(x, fpmms))
tools["currentAnswer"] = tools["currentAnswer"].str.replace("yes", "Yes")
tools["currentAnswer"] = tools["currentAnswer"].str.replace("no", "No")
# Save the tools data after the updates on the content
tools.to_parquet(DATA_DIR / tools_filename, index=False)
del fpmms
def save_historical_data():
"""Function to save a copy of the main trades and tools file
into the historical folder"""
print("Saving historical data copies")
current_datetime = datetime.now()
timestamp = current_datetime.strftime("%Y%m%d_%H%M%S")
try:
tools = pd.read_parquet(TMP_DIR / "tools.parquet")
filename = f"tools_{timestamp}.parquet"
tools.to_parquet(HIST_DIR / filename, index=False)
# save into cloud storage
load_historical_file(filename)
except Exception as e:
print(f"Error saving tools file in the historical folder {e}")
try:
all_trades = pd.read_parquet(DATA_DIR / "all_trades_profitability.parquet")
filename = f"all_trades_profitability_{timestamp}.parquet"
all_trades.to_parquet(HIST_DIR / filename, index=False)
# save into cloud storage
load_historical_file(filename)
except Exception as e:
print(
f"Error saving all_trades_profitability file in the historical folder {e}"
)
@measure_execution_time
def only_new_weekly_analysis():
"""Run weekly analysis for the FPMMS project."""
rpc = RPC
# Run markets ETL
logging.info("Running markets ETL")
# mkt_etl(MARKETS_FILENAME)
logging.info("Markets ETL completed")
# Mech events ETL
logging.info("Generating the mech json files")
# get only new data
latest_timestamp = get_mech_events_since_last_run()
if latest_timestamp == None:
print("Error while getting the mech events")
return
logging.info(f"Finished generating the mech json files from {latest_timestamp}")
# FpmmTrades ETL
fpmmTrades_etl(
rpc=rpc,
trades_filename="new_fpmmTrades.parquet",
from_timestamp=int(latest_timestamp.timestamp()),
)
# Run tools ETL
logging.info("Generate and parse the tools content")
# generate only new file
generate_tools_file("new_tools_info.json", "new_tools.parquet")
logging.info("Tools ETL completed")
add_current_answer("new_tools.parquet")
# # Run profitability analysis
logging.info("Running profitability analysis")
run_profitability_analysis(
tools_filename="new_tools.parquet",
trades_filename="new_fpmmTrades.parquet",
merge=True,
)
logging.info("Profitability analysis completed")
# merge new json files with old json files
update_json_files()
save_historical_data()
clean_old_data_from_parquet_files("2024-10-25")
compute_tools_accuracy()
compute_tools_based_datasets()
# # move to tmp folder the new generated files
move_files()
logging.info("Weekly analysis files generated and saved")
if __name__ == "__main__":
only_new_weekly_analysis()
|