Signals Churn Threshold

On September 20, 2024, we will be implementing a 15% churn threshold for all Signals submissions. Any submission that breaches this threshold will not be paid. This does not apply to Numerai or Crypto.

Churn is a statistic describing how the alpha scores of a signal changes over time. We recently open-sourced the code we use to calculate churn in Signals Diagnostics. You can find it here.

If a Signals submission has high churn, then Numerai can’t trade the signal easily. Many models built on Numerai data have low churn organically, but Signals Churn is very high. Most Signals models have > 20% week-over-week churn:

We know that this negatively impacts the churn of the Signals Meta Model because the average individual churn of Signals models is nearly 70% correlated with the Signals Meta Model Churn:

Signals Meta Model churn too high to be useful to Numerai:

To lower the churn of the Signals Meta Model, we must lower the churn of all Signals - so we are implementing a strict churn threshold that operates as follows:

  • Any model that has not submitted in the previous week will have it’s stake set to 0
    • Any model that does not submit weekly will naturally cause high churn in the Meta Model
  • When you upload a new submission we:
    • Calculate churn with respect to each of this model’s submissions from the previous week
    • Check if this submission has >= 15% churn with respect to any of this model’s accepted submission in the previous week. If this submission breaches the churn threshold, it’s stake is set to 0.

FAQs

Is 15% too low?
No. Our v43.cyrus_plus_teager model has never breached 15% churn, so we know this is an achievable level of churn that will guarantee a sufficient reduction in overall Signals Meta Model churn.

How do I know what my churn is?

We have open-sourced the churn calculation we use in diagnostics so that you can calculate it yourself. Soon, we will use this code to display the churn on the Signals website. Any submissions that breaches the threshold will be highlighted as “high churn” in the website. Once the threshold is implemented, we will begin setting the stake to 0 for these submissions.

When will this churn threshold take effect?

On September 20, 2024 the threshold will be 15%.

What about Numerai models?

This does not affect Numerai models as they cannot control their churn level due to the obfuscation of the dataset. Instead, we have crafted a dataset that naturally results in lower-churn models. Signals, on the other hand, can easily reduce their churn because Signals models can easily calculate it. Signals models can be trained to minimize churn just the way we did with our v43.cyrus_plus_teager model.

What if everyone breaches the threshold?

The payout factor will heavily incentivize users to submit reliably low-churn models so they are not dropped out of the staking pool. Over time, the likelihood of everyone simultaneously breaching the threshold will drastically diminish.

2 Likes

Kudos to the team for open-sourcing stuff. More transparency, fewer bugs. :+1:

The payout factor will heavily incentivize users to submit reliably low-churn models so they are not dropped out of the staking pool.

I have a theoretical concern re this: what if there are only a few models left (at least in the beginning) - and the payouts are still primarily in MMC?
Does this mean that half of the few remaining good low-churn models will be heavily disincentivized by heavy burns? :slight_smile:

Is it possible that churn can be too low ? For example, a simple buy and hold strategy would have a churn of 0% which would be too low for a hedge fund. If my question shows that I don’t really understand churn, then is there a document you can point me too that explains it in more detail.

It wouldn’t be too low if that was the way to make the most money. I mean obviously you want to take profit sometimes and short positions probably have a built-in deadline, but there is no inherent reason why if in some idealized world the exact same set of positions kept returning the best returns, you wouldn’t just keep holding them (or repeating them). But in the real-world that’s just not going to happen. (But for long positions, some stocks might remain the best bets for extended periods.) But still, I don’t think you need to create churn for churn’s sake. (Is there some strategic reason to do so? Make “lateral” moves just because?)

Is Sep 20 refering to round close or resolve date?

Following my post on Numerai-induced ticker churn, I’ve decided to look into what’s the churn for Numerai targets in the v1 data. After all, that’s what our models try to aim for.

Here are the results: in a perfect world, Numerai would want us to have 40.7% churn on average (or 28.3% at the very least). Code and stats:

Disclaimer: yes, having big ticker gaps across eras (outlined in the post above as ticker churn) would make the target churn worse since it could compare to an era that was over a week ago, but this shouldn’t distort results much realistically since you cannot trade a ticker if it regularly falls in and out from the universe. (so at the end of the day, ticker churn is basically additive)

To the team: I remember you mentioned that targets in the main tournament are adjusted for churn. Assuming you want us to have both high corr with the target and low churn, would it be possible to adjust targets for churn in the V2 signals data too?
Thanks.

2 Likes

I am trying to do my first submission, but I’m getting “churn_calculation_error: Could not calculate churn, please contact support” using the notebook from Google Colab with version 2 data for Signals competition

How do I correct my submission? looks like this is a bug of the new release

Why do I not get a reply? How could my submission correlation with previous rounds if I don’t have submissions recently.

Hi develuse, apologies for the inconvenience. Could you retry your upload please?

Thanks it seems fixed, any bug reward ;-)? at least the developer should be rewarded