filecoin-mecha-twin icon indicating copy to clipboard operation
filecoin-mecha-twin copied to clipboard

investigate issue of rbp forecasted to below 0 in extreme scenarios

Open kkarrancsu opened this issue 2 years ago • 6 comments

Code snippet to produce RBP < 0

import numpy as np
import datetime
import scenario_generator.curated as curated
from mechafil.data import get_historical_network_stats, get_sector_expiration_stats
from mechafil.power import forecast_power_stats, build_full_power_stats_df

SIM_START_LAG_DAYS = 10
current_date = datetime.datetime.now().date() - datetime.timedelta(days=SIM_START_LAG_DAYS)
current_day = (current_date - datetime.date(2020, 10, 15)).days

start_date = datetime.date(2021, 3, 15)
start_day = (start_date - datetime.date(2020, 10, 15)).days

forecast_lenght = 365*2
end_day = current_day + forecast_lenght
end_date = current_date + datetime.timedelta(days=forecast_lenght)

duration = 360

scenario_params = curated.forecast_pessimistic_scenario(forecast_lenght)
rb_onboard_power_vec = scenario_params['rb_onboard_power']
renewal_rate_vec = scenario_params['renewal_rate']
filplus_rate_vec = scenario_params['filplus_rate']

res = get_sector_expiration_stats(start_date, current_date,end_date)
rb_known_scheduled_expire_vec = res[0]
qa_known_scheduled_expire_vec = res[1]
known_scheduled_pledge_release_full_vec = res[2]
    
fil_stats_df = get_historical_network_stats(start_date,current_date,end_date)
current_day_stats = fil_stats_df[fil_stats_df["date"] >= current_date].iloc[0]
    
rb_power_zero = current_day_stats["total_raw_power_eib"] * 1024.0
qa_power_zero = current_day_stats["total_qa_power_eib"] * 1024.0

rb_power_df, qa_power_df = forecast_power_stats(
        rb_power_zero,
        qa_power_zero,
        rb_onboard_power_vec,
        rb_known_scheduled_expire_vec,
        qa_known_scheduled_expire_vec,
        renewal_rate_vec,
        filplus_rate_vec,
        duration,
        forecast_lenght
)
rb_power_df["total_raw_power_eib"] = rb_power_df["total_power"]/1024.0
qa_power_df["total_qa_power_eib"] = qa_power_df["total_power"]/1024.0
    
power_df = build_full_power_stats_df(
        fil_stats_df,
        rb_power_df,
        qa_power_df,
        start_date,
        current_date,
        end_date,
)
print(np.min(power_df.total_raw_power_eib))
...

kkarrancsu avatar Dec 01 '22 19:12 kkarrancsu