Arena run #1186
meanrev-v1 • openai • openai/gpt-5.2-pro • EU • success
Run status
as_of: 2026-04-11T10:24:31.165590+00:00
started_at: 2026-04-11T14:35:25.710133+00:00
finished_at: 2026-04-11T14:38:15.531776+00:00
duration_ms: 169820
Inputs
{
"as_of": "2026-04-11T10:24:31.165590+00:00",
"dry_run": false,
"selected": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "1d move -36.8% with deep extension below MA200 (-40.6%) and MA50 (-31.7%) -> strong short-term oversold mean-reversion setup",
"mean_reversion_score": 92
},
{
"symbol": "OCDO_CFD.UK",
"selection_reason": "Sharp selloff (-27.7% 1d) while stretched below MA200 (-25.4%) and MA50 (-16.5%) -> high-probability bounce candidate (2-10d)",
"mean_reversion_score": 88
},
{
"symbol": "LSS_CFD.FR",
"selection_reason": "Extended downtrend: MA200 -27.9% and MA50 -13.5% with mild 1d uptick (+1.8%) -> potential snapback toward moving averages",
"mean_reversion_score": 85
},
{
"symbol": "SW_CFD.FR",
"selection_reason": "Selloff -11.6% with price below MA200 (-16.2%) and MA50 (-9.9%) -> oversold but less extreme than top candidates",
"mean_reversion_score": 75
},
{
"symbol": "JUP_CFD.UK",
"selection_reason": "Large upside spike (+22.1% 1d) and very extended above MA200 (+57.7%) and MA50 (+19.3%) -> overbought mean-reversion (fade) candidate",
"mean_reversion_score": 80
}
],
"simulate_only": false,
"strict_replay": false,
"universe_symbols": [
"RS1_CFD.UK",
"MGNS_CFD.UK",
"GEN_CFD.UK",
"JUP_CFD.UK",
"BOY_CFD.UK",
"THG_CFD.UK",
"CRST_CFD.UK",
"PAGE_CFD.UK",
"ICG_CFD.UK",
"SHC_CFD.UK",
"PAG_CFD.UK",
"RHIM_CFD.UK",
"PNN_CFD.UK",
"CBG_CFD.UK",
"RSW_CFD.UK",
"DLN_CFD.UK",
"TPK_CFD.UK",
"DOM_CFD.UK",
"ITV_CFD.UK",
"SGE_CFD.UK",
"BBY_CFD.UK",
"IEP_CFD.BE",
"MAB_CFD.UK",
"OCDO_CFD.UK",
"IPO_CFD.UK",
"GROW_CFD.UK",
"IWG_CFD.UK",
"WKP_CFD.UK",
"SMIN_CFD.UK",
"DOCS_CFD.UK",
"CFEB_CFD.BE",
"CRDA_CFD.UK",
"CCC_CFD.UK",
"MNDI_CFD.UK",
"CCL_CFD.UK",
"HMSO_CFD.UK",
"NYT_CFD.US",
"LIO_CFD.UK",
"CABO_CFD.US",
"SW_CFD.FR",
"LSS_CFD.FR",
"PSON_CFD.UK",
"GRI_CFD.UK",
"DE_CFD.US",
"DELL_CFD.US",
"LPX_CFD.US",
"HQY_CFD.US",
"SEM_CFD.PT"
]
}Outputs
{
"actions": {
"buy": [
{
"reason": "Top mean-reversion score (92): extreme 1d selloff (-36.8%) and deep extension below MA200/MA50 per candidate notes -> strong short-term oversold bounce setup.",
"symbol": "PAGE_CFD.UK",
"position_size": 3000
},
{
"reason": "High mean-reversion score (88): sharp 1d drop (-27.7%) and stretched below MA200/MA50 per candidate notes -> attractive 2–10d rebound candidate.",
"symbol": "OCDO_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Large drawdown but no explicit risk/stop signal provided; avoid churn and allow time for mean-reversion. Rotation funded from winners instead.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Significant unrealized loss, but without additional risk/news signals provided, prefer HOLD to avoid overtrading and let the original mean-reversion thesis play out.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Moderate unrealized loss; keep position to allow potential bounce rather than rotating unnecessarily.",
"symbol": "ULTA_CFD.US"
},
{
"reason": "Recently opened; near flat. Avoid churning new positions absent a clear improvement signal.",
"symbol": "DLTR_CFD.US"
},
{
"reason": "Recently opened; near flat. Avoid overtrading.",
"symbol": "FIS_CFD.US"
},
{
"reason": "Recently opened; no new signal provided. Maintain exposure.",
"symbol": "CRST_CFD.UK"
},
{
"reason": "Recently opened; no new signal provided. Maintain exposure.",
"symbol": "HAS_CFD.UK"
},
{
"reason": "Recently opened; no new signal provided. Maintain exposure.",
"symbol": "ICG_CFD.UK"
}
],
"sell": [
{
"reason": "Take profit (+~254 unrealized) to free a slot for a higher-scoring, more acute oversold mean-reversion setup (PAGE). Rotation aligns with mean-reversion playbook and avoids adding leverage beyond the 10-position cap.",
"symbol": "COTY_CFD.US"
},
{
"reason": "Take profit (+~125 unrealized) and recycle capital into a stronger short-term oversold candidate (OCDO). Also needed to stay within max_positions=10 before adding new names.",
"symbol": "CLX_CFD.US"
}
]
},
"portfolio_rationale": "Portfolio is already at the max 10 active positions, so adding higher-conviction oversold setups requires rotation. To avoid churn, we keep recently opened/flat positions and do not force-stop current losers without explicit risk triggers. We fund two new, higher-scoring mean-reversion candidates (PAGE, OCDO) by harvesting gains from two winners (COTY, CLX), maintaining 10 positions and staying within the 3.0x gross leverage limit under the fixed 3,000 position sizing rule."
}Prompts & responses
#2290 • openrouter • openai/gpt-5.2-pro • 2026-04-11T14:35:25.754778+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": "RS1_CFD.UK", "name": "RS GROUP PLC", "sector": "", "last_price": 725.5, "change_1d_pct": 23.91118701964132, "distance_from_ma200_pct": 26.42587431420933, "distance_from_ma50_pct": 23.74236481466445, "volatility_20d_pct": 102.67597620645313, "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": "MGNS_CFD.UK", "name": "MORGAN SINDALL GROUP PLC", "sector": "", "last_price": 5370.0, "change_1d_pct": 19.599109131403125, "distance_from_ma200_pct": 32.00382943846654, "distance_from_ma50_pct": 15.63012691493826, "volatility_20d_pct": 90.38530398603771, "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": "GEN_CFD.UK", "name": "GENUIT GROUP PLC", "sector": "", "last_price": 370.0, "change_1d_pct": 13.671274961597547, "distance_from_ma200_pct": 1.1384913963945476, "distance_from_ma50_pct": 7.521632190000593, "volatility_20d_pct": 112.82453945409682, "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": "JUP_CFD.UK", "name": "JUPITER FUND MANAGEMENT", "sector": "", "last_price": 193.6, "change_1d_pct": 22.06809583858764, "distance_from_ma200_pct": 57.65825374753912, "distance_from_ma50_pct": 19.274691586205538, "volatility_20d_pct": 96.15961444303547, "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": "BOY_CFD.UK", "name": "BODYCOTE PLC", "sector": "", "last_price": 775.4, "change_1d_pct": 24.163330664531625, "distance_from_ma200_pct": 28.652243313347768, "distance_from_ma50_pct": 18.63612217470385, "volatility_20d_pct": 103.46484337510964, "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": "THG_CFD.UK", "name": "THG PLC", "sector": "", "last_price": 34.98, "change_1d_pct": -21.463852716659193, "distance_from_ma200_pct": 2.6990050116409536, "distance_from_ma50_pct": -18.650784422253118, "volatility_20d_pct": 150.5308117928466, "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": "CRST_CFD.UK", "name": "CREST NICHOLSON HOLDINGS", "sector": "", "last_price": 166.0, "change_1d_pct": -1.7169923031379541, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 17.326095868142446, "volatility_20d_pct": 6765.572529258391, "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": "PAGE_CFD.UK", "name": "PAGEGROUP PLC", "sector": "", "last_price": 152.7, "change_1d_pct": -36.79635761589404, "distance_from_ma200_pct": -40.61156091058385, "distance_from_ma50_pct": -31.72721647345812, "volatility_20d_pct": 193.22753953431183, "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": "ICG_CFD.UK", "name": "ICG Plc", "sector": "", "last_price": 1693.0, "change_1d_pct": -15.18545979199647, "distance_from_ma200_pct": -16.18296530905513, "distance_from_ma50_pct": -12.256151916578562, "volatility_20d_pct": 73.10253575454833, "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": "SHC_CFD.UK", "name": "SHAFTESBURY CAPITAL PLC", "sector": "", "last_price": 140.4, "change_1d_pct": -2.9045643153526868, "distance_from_ma200_pct": 0.26963533347688085, "distance_from_ma50_pct": -0.771073778544229, "volatility_20d_pct": 63.75522821252001, "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": "PAG_CFD.UK", "name": "PARAGON BANKING GROUP PLC", "sector": "", "last_price": 852.5, "change_1d_pct": -3.399433427762044, "distance_from_ma200_pct": -1.3404962254783492, "distance_from_ma50_pct": 0.699141440891915, "volatility_20d_pct": 71.52779356208148, "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": 2550.0, "change_1d_pct": -6.764168190127973, "distance_from_ma200_pct": -2.35709026809392, "distance_from_ma50_pct": 0.9429816244979738, "volatility_20d_pct": 151.25590362229855, "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": "PNN_CFD.UK", "name": "PENNON GROUP PLC", "sector": "", "last_price": 599.27, "change_1d_pct": 16.58722592945663, "distance_from_ma200_pct": 23.75684537859759, "distance_from_ma50_pct": 16.983140154106113, "volatility_20d_pct": 84.07433118596934, "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": "CBG_CFD.UK", "name": "CLOSE BROTHERS GROUP PLC", "sector": "", "last_price": 342.92, "change_1d_pct": -25.159319074639885, "distance_from_ma200_pct": -20.296380692860406, "distance_from_ma50_pct": -28.359052096581994, "volatility_20d_pct": 9929.245998071934, "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": "RSW_CFD.UK", "name": "RENISHAW PLC", "sector": "", "last_price": 4100.0, "change_1d_pct": 18.155619596541793, "distance_from_ma200_pct": 36.779911314574385, "distance_from_ma50_pct": 14.333028240759926, "volatility_20d_pct": 92.61568245477878, "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": 1953.0, "change_1d_pct": 10.401356698699837, "distance_from_ma200_pct": 5.069478604951705, "distance_from_ma50_pct": 12.150447212111025, "volatility_20d_pct": 115.39088732649292, "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": "TPK_CFD.UK", "name": "TRAVIS PERKINS PLC", "sector": "", "last_price": 601.57, "change_1d_pct": -1.21029986533977, "distance_from_ma200_pct": 0.5267641208837714, "distance_from_ma50_pct": -4.983077425595306, "volatility_20d_pct": 108.19399806448348, "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": "DOM_CFD.UK", "name": "DOMINO'S PIZZA GROUP PLC", "sector": "", "last_price": 183.13, "change_1d_pct": -0.3102885138813294, "distance_from_ma200_pct": -15.070952368916624, "distance_from_ma50_pct": 1.0777282376278619, "volatility_20d_pct": 87.92203351330001, "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": "ITV_CFD.UK", "name": "ITV PLC", "sector": "", "last_price": 79.85, "change_1d_pct": -2.9179331306990908, "distance_from_ma200_pct": 0.2068138123516139, "distance_from_ma50_pct": -1.5145908877870817, "volatility_20d_pct": 147.26310294999405, "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": "SGE_CFD.UK", "name": "SAGE GROUP PLC/THE", "sector": "", "last_price": 856.8, "change_1d_pct": 3.1046931407942235, "distance_from_ma200_pct": -22.243697671553598, "distance_from_ma50_pct": -3.8484198618999543, "volatility_20d_pct": 113.91757826865711, "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": "IEP_CFD.BE", "name": "IEP Invest NV", "sector": "", "last_price": 5.4, "change_1d_pct": 0.0, "distance_from_ma200_pct": 0.9951765451794659, "distance_from_ma50_pct": 0.5657756042326989, "volatility_20d_pct": 138.39532879660115, "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": "MAB_CFD.UK", "name": "MITCHELLS & BUTLERS PLC", "sector": "", "last_price": 292.81, "change_1d_pct": 14.37890625, "distance_from_ma200_pct": 11.595067041457764, "distance_from_ma50_pct": 10.935906392690597, "volatility_20d_pct": 118.87119977937589, "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": "OCDO_CFD.UK", "name": "OCADO GROUP PLC", "sector": "", "last_price": 191.8, "change_1d_pct": -27.731725697061027, "distance_from_ma200_pct": -25.425914067168765, "distance_from_ma50_pct": -16.54505218327368, "volatility_20d_pct": 249.00720326714767, "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": "GROW_CFD.UK", "name": "MOLTEN VENTURES PLC", "sector": "", "last_price": 465.0, "change_1d_pct": 1.572739187418093, "distance_from_ma200_pct": 22.569628774815076, "distance_from_ma50_pct": -4.275686024250158, "volatility_20d_pct": 115.72658030340939, "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": "IWG_CFD.UK", "name": "IWG PLC", "sector": "", "last_price": 177.0, "change_1d_pct": -26.786896095301127, "distance_from_ma200_pct": -17.645939421376646, "distance_from_ma50_pct": -22.14236071400294, "volatility_20d_pct": 154.02502086657427, "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": "WKP_CFD.UK", "name": "WORKSPACE GROUP PLC", "sector": "", "last_price": 423.0, "change_1d_pct": 3.6764705882353033, "distance_from_ma200_pct": 1.8640028868691871, "distance_from_ma50_pct": 5.808194506978848, "volatility_20d_pct": 70.2233148398582, "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": "SMIN_CFD.UK", "name": "SMITHS GROUP PLC", "sector": "", "last_price": 2410.0, "change_1d_pct": -2.900886381950041, "distance_from_ma200_pct": 8.724723729236384, "distance_from_ma50_pct": -1.2150629239554345, "volatility_20d_pct": 88.62035790812207, "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": "DOCS_CFD.UK", "name": "DR. MARTENS PLC", "sector": "", "last_price": 64.5, "change_1d_pct": -3.5153328347045543, "distance_from_ma200_pct": -14.829841246785492, "distance_from_ma50_pct": -11.320702834987761, "volatility_20d_pct": 128.30568371469687, "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": "CFEB_CFD.BE", "name": "Compagnie d'Entreprises CFE SA", "sector": "", "last_price": 11.65, "change_1d_pct": 10.952380952380958, "distance_from_ma200_pct": 27.744099511008756, "distance_from_ma50_pct": 11.01137556911198, "volatility_20d_pct": 124.27125846201999, "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": 3008.31, "change_1d_pct": -6.574223602484475, "distance_from_ma200_pct": 6.3535245799013484, "distance_from_ma50_pct": 6.21677669397771, "volatility_20d_pct": 122.68863352417152, "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": 3166.0, "change_1d_pct": 3.396472893533642, "distance_from_ma200_pct": 22.624137961218405, "distance_from_ma50_pct": 5.540749329986272, "volatility_20d_pct": 128.39090015387438, "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": "MNDI_CFD.UK", "name": "MONDI PLC", "sector": "", "last_price": 872.2, "change_1d_pct": -3.23940536942533, "distance_from_ma200_pct": -10.415672512073126, "distance_from_ma50_pct": -0.6407883120211899, "volatility_20d_pct": 116.1087128917664, "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": "CCL_CFD.UK", "name": "CARNIVAL PLC", "sector": "", "last_price": 2045.0, "change_1d_pct": -16.80397062712313, "distance_from_ma200_pct": 6.687498465878128, "distance_from_ma50_pct": -2.5866414417672567, "volatility_20d_pct": 184.46129061649768, "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": "NYT_CFD.US", "name": "NEW YORK TIMES CO-A", "sector": "", "last_price": 80.39, "change_1d_pct": -6.729318946513518, "distance_from_ma200_pct": 23.25246056465542, "distance_from_ma50_pct": 2.5565789809404604, "volatility_20d_pct": 40.292747360527436, "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": "LIO_CFD.UK", "name": "LIONTRUST ASSET MANAGEMENT", "sector": "", "last_price": 254.5, "change_1d_pct": 8.76068376068375, "distance_from_ma200_pct": -21.5373741842546, "distance_from_ma50_pct": -0.10244896196827113, "volatility_20d_pct": 159.90793576662, "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": "CABO_CFD.US", "name": "Cable One Inc", "sector": "", "last_price": 93.73, "change_1d_pct": -1.0556317956296857, "distance_from_ma200_pct": -26.478316868806196, "distance_from_ma50_pct": -6.10813041683863, "volatility_20d_pct": 131.88457142772032, "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": "SW_CFD.FR", "name": "Sodexo", "sector": "", "last_price": 40.439, "change_1d_pct": -11.614538937337437, "distance_from_ma200_pct": -16.173190802122594, "distance_from_ma50_pct": -9.890537915986663, "volatility_20d_pct": 103.00245662172654, "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": "LSS_CFD.FR", "name": "Lectra SA", "sector": "", "last_price": 16.18, "change_1d_pct": 1.8122325698464614, "distance_from_ma200_pct": -27.886811710147786, "distance_from_ma50_pct": -13.496752118474165, "volatility_20d_pct": 95.13374174947018, "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": "PSON_CFD.UK", "name": "PEARSON PLC", "sector": "", "last_price": 1014.0, "change_1d_pct": 0.5453644025780857, "distance_from_ma200_pct": -3.340468567087751, "distance_from_ma50_pct": 6.424380125215534, "volatility_20d_pct": 107.0287069893649, "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": "GRI_CFD.UK", "name": "GRAINGER PLC", "sector": "", "last_price": 192.4, "change_1d_pct": 0.08322929671245038, "distance_from_ma200_pct": -4.9312468607917275, "distance_from_ma50_pct": 0.9128310349964197, "volatility_20d_pct": 71.43116862190418, "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": "DE_CFD.US", "name": "", "sector": "", "last_price": 612.5, "change_1d_pct": 7.395847945013312, "distance_from_ma200_pct": 19.916882427321326, "distance_from_ma50_pct": 3.89900304453763, "volatility_20d_pct": 51.538439091305854, "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": "DELL_CFD.US", "name": "DELL TECHNOLOGIES -C", "sector": "", "last_price": 180.49, "change_1d_pct": 2.7554796470253384, "distance_from_ma200_pct": 32.83517994276366, "distance_from_ma50_pct": 24.877191525869357, "volatility_20d_pct": 96.24037658820814, "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": "LPX_CFD.US", "name": "Louisiana-Pacific Corporation", "sector": "", "last_price": 75.87, "change_1d_pct": 7.282239819004532, "distance_from_ma200_pct": -12.38154850340132, "distance_from_ma50_pct": -6.316215802393521, "volatility_20d_pct": 87.5954077011218, "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": "HQY_CFD.US", "name": "", "sector": "", "last_price": 79.18, "change_1d_pct": -2.9061925199264094, "distance_from_ma200_pct": -12.747869110784205, "distance_from_ma50_pct": -0.8601800493320155, "volatility_20d_pct": 68.0189839537268, "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": "SEM_CFD.PT", "name": "Semapa-Sociedade de Investimento e Gestao SGPS SA", "sector": "", "last_price": 22.8, "change_1d_pct": -1.2987012987012991, "distance_from_ma200_pct": 20.93710342376656, "distance_from_ma50_pct": 1.8590163993016606, "volatility_20d_pct": 3165.2721204492723, "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": "1d move -36.8% with deep extension below MA200 (-40.6%) and MA50 (-31.7%) -> strong short-term oversold mean-reversion setup",
"mean_reversion_score": 92
},
{
"symbol": "OCDO_CFD.UK",
"selection_reason": "Sharp selloff (-27.7% 1d) while stretched below MA200 (-25.4%) and MA50 (-16.5%) -> high-probability bounce candidate (2-10d)",
"mean_reversion_score": 88
},
{
"symbol": "LSS_CFD.FR",
"selection_reason": "Extended downtrend: MA200 -27.9% and MA50 -13.5% with mild 1d uptick (+1.8%) -> potential snapback toward moving averages",
"mean_reversion_score": 85
},
{
"symbol": "SW_CFD.FR",
"selection_reason": "Selloff -11.6% with price below MA200 (-16.2%) and MA50 (-9.9%) -> oversold but less extreme than top candidates",
"mean_reversion_score": 75
},
{
"symbol": "JUP_CFD.UK",
"selection_reason": "Large upside spike (+22.1% 1d) and very extended above MA200 (+57.7%) and MA50 (+19.3%) -> overbought mean-reversion (fade) candidate",
"mean_reversion_score": 80
}
],
"rejected_common_reasons": [
"Potential data-quality anomalies: extreme volatility_20d_pct values (e.g., thousands of %) suggest unreliable signals",
"Not sufficiently stretched vs MA50/MA200 for a 2–10 day mean-reversion trade",
"Earnings timing and event-risk are unknown (days_to_next_earnings/news empty), so some large 1-day moves may be event-driven",
"Sector labels are missing, limiting sector-concentration checks"
]
}#2291 • openrouter • openai/gpt-5.2-pro • 2026-04-11T14:36:49.127631+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": "ADBE_CFD.US", "qty": 12.025494047380446, "avg_price": 249.47, "last_price": 225.55, "unrealized_pnl": -287.64981761334013, "opened_at": "2026-03-14T18:06:47.909233+00:00"}, {"symbol": "AMH_CFD.US", "qty": 0.0, "avg_price": 29.674999999999997, "last_price": 28.435000000000002, "unrealized_pnl": 0.0, "opened_at": "2026-02-20T17:33:34.647633+00:00"}, {"symbol": "ARCAD_CFD.NL", "qty": 0.0, "avg_price": 28.6, "last_price": 30.0, "unrealized_pnl": 146.8531468531467, "opened_at": "2026-02-23T10:32:09.961595+00:00"}, {"symbol": "AUTO_CFD.UK", "qty": 0.0, "avg_price": 482.8, "last_price": 482.8, "unrealized_pnl": 0.0, "opened_at": "2026-04-03T10:08:21.824313+00:00"}, {"symbol": "BYIT_CFD.UK", "qty": 0.0, "avg_price": 292.6, "last_price": 292.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T09:30:55.514112+00:00"}, {"symbol": "CABO_CFD.US", "qty": 0.0, "avg_price": 94.325, "last_price": 108.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-27T18:23:55.960577+00:00"}, {"symbol": "CBG_CFD.UK", "qty": 0.0, "avg_price": 342.92, "last_price": 342.92, "unrealized_pnl": 0.0, "opened_at": "2026-03-20T10:26:40.341409+00:00"}, {"symbol": "CLX_CFD.US", "qty": 29.714738510301107, "avg_price": 100.96000000000001, "last_price": 105.17, "unrealized_pnl": 125.09904912836747, "opened_at": "2026-04-03T18:06:55.972569+00:00"}, {"symbol": "COTY_CFD.US", "qty": 1496.2593516209477, "avg_price": 2.005, "last_price": 2.175, "unrealized_pnl": 254.36408977556098, "opened_at": "2026-03-29T18:14:52.152268+00:00"}, {"symbol": "CRST_CFD.UK", "qty": 29.013539651837522, "avg_price": 103.4, "last_price": 103.4, "unrealized_pnl": 0.0, "opened_at": "2026-04-07T18:08:48.203875+00:00"}, {"symbol": "CRWD_CFD.US", "qty": 0.0, "avg_price": 350.45000000000005, "last_price": 382.96500000000003, "unrealized_pnl": 0.0, "opened_at": "2026-02-23T18:14:12.978497+00:00"}, {"symbol": "CSGP_CFD.US", "qty": 0.0, "avg_price": 47.235, "last_price": 40.870000000000005, "unrealized_pnl": 0.0, "opened_at": "2026-03-03T18:03:34.247734+00:00"}, {"symbol": "DLTR_CFD.US", "qty": 30.060120240480963, "avg_price": 99.8, "last_price": 99.445, "unrealized_pnl": -10.671342685370862, "opened_at": "2026-04-10T18:00:56.644490+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": "EEFT_CFD.US", "qty": 0.0, "avg_price": 63.91, "last_price": 63.91, "unrealized_pnl": 0.0, "opened_at": "2026-04-03T18:06:55.972569+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": "EZJ_CFD.UK", "qty": 0.0, "avg_price": 437.5, "last_price": 348.5, "unrealized_pnl": 0.0, "opened_at": "2026-03-03T10:20:03.276878+00:00"}, {"symbol": "FBIN_CFD.US", "qty": 0.0, "avg_price": 50.974999999999994, "last_price": 54.185, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T17:30:52.485845+00:00"}, {"symbol": "FICO_CFD.US", "qty": 2.6609662855571625, "avg_price": 1127.4099999999999, "last_price": 922.99, "unrealized_pnl": -543.9547280935948, "opened_at": "2026-03-14T18:06:47.909233+00:00"}, {"symbol": "FIS_CFD.US", "qty": 68.88633754305397, "avg_price": 43.55, "last_price": 43.355000000000004, "unrealized_pnl": -13.432835820895054, "opened_at": "2026-04-10T18:00:56.644490+00:00"}, {"symbol": "FLO_CFD.US", "qty": 0.0, "avg_price": 9.875, "last_price": 9.885000000000002, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T00:47:27.070066+00:00"}, {"symbol": "FUTR_CFD.UK", "qty": 0.0, "avg_price": 284.2, "last_price": 297.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-18T09:36:37.284518+00:00"}, {"symbol": "HAS_CFD.UK", "qty": 92.36453201970444, "avg_price": 32.48, "last_price": 32.48, "unrealized_pnl": 0.0, "opened_at": "2026-04-07T18:08:48.203875+00:00"}, {"symbol": "HIK_CFD.UK", "qty": 0.0, "avg_price": 1236.0, "last_price": 1236.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-28T10:05:22.022266+00:00"}, {"symbol": "ICG_CFD.UK", "qty": 2.0053475935828877, "avg_price": 1496.0, "last_price": 1496.0, "unrealized_pnl": 0.0, "opened_at": "2026-04-07T10:08:43.931517+00:00"}, {"symbol": "ITRK_CFD.UK", "qty": 0.0, "avg_price": 3620.0, "last_price": 3620.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-28T10:05:22.022266+00:00"}, {"symbol": "IWG_CFD.UK", "qty": 0.0, "avg_price": 185.0, "last_price": 172.2, "unrealized_pnl": 0.0, "opened_at": "2026-03-17T10:04:29.123574+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": "OCDO_CFD.UK", "qty": 0.0, "avg_price": 186.0, "last_price": 186.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-12T18:01:52.554929+00:00"}, {"symbol": "PAGE_CFD.UK", "qty": 0.0, "avg_price": 132.9, "last_price": 132.9, "unrealized_pnl": 0.0, "opened_at": "2026-03-05T10:27:11.178069+00:00"}, {"symbol": "PAYC_CFD.US", "qty": 0.0, "avg_price": 121.22, "last_price": 134.24, "unrealized_pnl": 322.2240554363969, "opened_at": "2026-02-19T17:33:27.020111+00:00"}, {"symbol": "PSN_CFD.UK", "qty": 0.0, "avg_price": 1215.0, "last_price": 1087.73, "unrealized_pnl": 0.0, "opened_at": "2026-03-12T18:01:52.554929+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": 0.0, "avg_price": 4.781, "last_price": 4.467, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T09:33:49.074031+00:00"}, {"symbol": "TRN_CFD.UK", "qty": 0.0, "avg_price": 184.5, "last_price": 204.2, "unrealized_pnl": 0.0, "opened_at": "2026-03-05T10:27:11.178069+00:00"}, {"symbol": "UKW_CFD.UK", "qty": 0.0, "avg_price": 92.35, "last_price": 92.35, "unrealized_pnl": 0.0, "opened_at": "2026-02-25T17:57:28.313088+00:00"}, {"symbol": "ULTA_CFD.US", "qty": 5.605381165919282, "avg_price": 535.2, "last_price": 520.1, "unrealized_pnl": -84.64125560538129, "opened_at": "2026-03-15T18:15:23.812047+00:00"}, {"symbol": "UTG_CFD.UK", "qty": 0.0, "avg_price": 461.2, "last_price": 457.2, "unrealized_pnl": 0.0, "opened_at": "2026-03-30T10:23:56.039732+00:00"}, {"symbol": "WPP_CFD.UK", "qty": 0.0, "avg_price": 232.09999999999997, "last_price": 232.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-28T10:51:05.818250+00:00"}, {"symbol": "ZS_CFD.US", "qty": 0.0, "avg_price": 159.76, "last_price": 138.82, "unrealized_pnl": 0.0, "opened_at": "2026-02-21T17:32:49.140800+00:00"}], "candidates": [{"symbol": "PAGE_CFD.UK", "mean_reversion_score": 92, "selection_reason": "1d move -36.8% with deep extension below MA200 (-40.6%) and MA50 (-31.7%) -> strong short-term oversold mean-reversion setup"}, {"symbol": "OCDO_CFD.UK", "mean_reversion_score": 88, "selection_reason": "Sharp selloff (-27.7% 1d) while stretched below MA200 (-25.4%) and MA50 (-16.5%) -> high-probability bounce candidate (2-10d)"}, {"symbol": "LSS_CFD.FR", "mean_reversion_score": 85, "selection_reason": "Extended downtrend: MA200 -27.9% and MA50 -13.5% with mild 1d uptick (+1.8%) -> potential snapback toward moving averages"}, {"symbol": "SW_CFD.FR", "mean_reversion_score": 75, "selection_reason": "Selloff -11.6% with price below MA200 (-16.2%) and MA50 (-9.9%) -> oversold but less extreme than top candidates"}, {"symbol": "JUP_CFD.UK", "mean_reversion_score": 80, "selection_reason": "Large upside spike (+22.1% 1d) and very extended above MA200 (+57.7%) and MA50 (+19.3%) -> overbought mean-reversion (fade) candidate"}], "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 (92): extreme 1d selloff (-36.8%) and deep extension below MA200/MA50 per candidate notes -> strong short-term oversold bounce setup.",
"symbol": "PAGE_CFD.UK",
"position_size": 3000
},
{
"reason": "High mean-reversion score (88): sharp 1d drop (-27.7%) and stretched below MA200/MA50 per candidate notes -> attractive 2–10d rebound candidate.",
"symbol": "OCDO_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Large drawdown but no explicit risk/stop signal provided; avoid churn and allow time for mean-reversion. Rotation funded from winners instead.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Significant unrealized loss, but without additional risk/news signals provided, prefer HOLD to avoid overtrading and let the original mean-reversion thesis play out.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Moderate unrealized loss; keep position to allow potential bounce rather than rotating unnecessarily.",
"symbol": "ULTA_CFD.US"
},
{
"reason": "Recently opened; near flat. Avoid churning new positions absent a clear improvement signal.",
"symbol": "DLTR_CFD.US"
},
{
"reason": "Recently opened; near flat. Avoid overtrading.",
"symbol": "FIS_CFD.US"
},
{
"reason": "Recently opened; no new signal provided. Maintain exposure.",
"symbol": "CRST_CFD.UK"
},
{
"reason": "Recently opened; no new signal provided. Maintain exposure.",
"symbol": "HAS_CFD.UK"
},
{
"reason": "Recently opened; no new signal provided. Maintain exposure.",
"symbol": "ICG_CFD.UK"
}
],
"sell": [
{
"reason": "Take profit (+~254 unrealized) to free a slot for a higher-scoring, more acute oversold mean-reversion setup (PAGE). Rotation aligns with mean-reversion playbook and avoids adding leverage beyond the 10-position cap.",
"symbol": "COTY_CFD.US"
},
{
"reason": "Take profit (+~125 unrealized) and recycle capital into a stronger short-term oversold candidate (OCDO). Also needed to stay within max_positions=10 before adding new names.",
"symbol": "CLX_CFD.US"
}
]
},
"portfolio_rationale": "Portfolio is already at the max 10 active positions, so adding higher-conviction oversold setups requires rotation. To avoid churn, we keep recently opened/flat positions and do not force-stop current losers without explicit risk triggers. We fund two new, higher-scoring mean-reversion candidates (PAGE, OCDO) by harvesting gains from two winners (COTY, CLX), maintaining 10 positions and staying within the 3.0x gross leverage limit under the fixed 3,000 position sizing rule."
}Selection logs
#1109 • stage1 • 2026-04-11T14:36:49.124988+00:00
{
"selected_stocks": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "1d move -36.8% with deep extension below MA200 (-40.6%) and MA50 (-31.7%) -> strong short-term oversold mean-reversion setup",
"mean_reversion_score": 92
},
{
"symbol": "OCDO_CFD.UK",
"selection_reason": "Sharp selloff (-27.7% 1d) while stretched below MA200 (-25.4%) and MA50 (-16.5%) -> high-probability bounce candidate (2-10d)",
"mean_reversion_score": 88
},
{
"symbol": "LSS_CFD.FR",
"selection_reason": "Extended downtrend: MA200 -27.9% and MA50 -13.5% with mild 1d uptick (+1.8%) -> potential snapback toward moving averages",
"mean_reversion_score": 85
},
{
"symbol": "SW_CFD.FR",
"selection_reason": "Selloff -11.6% with price below MA200 (-16.2%) and MA50 (-9.9%) -> oversold but less extreme than top candidates",
"mean_reversion_score": 75
},
{
"symbol": "JUP_CFD.UK",
"selection_reason": "Large upside spike (+22.1% 1d) and very extended above MA200 (+57.7%) and MA50 (+19.3%) -> overbought mean-reversion (fade) candidate",
"mean_reversion_score": 80
}
],
"rejected_common_reasons": [
"Potential data-quality anomalies: extreme volatility_20d_pct values (e.g., thousands of %) suggest unreliable signals",
"Not sufficiently stretched vs MA50/MA200 for a 2–10 day mean-reversion trade",
"Earnings timing and event-risk are unknown (days_to_next_earnings/news empty), so some large 1-day moves may be event-driven",
"Sector labels are missing, limiting sector-concentration checks"
]
}