Arena run #312

meanrev-v1openaiopenai/gpt-5.2-proUSsuccess
Arena
Run status
as_of: 2026-02-25T17:57:28.313088+00:00
started_at: 2026-02-25T19:44:14.116017+00:00
finished_at: 2026-02-25T19:47:16.958671+00:00
duration_ms: 182841
Inputs
{
  "dry_run": false,
  "selected": [
    {
      "symbol": "UKW_CFD.UK",
      "selection_reason": "Sharp down day (-5.91%) while deeply below MA200 (-17.64%) and MA50 (-12.35%) -> strong oversold setup",
      "mean_reversion_score": 88
    },
    {
      "symbol": "BYIT_CFD.UK",
      "selection_reason": "Materially below MA50 (-13.04%) with only small 1D move (+0.14%), suggesting drifted oversold and potential snapback",
      "mean_reversion_score": 80
    },
    {
      "symbol": "CAR_CFD.US",
      "selection_reason": "Below MA50 (-5.93%) with modest 1D strength (+1.59%) -> early rebound signal from short-term oversold",
      "mean_reversion_score": 72
    },
    {
      "symbol": "BRBY_CFD.UK",
      "selection_reason": "Below MA50 (-4.69%) with mild 1D weakness (-0.55%) -> mean-reversion candidate without extreme gap risk in snapshot",
      "mean_reversion_score": 66
    },
    {
      "symbol": "CCC_CFD.UK",
      "selection_reason": "Down on the day (-2.54%) and below MA50 (-2.95%) -> mild oversold/near-term bounce potential",
      "mean_reversion_score": 64
    }
  ],
  "universe_symbols": [
    "WIZZ_CFD.UK",
    "UKW_CFD.UK",
    "CRDA_CFD.UK",
    "BIG_CFD.FR",
    "ATG_CFD.UK",
    "CCC_CFD.UK",
    "BYIT_CFD.UK",
    "BLND_CFD.UK",
    "CAR_CFD.US",
    "BRBY_CFD.UK",
    "CE_CFD.US",
    "FDX_CFD.US",
    "ABF_CFD.UK",
    "AGFB_CFD.BE"
  ]
}
Outputs
{
  "actions": {
    "buy": [
      {
        "reason": "Top candidate by mean_reversion_score (88): sharp down day while deeply below MA200 and MA50 per snapshot, indicating the strongest oversold/mean-reversion setup among today’s options; funded by selling one position to stay within max 10 positions.",
        "symbol": "UKW_CFD.UK",
        "position_size": 3000
      }
    ],
    "hold": [
      {
        "reason": "Small P&L change and no stronger, clearly superior replacement identified for this slot beyond the single rotation executed; avoid overtrading.",
        "symbol": "AMH_CFD.US"
      },
      {
        "reason": "Position is behaving as expected (modest gain); no risk event or clearer improvement signal that justifies a churn trade today.",
        "symbol": "ARCAD_CFD.NL"
      },
      {
        "reason": "Still a high mean-reversion candidate in the provided list (score 80); maintain exposure rather than churn.",
        "symbol": "BYIT_CFD.UK"
      },
      {
        "reason": "Up materially since entry; with only one rotation needed to add the top oversold candidate, keep remaining winners/positions to avoid unnecessary turnover.",
        "symbol": "CRWD_CFD.US"
      },
      {
        "reason": "Currently down, but without a risk/stop trigger or a clearly better swap beyond the single new buy, hold to avoid overtrading and allow mean-reversion thesis time.",
        "symbol": "FLO_CFD.US"
      },
      {
        "reason": "In profit and no portfolio constraint forces an exit; keep to avoid churn.",
        "symbol": "FUTR_CFD.UK"
      },
      {
        "reason": "Moderate drawdown but no new information provided that warrants forced de-risking today; hold to avoid overtrading.",
        "symbol": "PAYC_CFD.US"
      },
      {
        "reason": "Largest unrealized loss among holdings, but absent an explicit risk event or better evidence, avoid panic selling; keep within the 2-sell limit and avoid churn.",
        "symbol": "TMV_CFD.DE"
      },
      {
        "reason": "Down since entry but no risk event provided; maintain to allow potential rebound rather than crystallizing loss without a clearly superior rotation (beyond the single executed rotation).",
        "symbol": "ZS_CFD.US"
      }
    ],
    "sell": [
      {
        "reason": "Free up a slot (portfolio already at max 10 active positions) while harvesting a sizeable unrealized gain; rotate capital into a higher-conviction mean-reversion setup from today’s candidate list.",
        "symbol": "FBIN_CFD.US"
      }
    ]
  },
  "portfolio_rationale": "Portfolio was at the max 10 active positions, so only one rotation was executed to avoid overtrading: sell one profitable holding to create capacity for the highest-scoring oversold mean-reversion candidate (UKW). All other positions are held because no additional clear, constraint-driven improvement is available within the strict 2-sell/2-buy limits and to minimize churn."
}
Prompts & responses
#611openrouteropenai/gpt-5.2-pro2026-02-25T19:44:14.133674+00:00
System prompt
You are an Arena strategy executor. You must follow the strategy rules strictly and output ONLY valid JSON. You are NOT allowed to invent prices, fundamentals, earnings dates, or sentiment. If a field is null/empty, treat it as unknown. You are a constrained selector (no narrative).
User prompt
{"task": "stage1_universe_scan", "region": "US", "strategy": {"key": "meanrev-v1", "name": "Two-Stage LLM Mean-Reversion (Arena v1)", "rules": {"max_positions": 10, "max_buys_per_run": 2, "avoid_overtrading": true, "max_sells_per_run": 2, "max_gross_leverage": 3.0, "fixed_position_size": 3000.0, "universe_symbols_eu": [], "universe_symbols_us": []}}, "selection_rules": {"horizon": "2-10 trading days", "target": "short-term mean reversion in liquid equities", "constraints": ["Select exactly 5 candidates", "Avoid earnings within 5 trading days (if known)", "Avoid highly binary/event-driven moves (if known)", "Avoid sector concentration: max 1 per sector unless clearly justified (sector may be unknown)"]}, "universe": [{"symbol": "WIZZ_CFD.UK", "name": "WIZZ AIR HOLDINGS PLC", "sector": "", "last_price": 1299.0, "change_1d_pct": -7.412687099073412, "distance_from_ma200_pct": 3.990085157792933, "distance_from_ma50_pct": 0.21211951024278086, "volatility_20d_pct": 5874.684590366408, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "UKW_CFD.UK", "name": "GREENCOAT UK WIND PLC", "sector": "", "last_price": 92.35, "change_1d_pct": -5.909322465613864, "distance_from_ma200_pct": -17.64082660607077, "distance_from_ma50_pct": -12.349969913308566, "volatility_20d_pct": 2773.983404143022, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "CRDA_CFD.UK", "name": "CRODA INTERNATIONAL PLC", "sector": "", "last_price": 3270.0, "change_1d_pct": 18.306801736613608, "distance_from_ma200_pct": 15.315074372668791, "distance_from_ma50_pct": 15.114636224020273, "volatility_20d_pct": 105.57470323224747, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BIG_CFD.FR", "name": "Bigben Interactive", "sector": "", "last_price": 0.462, "change_1d_pct": 0.0, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -45.79246257098606, "volatility_20d_pct": 11712.882237669019, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "ATG_CFD.UK", "name": "AUCTION TECHNOLOGY GROUP", "sector": "", "last_price": 315.5, "change_1d_pct": -0.15822784810126667, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 2.9598929608719793, "volatility_20d_pct": 4125.199412345139, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "CCC_CFD.UK", "name": "COMPUTACENTER PLC", "sector": "", "last_price": 2992.0, "change_1d_pct": -2.540716612377847, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -2.946633623541939, "volatility_20d_pct": 3425.126046830974, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BYIT_CFD.UK", "name": "BYTES TECHNOLOGY GROUP PLC", "sector": "", "last_price": 290.6, "change_1d_pct": 0.1378359751895264, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -13.036712512419047, "volatility_20d_pct": 3710.24320963922, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BLND_CFD.UK", "name": "BRITISH LAND CO PLC", "sector": "", "last_price": 413.0, "change_1d_pct": 0.0, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 2.3259962538279444, "volatility_20d_pct": 2013.7372429692637, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "CAR_CFD.US", "name": "Avis Budget Group Inc", "sector": "", "last_price": 118.35, "change_1d_pct": 1.587982832618029, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -5.933987675643548, "volatility_20d_pct": 4643.814201648793, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BRBY_CFD.UK", "name": "BURBERRY GROUP PLC", "sector": "", "last_price": 1174.5, "change_1d_pct": -0.550381033022862, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -4.69118971687319, "volatility_20d_pct": 4100.463229875871, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "CE_CFD.US", "name": "Celanese Corporation", "sector": "", "last_price": 58.85, "change_1d_pct": 0.051003060183618665, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 28.07455092296376, "volatility_20d_pct": 6478.369286492251, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "FDX_CFD.US", "name": "FedEx Corporation", "sector": "", "last_price": 386.56, "change_1d_pct": 0.7427484298037745, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 19.68497947520138, "volatility_20d_pct": 2549.069205234816, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "ABF_CFD.UK", "name": "ASSOCIATED BRITISH FOODS PLC", "sector": "", "last_price": 1976.5, "change_1d_pct": 0.48296898830706425, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -0.4789045745805742, "volatility_20d_pct": 1983.0157791154838, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "AGFB_CFD.BE", "name": "Agfa-Gevaert", "sector": "", "last_price": 0.49, "change_1d_pct": -2.0000000000000018, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -1.505557900661325, "volatility_20d_pct": 2568.590327331217, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}], "output_schema": {"selected_stocks": [{"symbol": "string", "mean_reversion_score": "integer 0-100", "selection_reason": "short, concrete, indicator-based"}], "rejected_common_reasons": ["string"]}}
Output JSON
{
  "selected_stocks": [
    {
      "symbol": "UKW_CFD.UK",
      "selection_reason": "Sharp down day (-5.91%) while deeply below MA200 (-17.64%) and MA50 (-12.35%) -> strong oversold setup",
      "mean_reversion_score": 88
    },
    {
      "symbol": "BYIT_CFD.UK",
      "selection_reason": "Materially below MA50 (-13.04%) with only small 1D move (+0.14%), suggesting drifted oversold and potential snapback",
      "mean_reversion_score": 80
    },
    {
      "symbol": "CAR_CFD.US",
      "selection_reason": "Below MA50 (-5.93%) with modest 1D strength (+1.59%) -> early rebound signal from short-term oversold",
      "mean_reversion_score": 72
    },
    {
      "symbol": "BRBY_CFD.UK",
      "selection_reason": "Below MA50 (-4.69%) with mild 1D weakness (-0.55%) -> mean-reversion candidate without extreme gap risk in snapshot",
      "mean_reversion_score": 66
    },
    {
      "symbol": "CCC_CFD.UK",
      "selection_reason": "Down on the day (-2.54%) and below MA50 (-2.95%) -> mild oversold/near-term bounce potential",
      "mean_reversion_score": 64
    }
  ],
  "rejected_common_reasons": [
    "Extended above MA50 (potentially overbought, weaker long mean-reversion entry): CE_CFD.US, FDX_CFD.US, CRDA_CFD.UK",
    "Extreme volatility/very low price (higher tail risk, potential illiquidity): BIG_CFD.FR, AGFB_CFD.BE",
    "Not meaningfully oversold vs moving averages in snapshot (weaker mean-reversion edge): ABF_CFD.UK, BLND_CFD.UK, ATG_CFD.UK, WIZZ_CFD.UK"
  ]
}
#612openrouteropenai/gpt-5.2-pro2026-02-25T19:45:32.846951+00:00
System prompt
You are an Arena portfolio manager. You must follow the strategy rules strictly and output ONLY valid JSON. You are NOT allowed to invent prices/fundamentals/news/earnings. If a field is null/empty, treat it as unknown. Avoid overtrading: if changes are marginal, prefer HOLD. Do not churn.
User prompt
{"task": "stage2_portfolio_management", "region": "US", "strategy": {"key": "meanrev-v1", "name": "Two-Stage LLM Mean-Reversion (Arena v1)", "rules": {"max_positions": 10, "max_buys_per_run": 2, "avoid_overtrading": true, "max_sells_per_run": 2, "max_gross_leverage": 3.0, "fixed_position_size": 3000.0, "universe_symbols_eu": [], "universe_symbols_us": []}}, "portfolio_constraints": {"initial_equity": 10000.0, "max_positions": 10, "fixed_position_size": 3000.0, "max_gross_leverage": 3.0, "overtrading_rules": ["Max 2 SELL actions per run unless risk event forces more", "Max 2 BUY actions per run", "If no clear improvement vs current holdings, output HOLD for everything"]}, "current_portfolio": [{"symbol": "AMH_CFD.US", "qty": 101.09519797809605, "avg_price": 29.674999999999997, "last_price": 29.689999999999998, "unrealized_pnl": 1.5164279696714982, "opened_at": "2026-02-20T17:33:34.647633+00:00"}, {"symbol": "ARCAD_CFD.NL", "qty": 104.8951048951049, "avg_price": 28.6, "last_price": 28.74, "unrealized_pnl": 14.685314685314372, "opened_at": "2026-02-23T10:32:09.961595+00:00"}, {"symbol": "BYIT_CFD.UK", "qty": 10.252904989747094, "avg_price": 292.6, "last_price": 292.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T09:30:55.514112+00:00"}, {"symbol": "CRWD_CFD.US", "qty": 8.560422314167498, "avg_price": 350.45000000000005, "last_price": 362.34000000000003, "unrealized_pnl": 101.78342131545143, "opened_at": "2026-02-23T18:14:12.978497+00:00"}, {"symbol": "DSY_CFD.FR", "qty": 0.0, "avg_price": 17.881, "last_price": 17.45, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T09:30:55.514112+00:00"}, {"symbol": "ETSY_CFD.US", "qty": 0.0, "avg_price": 44.13, "last_price": 50.769999999999996, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T00:47:27.070066+00:00"}, {"symbol": "FBIN_CFD.US", "qty": 58.85237861696911, "avg_price": 50.974999999999994, "last_price": 54.215, "unrealized_pnl": 190.68170671898045, "opened_at": "2026-02-16T17:30:52.485845+00:00"}, {"symbol": "FLO_CFD.US", "qty": 303.7974683544304, "avg_price": 9.875, "last_price": 9.594999999999999, "unrealized_pnl": -85.06329113924086, "opened_at": "2026-02-19T00:47:27.070066+00:00"}, {"symbol": "FUTR_CFD.UK", "qty": 7.488766849725412, "avg_price": 400.6, "last_price": 414.2, "unrealized_pnl": 101.84722915626534, "opened_at": "2026-02-18T09:36:37.284518+00:00"}, {"symbol": "MLCO_CFD.US", "qty": 0.0, "avg_price": 5.51, "last_price": 6.06, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T17:30:52.485845+00:00"}, {"symbol": "PAYC_CFD.US", "qty": 24.748391354561953, "avg_price": 121.22, "last_price": 119.82, "unrealized_pnl": -34.647747896386875, "opened_at": "2026-02-19T17:33:27.020111+00:00"}, {"symbol": "RMV_CFD.UK", "qty": 0.0, "avg_price": 424.3, "last_price": 424.3, "unrealized_pnl": 0.0, "opened_at": "2026-02-18T09:36:37.284518+00:00"}, {"symbol": "TMV_CFD.DE", "qty": 627.4837900020916, "avg_price": 4.781, "last_price": 4.495, "unrealized_pnl": -179.46036394059794, "opened_at": "2026-02-19T09:33:49.074031+00:00"}, {"symbol": "ZS_CFD.US", "qty": 18.778167250876315, "avg_price": 159.76, "last_price": 154.62, "unrealized_pnl": -96.519779669504, "opened_at": "2026-02-21T17:32:49.140800+00:00"}], "candidates": [{"symbol": "UKW_CFD.UK", "mean_reversion_score": 88, "selection_reason": "Sharp down day (-5.91%) while deeply below MA200 (-17.64%) and MA50 (-12.35%) -> strong oversold setup"}, {"symbol": "BYIT_CFD.UK", "mean_reversion_score": 80, "selection_reason": "Materially below MA50 (-13.04%) with only small 1D move (+0.14%), suggesting drifted oversold and potential snapback"}, {"symbol": "CAR_CFD.US", "mean_reversion_score": 72, "selection_reason": "Below MA50 (-5.93%) with modest 1D strength (+1.59%) -> early rebound signal from short-term oversold"}, {"symbol": "BRBY_CFD.UK", "mean_reversion_score": 66, "selection_reason": "Below MA50 (-4.69%) with mild 1D weakness (-0.55%) -> mean-reversion candidate without extreme gap risk in snapshot"}, {"symbol": "CCC_CFD.UK", "mean_reversion_score": 64, "selection_reason": "Down on the day (-2.54%) and below MA50 (-2.95%) -> mild oversold/near-term bounce potential"}], "output_schema": {"actions": {"sell": [{"symbol": "string", "reason": "string"}], "hold": [{"symbol": "string", "reason": "string"}], "buy": [{"symbol": "string", "position_size": "number (currency amount)", "reason": "string"}]}, "portfolio_rationale": "string"}}
Output JSON
{
  "actions": {
    "buy": [
      {
        "reason": "Top candidate by mean_reversion_score (88): sharp down day while deeply below MA200 and MA50 per snapshot, indicating the strongest oversold/mean-reversion setup among today’s options; funded by selling one position to stay within max 10 positions.",
        "symbol": "UKW_CFD.UK",
        "position_size": 3000
      }
    ],
    "hold": [
      {
        "reason": "Small P&L change and no stronger, clearly superior replacement identified for this slot beyond the single rotation executed; avoid overtrading.",
        "symbol": "AMH_CFD.US"
      },
      {
        "reason": "Position is behaving as expected (modest gain); no risk event or clearer improvement signal that justifies a churn trade today.",
        "symbol": "ARCAD_CFD.NL"
      },
      {
        "reason": "Still a high mean-reversion candidate in the provided list (score 80); maintain exposure rather than churn.",
        "symbol": "BYIT_CFD.UK"
      },
      {
        "reason": "Up materially since entry; with only one rotation needed to add the top oversold candidate, keep remaining winners/positions to avoid unnecessary turnover.",
        "symbol": "CRWD_CFD.US"
      },
      {
        "reason": "Currently down, but without a risk/stop trigger or a clearly better swap beyond the single new buy, hold to avoid overtrading and allow mean-reversion thesis time.",
        "symbol": "FLO_CFD.US"
      },
      {
        "reason": "In profit and no portfolio constraint forces an exit; keep to avoid churn.",
        "symbol": "FUTR_CFD.UK"
      },
      {
        "reason": "Moderate drawdown but no new information provided that warrants forced de-risking today; hold to avoid overtrading.",
        "symbol": "PAYC_CFD.US"
      },
      {
        "reason": "Largest unrealized loss among holdings, but absent an explicit risk event or better evidence, avoid panic selling; keep within the 2-sell limit and avoid churn.",
        "symbol": "TMV_CFD.DE"
      },
      {
        "reason": "Down since entry but no risk event provided; maintain to allow potential rebound rather than crystallizing loss without a clearly superior rotation (beyond the single executed rotation).",
        "symbol": "ZS_CFD.US"
      }
    ],
    "sell": [
      {
        "reason": "Free up a slot (portfolio already at max 10 active positions) while harvesting a sizeable unrealized gain; rotate capital into a higher-conviction mean-reversion setup from today’s candidate list.",
        "symbol": "FBIN_CFD.US"
      }
    ]
  },
  "portfolio_rationale": "Portfolio was at the max 10 active positions, so only one rotation was executed to avoid overtrading: sell one profitable holding to create capacity for the highest-scoring oversold mean-reversion candidate (UKW). All other positions are held because no additional clear, constraint-driven improvement is available within the strict 2-sell/2-buy limits and to minimize churn."
}
Selection logs
#304stage12026-02-25T19:45:32.844196+00:00
{
  "selected_stocks": [
    {
      "symbol": "UKW_CFD.UK",
      "selection_reason": "Sharp down day (-5.91%) while deeply below MA200 (-17.64%) and MA50 (-12.35%) -> strong oversold setup",
      "mean_reversion_score": 88
    },
    {
      "symbol": "BYIT_CFD.UK",
      "selection_reason": "Materially below MA50 (-13.04%) with only small 1D move (+0.14%), suggesting drifted oversold and potential snapback",
      "mean_reversion_score": 80
    },
    {
      "symbol": "CAR_CFD.US",
      "selection_reason": "Below MA50 (-5.93%) with modest 1D strength (+1.59%) -> early rebound signal from short-term oversold",
      "mean_reversion_score": 72
    },
    {
      "symbol": "BRBY_CFD.UK",
      "selection_reason": "Below MA50 (-4.69%) with mild 1D weakness (-0.55%) -> mean-reversion candidate without extreme gap risk in snapshot",
      "mean_reversion_score": 66
    },
    {
      "symbol": "CCC_CFD.UK",
      "selection_reason": "Down on the day (-2.54%) and below MA50 (-2.95%) -> mild oversold/near-term bounce potential",
      "mean_reversion_score": 64
    }
  ],
  "rejected_common_reasons": [
    "Extended above MA50 (potentially overbought, weaker long mean-reversion entry): CE_CFD.US, FDX_CFD.US, CRDA_CFD.UK",
    "Extreme volatility/very low price (higher tail risk, potential illiquidity): BIG_CFD.FR, AGFB_CFD.BE",
    "Not meaningfully oversold vs moving averages in snapshot (weaker mean-reversion edge): ABF_CFD.UK, BLND_CFD.UK, ATG_CFD.UK, WIZZ_CFD.UK"
  ]
}