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
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 Training data: Earlier observations used to develop and refine your model.
- 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:
Definitions
- : trade return at time t
- : number of evaluated predictions
- : position at time t: short, flat, or long
- : model's prediction of tomorrow's return
- : tomorrow's realized return
The evaluator computes:
Each prediction is converted to a directional signal.
- -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 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 Your model must predict the future daily return - tomorrow's return.
- 3 Return a numeric forecast. The evaluator converts it to a signal with np.sign(y_hat).
- 4 Predictions are converted with np.sign(y_hat): down is -1, zero is 0, and up is 1.
- 5 The evaluator computes trade_return = signal * actual_return, where actual_return is the next close-to-close simple return.
- 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 Submissions found to be cheating will be disqualified
- 8 The following Python libraries are allowed: NumPy, scikit-learn, XGBoost, LightGBM, Keras, JAX, and jaxlib.
- 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 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. Evaluate the strategy on the training and test datasets separately.
- 2. Calculate the average trade return for each dataset.
- 3. Use the average from the unseen test data as the leaderboard score.
To qualify, the average trade return must be positive on both datasets:
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 | Model | |||||
|---|---|---|---|---|---|---|
| 1 | Peter Heinum | dead_cat_ladder | +0.0062 | 61.0% | -0.1706 | Private |
| 2 | Jahy | linear3 | +0.0059 | 56.3% | -0.2529 | Private |
| 3 | zenji too | quant_zenji_instagram2 | +0.0051 | 56.7% | -0.2282 | Private |
| 4 | 144p Yasuo | momentum | +0.0038 | 53.0% | -0.3816 | Private |
| 5 | fuji | WinniethePoo | +0.0035 | 54.7% | -0.2124 | Private |
| 6 | arjen9 | ExMachina | +0.0029 | 56.0% | -0.2738 | Private |
| 7 | Billy | Exponential Fair Value | +0.0021 | 55.1% | -0.2935 | Private |
| 8 | Balaenys. | i suck | +0.0019 | 50.7% | -0.3129 | Public |
| 9 | memlabs | Simple Momentum Model | +0.0019 | 50.7% | -0.3129 | Public |
| 10 | randseed_trader | 2 | +0.0016 | 56.2% | -0.1271 | Private |
| 11 | Lars van Oostrum | gg2 | +0.0013 | 51.2% | -0.3351 | Private |
| 12 | householddude | ? | +0.0010 | 53.0% | -0.3546 | Private |
| 13 | yoitspeter | xgb_save_me | +0.0003 | 48.0% | -0.5793 | Private |
Training Data
Anonymised Asset · 1 day bars
Loading price series…