Sonzoyfor eToro

Strategies and how one is selected

Sonzoy selects a strategy using defined evaluation rules. Every rule below is written exactly as the code applies it. When nothing passes the rules, the bot stays in cash for that market.

How selection works

1 · Strategy lab (weekly)

For each asset class, 121–168 recipes (entry style × timeframe × stop/target × break-even) are replayed trade by trade on 45 days (5- and 15-minute bars) to a year (crypto) of eToro's own prices. Each trade pays eToro's spread and fees, plus overnight financing on CFDs. Entry is at the next bar's open, a bar that touches both the stop and the target counts as a stop, and a gap through a level fills at the bar's open.

2 · Chosen on older data only

Each market's history is split in half by date. A recipe must pass every one of these on the older half only:

  • at least 25 trades on the older half
  • a per-trade t-statistic of at least 2 on the older half
  • a profit factor of at least 1.1 on the older half
  • profitable on at least 60% of the markets tested (older half)
  • a win rate of at least 55% on the older half

Among those that pass: among recipes passing every older-half rule, the highest older-half return per market per month.

3 · Checked on newer data

The chosen recipe is then checked once on the newer half, which played no part in choosing it. It must pass all of these, or the asset class is set to stay in cash:

  • at least 10 trades on the newer half
  • a positive average trade after costs on the newer half
  • a profit factor of at least 1 on the newer half
  • a win rate of at least 55% on the newer half

Stricter checks (demo accounts)

Many recipes are tried and markets move together, so a per-trade t-statistic overstates confidence. Demo accounts trade a recipe only if it also clears a multiple-testing threshold on a day-clustered t-statistic makes money in a rolling walk-forward test where each fold is chosen without seeing its own data, and stays profitable on the newer half after an assumed market-order slippage (indices 0.01%, fx 0.005%, commodities 0.02%, stocks 0.03%, crypto 0.1% per side). Real-money accounts use these checks once the operator has reviewed them.

A t-statistic threshold is a screening rule, not proof of an edge: many recipes are tested, trades overlap in time and markets move together, so ordinary per-trade t-statistics overstate confidence.

4 · Switching

The lab re-runs every 7 days (the admin can run it sooner). A class switches recipe only when a new run picks a different one; open trades keep their own stop, target and time stop. In the classic best-fit rule, each market re-picks among 10 classic strategies every 6 hours using the previous 600 bars, and the in-app backtest replays that walk-forward: each block of 100 bars uses only the bars before it.

Current verdicts (lab run 2026-11-02 18:52:09 UTC · rules 2026-10-24.2)

Asset classVerdictBest candidateNewer half
per market / month
Test dates
commoditiesstay in cash15-min best-fit momentum (current) (1.5σ), stop 1.5 ATR, target 1.5 ATR
closest rejected candidate (never selected, never traded)
  • needs a per-trade t-statistic of at least 2 on the older half (was 0.73)
−6.95%2026-09-28 → 2026-11-02 (split 2026-10-16)
indicesstay in cash15-min fade stretched moves (2σ), stop 3 ATR, target 2 ATR
closest rejected candidate (never selected, never traded)
  • needs a per-trade t-statistic of at least 2 on the older half (was 1.83)
−1.53%2026-09-28 → 2026-11-02 (split 2026-10-15)
cryptostay in cash4-hour buy dips / sell rallies in the trend (1.5σ), stop 3 ATR, target 1.5 ATR
closest rejected candidate (never selected, never traded)
  • needs a per-trade t-statistic of at least 2 on the older half (was -1.07)
  • needs a profit factor of at least 1.1 on the older half (was 0.64)
  • needs profitable on at least 60% of the markets tested (older half) (was 38)
−2.99%2025-09-08 → 2026-11-02 (split 2026-04-06)
stocksstay in cash1-hour trend breakout (1.5σ), stop 3 ATR, target 1.5 ATR
closest rejected candidate (never selected, never traded)
  • needs a per-trade t-statistic of at least 2 on the older half (was -1.33)
  • needs a profit factor of at least 1.1 on the older half (was 0.56)
  • needs profitable on at least 60% of the markets tested (older half) (was 0)
−2.88%2026-07-06 → 2026-11-02 (split 2026-09-01)
fxstay in cash15-min fade stretched moves (2σ), stop 3 ATR, target 1 ATR
closest rejected candidate (never selected, never traded)
  • needs a per-trade t-statistic of at least 2 on the older half (was 0.81)
+0.37%2026-09-28 → 2026-11-02 (split 2026-10-14)

A rejected candidate is shown so you can see how close the best one came. It was never selected and never traded.

Lab entry styles

Trend breakout

Trend filter: price above the 200-bar EMA and the 50-bar EMA above the 200-bar EMA (down-trend: the mirror image). Enter in the trend's direction...

Timeframes: 5-min, 15-min (CFDs) · 15-min, 1-hour (stocks) · 1-hour, 4-hour (crypto) →

Buy dips / sell rallies in the trend

Same trend filter as the breakout. In an up-trend, buy when the last 12 bars fell at least k standard deviations (k = 1.0 or 1.5); in a...

Timeframes: as above →

Fade stretched moves

No trend filter. Sell after the last 12 bars rose at least k standard deviations, buy after an equal fall (k = 2.0 or 2.5): a bet that very fast...

Timeframes: as above →

Best-fit momentum (classic rule)

Each market trades the single classic strategy (below) that made the most after costs on the previous 600 bars; it enters only when that strategy...

Timeframes: 5-min by default →

Classic strategies

EMA 9/21 flip

Long while the 9-bar EMA is above the 21-bar EMA, short while below.

Timeframes: any →

20-bar breakout

Long after a close above the previous 20-bar high, short after a close below the 20-bar low.

Timeframes: any →

Rate of change (1-hour / 4-hour)

Long when price is above its level 12 (or 48) five-minute bars ago, short when below.

Timeframes: 5-min →

Supertrend

Long above the Supertrend line (10-bar ATR × 3), short below.

Timeframes: any →

MACD flip

Long when MACD (12/26) is above its 9-bar signal and rising, short in the reverse case; holds until the opposite signal.

Timeframes: any →

Donchian / Turtle

Long on a 20-bar high breakout, short on a 20-bar low breakout.

Timeframes: any →

Parabolic SAR

Long while price is above the SAR dots, short below.

Timeframes: any →

Ichimoku

Long above the cloud with Tenkan above Kijun, short below the cloud with Tenkan below Kijun.

Timeframes: any →

Volatility squeeze

After Bollinger Bands contract inside the Keltner Channel, trade the direction of the breakout.

Timeframes: any →

Swing mode

4-hour mean reversion (stocks, commodities)

Ensemble score from reversion indicators on 4-hour candles crosses the entry threshold (0.2), long only for stocks.

Timeframes: 4-hour →

Daily trend (crypto)

Trend-following ensemble score on daily candles crosses 0.2.

Timeframes: daily →