Arena run #446

meanrev-v1minimaxminimax/minimax-m2.1EUsuccess
Arena
Run status
as_of: 2026-03-06T10:33:43.857578+00:00
started_at: 2026-03-06T14:09:28.712334+00:00
finished_at: 2026-03-06T14:11:14.922949+00:00
duration_ms: 106208
Inputs
{
  "dry_run": false,
  "selected": [
    {
      "symbol": "PAGE_CFD.UK",
      "selection_reason": "Oversold: -13.1% daily drop, -9.5% below MA50, -20.5% below MA200, 113% volatility (reasonable)",
      "mean_reversion_score": 85
    },
    {
      "symbol": "LXS_CFD.DE",
      "selection_reason": "Oversold: -18.2% daily drop, -24.9% below MA50, -35.9% below MA200, 112% volatility (reasonable)",
      "mean_reversion_score": 82
    },
    {
      "symbol": "CO_CFD.FR",
      "selection_reason": "Oversold: -20.2% daily drop, -24.7% below MA50, -53.7% below MA200, 116% volatility",
      "mean_reversion_score": 78
    },
    {
      "symbol": "DLN_CFD.UK",
      "selection_reason": "Oversold: -7.2% daily drop, -2.5% below MA200, near MA50, 7354% volatility but more liquid",
      "mean_reversion_score": 72
    },
    {
      "symbol": "STAN_CFD.UK",
      "selection_reason": "Near MA50 with low volatility 76%, potential mean-reversion if it pulls back to MA50 from current level",
      "mean_reversion_score": 68
    }
  ],
  "universe_symbols": [
    "PAGE_CFD.UK",
    "MCG_CFD.UK",
    "BESI_CFD.NL",
    "TRN_CFD.UK",
    "SYNT_CFD.UK",
    "DLN_CFD.UK",
    "STAN_CFD.UK",
    "RHIM_CFD.UK",
    "BBY_CFD.UK",
    "LXS_CFD.DE",
    "CO_CFD.FR",
    "HLMA_CFD.UK",
    "TUB_CFD.BE",
    "GDS_CFD.FR",
    "DPLM_CFD.UK",
    "IPO_CFD.UK",
    "ATG_CFD.UK",
    "CRDA_CFD.UK",
    "HMSO_CFD.UK",
    "AML_CFD.UK"
  ]
}
Outputs
{
  "actions": {
    "buy": [
      {
        "reason": "Top mean-reversion score (85): oversold -13.1% daily, -9.5% below MA50, -20.5% below MA200, attractive for reversal",
        "symbol": "PAGE_CFD.UK",
        "position_size": 3000
      },
      {
        "reason": "Second highest mean-reversion score (82): oversold -18.2% daily, -24.9% below MA50, -35.9% below MA200",
        "symbol": "LXS_CFD.DE",
        "position_size": 3000
      }
    ],
    "hold": [
      {
        "reason": "Largest unrealized loss (-$397) - hold for mean-reversion recovery potential",
        "symbol": "AEO_CFD.US"
      },
      {
        "reason": "Small unrealized gain (+$18) - hold, no clear mean-reversion signal",
        "symbol": "DKNG_CFD.US"
      },
      {
        "reason": "Unrealized loss (-$83) - hold for mean-reversion recovery",
        "symbol": "GO_CFD.US"
      },
      {
        "reason": "Small unrealized loss (-$14) - hold for recovery",
        "symbol": "LPE_CFD.FR"
      },
      {
        "reason": "At cost - hold for mean-reversion opportunity",
        "symbol": "ATG_CFD.UK"
      },
      {
        "reason": "At cost - hold for mean-reversion opportunity",
        "symbol": "BYIT_CFD.UK"
      },
      {
        "reason": "At cost - hold for mean-reversion opportunity",
        "symbol": "FUTR_CFD.UK"
      },
      {
        "reason": "At cost - hold for mean-reversion opportunity",
        "symbol": "OCDO_CFD.UK"
      }
    ],
    "sell": [
      {
        "reason": "Take profit on 3.0% gain to free capital for higher-conviction oversold opportunity",
        "symbol": "TCAP_CFD.UK"
      },
      {
        "reason": "Take profit on 4.6% gain to rotate into higher-score mean-reversion candidate",
        "symbol": "MDB_CFD.US"
      }
    ]
  },
  "portfolio_rationale": "At maximum 10 positions. Rotating out of TCAP (+3.0%) and MDB (+4.6%) to take profits, freeing capacity to add top 2 mean-reversion candidates PAGE and LXS. Both candidates show strong oversold signals with high mean-reversion scores. Holding AEO and GO despite losses as they are deep oversold with mean-reversion potential. Portfolio remains at 10 positions with gross leverage within limits."
}
Prompts & responses
#877openrouterminimax/minimax-m2.12026-03-06T14:09:28.757301+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": "EU", "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": "PAGE_CFD.UK", "name": "PAGEGROUP PLC", "sector": "", "last_price": 205.8, "change_1d_pct": -13.091216216216218, "distance_from_ma200_pct": -20.507377691735872, "distance_from_ma50_pct": -9.456474873951793, "volatility_20d_pct": 113.15149478988747, "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": "MCG_CFD.UK", "name": "MOBICO GROUP PLC", "sector": "", "last_price": 30.54, "change_1d_pct": 21.867517956903427, "distance_from_ma200_pct": 10.17176911546931, "distance_from_ma50_pct": 28.667486813057195, "volatility_20d_pct": 211.42235702559637, "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": "BESI_CFD.NL", "name": "BE SEMICONDUCTOR INDUSTRIES", "sector": "", "last_price": 181.35, "change_1d_pct": -3.7931034482758696, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 9.39196525515744, "volatility_20d_pct": 5143.441723560482, "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": "TRN_CFD.UK", "name": "TRAINLINE PLC", "sector": "", "last_price": 184.5, "change_1d_pct": -10.436893203883491, "distance_from_ma200_pct": -30.640271123232875, "distance_from_ma50_pct": -21.68611284670343, "volatility_20d_pct": 4790.53876131341, "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": "SYNT_CFD.UK", "name": "SYNTHOMER PLC", "sector": "", "last_price": 18.4, "change_1d_pct": -8.910891089108919, "distance_from_ma200_pct": -75.973011423919, "distance_from_ma50_pct": -64.4775301072238, "volatility_20d_pct": 19461.987558310895, "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": "DLN_CFD.UK", "name": "DERWENT LONDON PLC", "sector": "", "last_price": 1812.0, "change_1d_pct": -7.219662058371734, "distance_from_ma200_pct": -2.516182676819012, "distance_from_ma50_pct": 4.053563926444004, "volatility_20d_pct": 7353.720365167649, "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": "STAN_CFD.UK", "name": "STANDARD CHARTERED PLC", "sector": "", "last_price": 1842.0, "change_1d_pct": 0.3541269408880332, "distance_from_ma200_pct": 31.43986196388351, "distance_from_ma50_pct": 4.292113036344269, "volatility_20d_pct": 75.84142956557304, "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": "RHIM_CFD.UK", "name": "RHI MAGNESITA NV", "sector": "", "last_price": 2960.0, "change_1d_pct": 9.023941068139973, "distance_from_ma200_pct": 12.939755835694466, "distance_from_ma50_pct": 17.95826987098712, "volatility_20d_pct": 137.0123103901981, "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": "BBY_CFD.UK", "name": "BALFOUR BEATTY PLC", "sector": "", "last_price": 759.18, "change_1d_pct": 5.222453222453205, "distance_from_ma200_pct": 33.313724414201815, "distance_from_ma50_pct": 8.832962232591, "volatility_20d_pct": 54.25956465831767, "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": "LXS_CFD.DE", "name": "Lanxess AG", "sector": "", "last_price": 13.761, "change_1d_pct": -18.186682520808574, "distance_from_ma200_pct": -35.89092559135858, "distance_from_ma50_pct": -24.877416058250713, "volatility_20d_pct": 112.4169107383795, "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": "CO_CFD.FR", "name": "Casino Guichard Perrachon", "sector": "", "last_price": 0.178, "change_1d_pct": -20.17937219730942, "distance_from_ma200_pct": -53.725969349953864, "distance_from_ma50_pct": -24.729364005412723, "volatility_20d_pct": 116.14944631367268, "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": "HLMA_CFD.UK", "name": "HALMA PLC", "sector": "", "last_price": 3964.0, "change_1d_pct": 12.35827664399094, "distance_from_ma200_pct": 19.161886713840424, "distance_from_ma50_pct": 8.086294526972493, "volatility_20d_pct": 85.41952885259926, "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": "TUB_CFD.BE", "name": "", "sector": "", "last_price": 229.0, "change_1d_pct": 2.0044543429844186, "distance_from_ma200_pct": 22.37966565127174, "distance_from_ma50_pct": 1.761948141400227, "volatility_20d_pct": 65.4055597893377, "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": "GDS_CFD.FR", "name": "", "sector": "", "last_price": 10.8, "change_1d_pct": -1.3698630136986134, "distance_from_ma200_pct": 7.670206158536397, "distance_from_ma50_pct": 9.234348133913217, "volatility_20d_pct": 114.50395687060202, "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": "DPLM_CFD.UK", "name": "DIPLOMA PLC", "sector": "", "last_price": 5510.0, "change_1d_pct": 0.7312614259597838, "distance_from_ma200_pct": 11.035071455048428, "distance_from_ma50_pct": 0.39717925834363843, "volatility_20d_pct": 72.46279741195445, "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": "IPO_CFD.UK", "name": "IP GROUP PLC", "sector": "", "last_price": 57.6, "change_1d_pct": -1.873935264054516, "distance_from_ma200_pct": 10.233643652522883, "distance_from_ma50_pct": -2.027486732888828, "volatility_20d_pct": 89.82123635439407, "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": 305.0, "change_1d_pct": 4.2735042735042805, "distance_from_ma200_pct": -30.344980756373573, "distance_from_ma50_pct": -1.1704016694101371, "volatility_20d_pct": 159.9931345477538, "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": 2872.0, "change_1d_pct": -3.7855946398659968, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 0.6687884693577173, "volatility_20d_pct": 5593.264895558752, "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": "HMSO_CFD.UK", "name": "HAMMERSON PLC", "sector": "", "last_price": 348.8, "change_1d_pct": -1.8570624648283518, "distance_from_ma200_pct": 20.24082637989966, "distance_from_ma50_pct": 7.964017771966869, "volatility_20d_pct": 3280.1806241206145, "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": "AML_CFD.UK", "name": "ASTON MARTIN LAGONDA GLOBAL", "sector": "", "last_price": 42.5, "change_1d_pct": -3.8461538461538547, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -28.744119294080562, "volatility_20d_pct": 7200.809443066937, "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": "PAGE_CFD.UK",
      "selection_reason": "Oversold: -13.1% daily drop, -9.5% below MA50, -20.5% below MA200, 113% volatility (reasonable)",
      "mean_reversion_score": 85
    },
    {
      "symbol": "LXS_CFD.DE",
      "selection_reason": "Oversold: -18.2% daily drop, -24.9% below MA50, -35.9% below MA200, 112% volatility (reasonable)",
      "mean_reversion_score": 82
    },
    {
      "symbol": "CO_CFD.FR",
      "selection_reason": "Oversold: -20.2% daily drop, -24.7% below MA50, -53.7% below MA200, 116% volatility",
      "mean_reversion_score": 78
    },
    {
      "symbol": "DLN_CFD.UK",
      "selection_reason": "Oversold: -7.2% daily drop, -2.5% below MA200, near MA50, 7354% volatility but more liquid",
      "mean_reversion_score": 72
    },
    {
      "symbol": "STAN_CFD.UK",
      "selection_reason": "Near MA50 with low volatility 76%, potential mean-reversion if it pulls back to MA50 from current level",
      "mean_reversion_score": 68
    }
  ],
  "rejected_common_reasons": [
    "Overbought (large positive daily move): MCG_CFD.UK (+21.9%), HLMA_CFD.UK (+12.4%), RHIM_CFD.UK (+9.0%), BBY_CFD.UK (+5.2%)",
    "Extreme/unreliable volatility data (>4000%): BESI_CFD.NL, TRN_CFD.UK, SYNT_CFD.UK, CRDA_CFD.UK, HMSO_CFD.UK, AML_CFD.UK",
    "Above key moving averages (not oversold): ATG_CFD.UK, GDS_CFD.FR, DPLM_CFD.UK, IPO_CFD.UK, TUB_CFD.BE",
    "Data quality insufficient for reliable mean-reversion signal: BESI_CFD.NL (MA200 null), CRDA_CFD.UK (MA200 null), AML_CFD.UK (MA200 null)"
  ]
}
#878openrouterminimax/minimax-m2.12026-03-06T14:10:33.773989+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": "EU", "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": "AEO_CFD.US", "qty": 134.74062429822592, "avg_price": 22.265, "last_price": 19.314999999999998, "unrealized_pnl": -397.4848416797669, "opened_at": "2026-03-03T21:11:27.888829+00:00"}, {"symbol": "AGFB_CFD.BE", "qty": 0.0, "avg_price": 0.465, "last_price": 0.452, "unrealized_pnl": 0.0, "opened_at": "2026-03-03T21:11:27.888829+00:00"}, {"symbol": "AML_CFD.UK", "qty": 0.0, "avg_price": 39.92, "last_price": 42.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-04T10:26:53.527562+00:00"}, {"symbol": "ATG_CFD.UK", "qty": 10.135135135135135, "avg_price": 296.0, "last_price": 296.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-04T18:49:26.891792+00:00"}, {"symbol": "ATO_CFD.FR", "qty": 0.0, "avg_price": 40.34, "last_price": 39.505, "unrealized_pnl": 0.0, "opened_at": "2026-02-25T10:57:06.928276+00:00"}, {"symbol": "BIG_CFD.FR", "qty": 0.0, "avg_price": 0.453, "last_price": 0.296, "unrealized_pnl": 0.0, "opened_at": "2026-02-22T09:32:59.506254+00:00"}, {"symbol": "BYIT_CFD.UK", "qty": 20.505809979494188, "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": 0.0, "avg_price": 349.265, "last_price": 365.38, "unrealized_pnl": 0.0, "opened_at": "2026-02-24T18:14:37.115518+00:00"}, {"symbol": "DKNG_CFD.US", "qty": 118.67088607594935, "avg_price": 25.28, "last_price": 25.435000000000002, "unrealized_pnl": 18.393987341772284, "opened_at": "2026-03-05T18:20:59.102726+00:00"}, {"symbol": "DSY_CFD.FR", "qty": 0.0, "avg_price": 17.881, "last_price": 17.133, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T09:30:55.514112+00:00"}, {"symbol": "DT_CFD.US", "qty": 0.0, "avg_price": 34.105000000000004, "last_price": 35.864999999999995, "unrealized_pnl": 0.0, "opened_at": "2026-02-24T18:14:37.115518+00:00"}, {"symbol": "ERA_CFD.FR", "qty": 0.0, "avg_price": 47.4, "last_price": 48.88, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T17:33:27.020111+00:00"}, {"symbol": "FUTR_CFD.UK", "qty": 7.24287783679382, "avg_price": 414.2, "last_price": 414.2, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T00:47:27.070066+00:00"}, {"symbol": "GO_CFD.US", "qty": 459.4180704441041, "avg_price": 6.53, "last_price": 6.35, "unrealized_pnl": -82.69525267993902, "opened_at": "2026-03-05T18:20:59.102726+00:00"}, {"symbol": "HIK_CFD.UK", "qty": 0.0, "avg_price": 1409.0, "last_price": 1244.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-26T10:33:24.101894+00:00"}, {"symbol": "INF_CFD.UK", "qty": 0.0, "avg_price": 795.2, "last_price": 785.85, "unrealized_pnl": 0.0, "opened_at": "2026-03-02T18:21:09.503139+00:00"}, {"symbol": "LIO_CFD.UK", "qty": 0.0, "avg_price": 250.0, "last_price": 250.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-26T10:33:24.101894+00:00"}, {"symbol": "LMND_CFD.US", "qty": 0.0, "avg_price": 48.96, "last_price": 52.07, "unrealized_pnl": 0.0, "opened_at": "2026-02-24T11:23:36.694156+00:00"}, {"symbol": "LPE_CFD.FR", "qty": 33.9312778519239, "avg_price": 88.414, "last_price": 88.0, "unrealized_pnl": -14.047549030696546, "opened_at": "2026-03-02T18:21:09.503139+00:00"}, {"symbol": "MAN_CFD.US", "qty": 0.0, "avg_price": 25.68, "last_price": 27.94, "unrealized_pnl": 0.0, "opened_at": "2026-02-25T10:57:06.928276+00:00"}, {"symbol": "MDB_CFD.US", "qty": 11.90428951232094, "avg_price": 252.01, "last_price": 263.69, "unrealized_pnl": 139.04210150390867, "opened_at": "2026-03-04T10:26:53.527562+00:00"}, {"symbol": "OCDO_CFD.UK", "qty": 13.824884792626728, "avg_price": 217.0, "last_price": 217.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-22T09:32:59.506254+00:00"}, {"symbol": "PROX_CFD.BE", "qty": 0.0, "avg_price": 6.98, "last_price": 7.3, "unrealized_pnl": 0.0, "opened_at": "2026-03-01T10:30:13.622938+00:00"}, {"symbol": "RCO_CFD.FR", "qty": 0.0, "avg_price": 44.34, "last_price": 43.58, "unrealized_pnl": 0.0, "opened_at": "2026-02-23T10:32:09.961595+00:00"}, {"symbol": "RMV_CFD.UK", "qty": 0.0, "avg_price": 424.3, "last_price": 417.16, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T00:47:27.070066+00:00"}, {"symbol": "TCAP_CFD.UK", "qty": 12.096774193548388, "avg_price": 247.99999999999997, "last_price": 255.5, "unrealized_pnl": 90.72580645161325, "opened_at": "2026-03-04T18:49:26.891792+00:00"}, {"symbol": "TRST_CFD.UK", "qty": 0.0, "avg_price": 134.3, "last_price": 139.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T09:33:49.074031+00:00"}, {"symbol": "UKW_CFD.UK", "qty": 0.0, "avg_price": 92.35, "last_price": 94.79, "unrealized_pnl": 0.0, "opened_at": "2026-02-25T17:57:28.313088+00:00"}, {"symbol": "WIZZ_CFD.UK", "qty": 0.0, "avg_price": 1087.0, "last_price": 1003.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-03T10:20:03.276878+00:00"}, {"symbol": "WPP_CFD.UK", "qty": 0.0, "avg_price": 263.4, "last_price": 257.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-27T18:23:55.960577+00:00"}], "candidates": [{"symbol": "PAGE_CFD.UK", "mean_reversion_score": 85, "selection_reason": "Oversold: -13.1% daily drop, -9.5% below MA50, -20.5% below MA200, 113% volatility (reasonable)"}, {"symbol": "LXS_CFD.DE", "mean_reversion_score": 82, "selection_reason": "Oversold: -18.2% daily drop, -24.9% below MA50, -35.9% below MA200, 112% volatility (reasonable)"}, {"symbol": "CO_CFD.FR", "mean_reversion_score": 78, "selection_reason": "Oversold: -20.2% daily drop, -24.7% below MA50, -53.7% below MA200, 116% volatility"}, {"symbol": "DLN_CFD.UK", "mean_reversion_score": 72, "selection_reason": "Oversold: -7.2% daily drop, -2.5% below MA200, near MA50, 7354% volatility but more liquid"}, {"symbol": "STAN_CFD.UK", "mean_reversion_score": 68, "selection_reason": "Near MA50 with low volatility 76%, potential mean-reversion if it pulls back to MA50 from current level"}], "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 mean-reversion score (85): oversold -13.1% daily, -9.5% below MA50, -20.5% below MA200, attractive for reversal",
        "symbol": "PAGE_CFD.UK",
        "position_size": 3000
      },
      {
        "reason": "Second highest mean-reversion score (82): oversold -18.2% daily, -24.9% below MA50, -35.9% below MA200",
        "symbol": "LXS_CFD.DE",
        "position_size": 3000
      }
    ],
    "hold": [
      {
        "reason": "Largest unrealized loss (-$397) - hold for mean-reversion recovery potential",
        "symbol": "AEO_CFD.US"
      },
      {
        "reason": "Small unrealized gain (+$18) - hold, no clear mean-reversion signal",
        "symbol": "DKNG_CFD.US"
      },
      {
        "reason": "Unrealized loss (-$83) - hold for mean-reversion recovery",
        "symbol": "GO_CFD.US"
      },
      {
        "reason": "Small unrealized loss (-$14) - hold for recovery",
        "symbol": "LPE_CFD.FR"
      },
      {
        "reason": "At cost - hold for mean-reversion opportunity",
        "symbol": "ATG_CFD.UK"
      },
      {
        "reason": "At cost - hold for mean-reversion opportunity",
        "symbol": "BYIT_CFD.UK"
      },
      {
        "reason": "At cost - hold for mean-reversion opportunity",
        "symbol": "FUTR_CFD.UK"
      },
      {
        "reason": "At cost - hold for mean-reversion opportunity",
        "symbol": "OCDO_CFD.UK"
      }
    ],
    "sell": [
      {
        "reason": "Take profit on 3.0% gain to free capital for higher-conviction oversold opportunity",
        "symbol": "TCAP_CFD.UK"
      },
      {
        "reason": "Take profit on 4.6% gain to rotate into higher-score mean-reversion candidate",
        "symbol": "MDB_CFD.US"
      }
    ]
  },
  "portfolio_rationale": "At maximum 10 positions. Rotating out of TCAP (+3.0%) and MDB (+4.6%) to take profits, freeing capacity to add top 2 mean-reversion candidates PAGE and LXS. Both candidates show strong oversold signals with high mean-reversion scores. Holding AEO and GO despite losses as they are deep oversold with mean-reversion potential. Portfolio remains at 10 positions with gross leverage within limits."
}
Selection logs
#436stage12026-03-06T14:10:33.771749+00:00
{
  "selected_stocks": [
    {
      "symbol": "PAGE_CFD.UK",
      "selection_reason": "Oversold: -13.1% daily drop, -9.5% below MA50, -20.5% below MA200, 113% volatility (reasonable)",
      "mean_reversion_score": 85
    },
    {
      "symbol": "LXS_CFD.DE",
      "selection_reason": "Oversold: -18.2% daily drop, -24.9% below MA50, -35.9% below MA200, 112% volatility (reasonable)",
      "mean_reversion_score": 82
    },
    {
      "symbol": "CO_CFD.FR",
      "selection_reason": "Oversold: -20.2% daily drop, -24.7% below MA50, -53.7% below MA200, 116% volatility",
      "mean_reversion_score": 78
    },
    {
      "symbol": "DLN_CFD.UK",
      "selection_reason": "Oversold: -7.2% daily drop, -2.5% below MA200, near MA50, 7354% volatility but more liquid",
      "mean_reversion_score": 72
    },
    {
      "symbol": "STAN_CFD.UK",
      "selection_reason": "Near MA50 with low volatility 76%, potential mean-reversion if it pulls back to MA50 from current level",
      "mean_reversion_score": 68
    }
  ],
  "rejected_common_reasons": [
    "Overbought (large positive daily move): MCG_CFD.UK (+21.9%), HLMA_CFD.UK (+12.4%), RHIM_CFD.UK (+9.0%), BBY_CFD.UK (+5.2%)",
    "Extreme/unreliable volatility data (>4000%): BESI_CFD.NL, TRN_CFD.UK, SYNT_CFD.UK, CRDA_CFD.UK, HMSO_CFD.UK, AML_CFD.UK",
    "Above key moving averages (not oversold): ATG_CFD.UK, GDS_CFD.FR, DPLM_CFD.UK, IPO_CFD.UK, TUB_CFD.BE",
    "Data quality insufficient for reliable mean-reversion signal: BESI_CFD.NL (MA200 null), CRDA_CFD.UK (MA200 null), AML_CFD.UK (MA200 null)"
  ]
}