MemLabs Trading Competition #1

ACTIVE BETA
Aug 17, 2026 to Dec 31, 2026 102 days left 13 participants
1 day bars Metric: Average Trade Return
Prize Pool for Top 3 Submissions
  • Introduction to Quant Recruiters for top 3 submissions
  • Free Annual MemLabs Subscription worth over $3200
  • MemLabs Competition Winner T-Shirt for top 5 submissions
  • Winner is added to the Hall of Fame
Sign in to enter

Overview

A competition to test out your quant skills. Your task is to build a model to predict the future daily return. The model that makes the most money wins. You are given a time series of daily prices and must predict tomorrow's return.

The data is split chronologically into two sets:
  1. 1 Training data: Earlier observations used to develop and refine your model.
  2. 2 Test data: The most recent observations, held out from model development. This out-of-sample period measures whether your model generalizes to unseen data and remains robust when market behaviour changes.
Goal

Maximize the average trade return:

max  1Nt=1NRttrade\max \; \frac{1}{N}\sum_{t=1}^{N} R_t^{\mathrm{trade}}
Definitions
  • RttradeR_t^{\mathrm{trade}}: trade return at time t
  • NN: number of evaluated predictions
  • st{1,0,1}s_t \in \{-1, 0, 1\}: position at time t: short, flat, or long
  • r^t+1\hat{r}_{t+1}: model's prediction of tomorrow's return
  • rt+1r_{t+1}: tomorrow's realized return

The evaluator computes:

Rttrade=st×rt+1R_t^{\mathrm{trade}} = s_t \times r_{t+1}

Each prediction is converted to a directional signal.

st=sign(r^t+1)={1,r^t+1>00,r^t+1=01,r^t+1<0s_t = \operatorname{sign}(\hat{r}_{t+1}) = \begin{cases} 1, & \hat{r}_{t+1} > 0 \\ 0, & \hat{r}_{t+1} = 0 \\ -1, & \hat{r}_{t+1} < 0 \end{cases}
  • -1 = your model predicts the return goes down
  • 1 = your model predicts the return goes up
Example
  • Model predicts the next return is 0.1% -> signal = 1
  • Model predicts the next return is -0.2% -> signal = -1

Rules

  1. 1 Use only the provided competition dataset. No external data sources or APIs are permitted, but you may create features (model input) from the competition dataset.
  2. 2 Your model must predict the future daily return - tomorrow's return.
  3. 3 Return a numeric forecast. The evaluator converts it to a signal with np.sign(y_hat).
  4. 4 Predictions are converted with np.sign(y_hat): down is -1, zero is 0, and up is 1.
  5. 5 The evaluator computes trade_return = signal * actual_return, where actual_return is the next close-to-close simple return.
  6. 6 The leaderboard score is the average trade return on the unseen test data. The average trade return must be positive on both the training and test data. Values extremely close to zero are treated as zero.
  7. 7 Submissions found to be cheating will be disqualified
  8. 8 The following Python libraries are allowed: NumPy, scikit-learn, XGBoost, LightGBM, Keras, JAX, and jaxlib.
  9. 9 The live leaderboard is provisional. When the competition closes, additional unseen data will be added to the test dataset and eligible submissions will be evaluated again. This final evaluation will determine the official rankings and winners.
  10. 10 Each participant may complete one evaluation per UTC calendar day, based on when it was submitted. Failed evaluations can be retried that day. Completed evaluations count regardless of score or rule violations. Only one evaluation may be queued or scoring at a time.

Scoring

How your leaderboard score is calculated
  1. 1. Evaluate the strategy on the training and test datasets separately.
  2. 2. Calculate the average trade return for each dataset.
  3. 3. Use the average from the unseen test data as the leaderboard score.
Score=Rtest\mathrm{Score} = \overline{R}_{\mathrm{test}}

To qualify, the average trade return must be positive on both datasets:

Rtrain>0andRtest>0\overline{R}_{\mathrm{train}} > 0 \quad \text{and} \quad \overline{R}_{\mathrm{test}} > 0

Values extremely close to zero are treated as zero to avoid rounding errors.

Average Trade Return (Primary)
Your average trade return on the unseen test data. Positive training and test averages are required to qualify.
Leaderboard Entry Criteria
Positive train and test returns

Secondary Metrics

Win Rate
Percentage of active trades with a positive trade return.
Ann. Sharpe Ratio
Annualised return divided by annualised volatility. Higher is better; above 1 is considered good.
Max Drawdown
The largest percentage decline from a previous peak in the compounded equity curve.
Best Trade
The single highest trade return achieved during the evaluation period.
Worst Trade
The single lowest trade return during the evaluation period.

Live Leaderboard

13 participants

User 
1Peter Heinum+0.006261.0%-0.1706Private
2Jahy+0.005956.3%-0.2529Private
3zenji too+0.005156.7%-0.2282Private
4144p Yasuo+0.003853.0%-0.3816Private
5fuji+0.003554.7%-0.2124Private
6arjen9+0.002956.0%-0.2738Private
7Billy+0.002155.1%-0.2935Private
8Balaenys.+0.001950.7%-0.3129Public
9memlabs+0.001950.7%-0.3129Public
10randseed_trader+0.001656.2%-0.1271Private
11Lars van Oostrum+0.001351.2%-0.3351Private
12householddude+0.001053.0%-0.3546Private
13yoitspeter+0.000348.0%-0.5793Private
Training Data
Anonymised Asset · 1 day bars
Loading price series…

Frequently Asked Questions