Hi, everyone.
The numerai website continuously reminds me to stake multiple models as follows (little annoying for me ).
But I prefer to stake only one model and choose the actual submission file from other non-staked models based on their performances.
We can choose the submission file from non-staked models by the code below.
napi = NumerAPI(public_id=cfg.NUMERAI.ID, secret_key=cfg.NUMERAI.KEY)
dict_performance, dict_performance_2xmmc = {}, {}
models = ["model1", "model2", "model3"] # non-staked models
n_rounds_to_mean = 4
for k in models:
performance = np.mean([round['corr'] for round
in napi.round_model_performances(k)[:n_rounds_to_mean] if round['payout'] is not None])
performance_2xmmc = np.mean([round['corr'] + 2*round['mmc'] for round
in napi.round_model_performances(k)[:n_rounds_to_mean] if round['payout'] is not None])
dict_performance[k] = performance if not np.isnan(performance) else -0.25
dict_performance_2xmmc[k] = performance_2xmmc if not np.isnan(performance_2xmmc) else -0.25
best_2xmmc = sorted(dict_performance_2xmmc, key=dict_performance_2xmmc.get)[-1]
best_corr = sorted(dict_performance, key=dict_performance.get)[-1]
This tactic can deal with earning/burning eras and virtually maximize your stake value by removing the four-week delay. I assume many participants follow this tactic but I want to hear your opinions.
Thanks!