Arena run #1006
meanrev-v1 • openai • openai/gpt-5.2-pro • EU • success
Run status
as_of: 2026-04-02T10:01:24.938009+00:00
started_at: 2026-04-02T11:11:50.550357+00:00
finished_at: 2026-04-02T11:14:10.191061+00:00
duration_ms: 139639
Inputs
{
"as_of": "2026-04-02T10:01:24.938009+00:00",
"dry_run": false,
"selected": [
{
"symbol": "IWG_CFD.UK",
"selection_reason": "1d change -26.8% with price far below MA50 (-22.1%) and MA200 (-17.6%); elevated 20d vol (154%) suggests oversold dislocation for 2-10d bounce.",
"mean_reversion_score": 88
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Sharp 1d selloff (-26.6%) and materially below MA50 (-22.1%) and MA200 (-13.4%); high 20d vol (169%) consistent with near-term mean-reversion setup.",
"mean_reversion_score": 86
},
{
"symbol": "BYIT_CFD.UK",
"selection_reason": "Down -12.7% on the day and extended below MA200 (-28.0%) and MA50 (-14.3%); moderate-high 20d vol (87.8%) supports rebound potential.",
"mean_reversion_score": 82
},
{
"symbol": "PSN_CFD.UK",
"selection_reason": "Down -15.0% with price below MA50 (-19.1%) and MA200 (-12.7%); 20d vol (126%) indicates oversold condition suitable for short-horizon reversion.",
"mean_reversion_score": 80
},
{
"symbol": "UTG_CFD.UK",
"selection_reason": "Price significantly below MA200 (-32.1%) and MA50 (-13.5%) with recent weakness (-8.3% 1d); elevated 20d vol (98.9%) implies potential snap-back.",
"mean_reversion_score": 76
}
],
"simulate_only": false,
"strict_replay": false,
"universe_symbols": [
"CRST_CFD.UK",
"FUTR_CFD.UK",
"MSLH_CFD.UK",
"BOY_CFD.UK",
"SPX_CFD.UK",
"ESNT_CFD.UK",
"ICG_CFD.UK",
"JDW_CFD.UK",
"MCG_CFD.UK",
"SHC_CFD.UK",
"SAFE_CFD.UK",
"LIO_CFD.UK",
"RHIM_CFD.UK",
"UTG_CFD.UK",
"CBG_CFD.UK",
"RSW_CFD.UK",
"DLN_CFD.UK",
"PZC_CFD.UK",
"DOM_CFD.UK",
"FRES_CFD.UK",
"HWDN_CFD.UK",
"LRE_CFD.UK",
"WIZZ_CFD.UK",
"STJ_CFD.UK",
"BBY_CFD.UK",
"AAL_CFD.UK",
"IEP_CFD.BE",
"UMI_CFD.BE",
"MAB_CFD.UK",
"AGFB_CFD.BE",
"EL_CFD.US",
"MRN_CFD.FR",
"EGL_CFD.PT",
"IPO_CFD.UK",
"CMCX_CFD.UK",
"IDL_CFD.FR",
"IWG_CFD.UK",
"BPOST_CFD.BE",
"AAD_CFD.DE",
"SRP_CFD.UK",
"SKB_CFD.DE",
"BYIT_CFD.UK",
"VIRI_CFD.FR",
"APAM_CFD.NL",
"WEW_CFD.DE",
"EZJ_CFD.UK",
"WKP_CFD.UK",
"CLARI_CFD.FR",
"PSN_CFD.UK"
]
}Outputs
{
"actions": {
"buy": [
{
"reason": "High mean-reversion score (86) with sharp selloff and large deviations vs MA50/MA200 per candidate notes; add as a primary oversold rebound setup.",
"symbol": "CBG_CFD.UK",
"position_size": 3000
},
{
"reason": "Strong mean-reversion score (82) with material extension below key moving averages per candidate notes; add as a second oversold rebound setup.",
"symbol": "BYIT_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Already a top mean-reversion candidate this run (very high score); maintain exposure for potential short-horizon rebound rather than churn.",
"symbol": "IWG_CFD.UK"
},
{
"reason": "Included as a strong mean-reversion candidate; keep position to allow the oversold thesis time to play out.",
"symbol": "PSN_CFD.UK"
},
{
"reason": "Mean-reversion candidate (albeit lower score than top picks); hold to avoid overtrading while maintaining diversified oversold exposure.",
"symbol": "UTG_CFD.UK"
},
{
"reason": "No new risk/event data provided to justify an exit; avoid overtrading and allow mean-reversion potential to play out.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Downside move alone is not enough to force a sale here without additional risk/event inputs; hold to avoid churn.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Large drawdown but no explicit risk trigger provided; mean-reversion strategy typically avoids panic-selling absent new information.",
"symbol": "ZS_CFD.US"
},
{
"reason": "Position is working modestly; no clear replacement benefit requiring additional turnover beyond the planned rotations.",
"symbol": "COTY_CFD.US"
},
{
"reason": "Small unrealized gain and no candidate-driven need to rotate further this run; keep to respect overtrading limits.",
"symbol": "ULTA_CFD.US"
}
],
"sell": [
{
"reason": "Rotate out of a low-signal/neutral position (no strong mean-reversion setup indicated this run) to free a slot for higher-scoring oversold candidates.",
"symbol": "PAGE_CFD.UK"
},
{
"reason": "Rotate out of a low-signal/neutral position (no strong mean-reversion setup indicated this run) to reallocate to higher mean-reversion score opportunities.",
"symbol": "FUTR_CFD.UK"
}
]
},
"portfolio_rationale": "Portfolio is at the max 10 positions, so any adds require sells. To improve alignment with this run’s mean-reversion opportunity set while respecting the max 2 sells/buys rule and avoiding churn, rotate out of two UK holdings with no highlighted mean-reversion signal (PAGE, FUTR) and reallocate fixed-size positions into two higher-scoring oversold UK candidates (CBG, BYIT). Maintain existing core oversold candidates already held (IWG, PSN, UTG) and keep remaining positions unchanged due to lack of new risk/event information."
}Prompts & responses
#1952 • openrouter • openai/gpt-5.2-pro • 2026-04-02T11:11:50.594391+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": "CRST_CFD.UK", "name": "CREST NICHOLSON HOLDINGS", "sector": "", "last_price": 167.8, "change_1d_pct": 24.85119047619049, "distance_from_ma200_pct": 1.2720261375977815, "distance_from_ma50_pct": 17.82963155418549, "volatility_20d_pct": 158.46878099582966, "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": "FUTR_CFD.UK", "name": "FUTURE PLC", "sector": "", "last_price": 368.42, "change_1d_pct": -30.74812030075188, "distance_from_ma200_pct": -45.17933560634293, "distance_from_ma50_pct": -32.26659626501075, "volatility_20d_pct": 170.38116786538166, "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": "MSLH_CFD.UK", "name": "MARSHALLS PLC", "sector": "", "last_price": 179.0, "change_1d_pct": 2.052451539338662, "distance_from_ma200_pct": -18.41965657865713, "distance_from_ma50_pct": 4.539832012082234, "volatility_20d_pct": 102.90810964969117, "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": "SPX_CFD.UK", "name": "SPIRAX-SARCO ENGINEERING PLC", "sector": "", "last_price": 7608.71, "change_1d_pct": 10.91413994169097, "distance_from_ma200_pct": 15.905097055024719, "distance_from_ma50_pct": 8.459177525660632, "volatility_20d_pct": 84.71063298478786, "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": "ESNT_CFD.UK", "name": "ESSENTRA PLC", "sector": "", "last_price": 108.4, "change_1d_pct": 4.230769230769238, "distance_from_ma200_pct": 7.40452119530135, "distance_from_ma50_pct": 9.771484932749797, "volatility_20d_pct": 98.9832071461764, "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": "JDW_CFD.UK", "name": "WETHERSPOON (J.D.) PLC", "sector": "", "last_price": 748.5, "change_1d_pct": 9.750733137829904, "distance_from_ma200_pct": 6.242631058659898, "distance_from_ma50_pct": 5.290077328071208, "volatility_20d_pct": 98.2373545531062, "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": 19.51, "change_1d_pct": -21.646586345381515, "distance_from_ma200_pct": -29.294942649537013, "distance_from_ma50_pct": -17.188746837807088, "volatility_20d_pct": 260.52106739031456, "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": "SAFE_CFD.UK", "name": "SAFESTORE HOLDINGS PLC", "sector": "", "last_price": 708.0, "change_1d_pct": 0.14144271570013522, "distance_from_ma200_pct": 7.079918522466522, "distance_from_ma50_pct": -2.535991476029087, "volatility_20d_pct": 107.99712610776675, "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": 257.5, "change_1d_pct": 3.8306451612903247, "distance_from_ma200_pct": -20.8874735683513, "distance_from_ma50_pct": 0.10846703807232405, "volatility_20d_pct": 141.21527367452939, "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": "UTG_CFD.UK", "name": "UNITE GROUP PLC/THE", "sector": "", "last_price": 505.0, "change_1d_pct": -8.265213442325159, "distance_from_ma200_pct": -32.12786599325862, "distance_from_ma50_pct": -13.548388422126267, "volatility_20d_pct": 98.87339279796446, "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": 372.74, "change_1d_pct": -26.625984251968504, "distance_from_ma200_pct": -13.365429078084645, "distance_from_ma50_pct": -22.129222788055436, "volatility_20d_pct": 169.0552301316783, "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": "PZC_CFD.UK", "name": "PZ CUSSONS PLC", "sector": "", "last_price": 77.7, "change_1d_pct": -13.858093126385807, "distance_from_ma200_pct": 2.9808107121248817, "distance_from_ma50_pct": 2.5905093876257723, "volatility_20d_pct": 92.73478468401771, "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": "FRES_CFD.UK", "name": "FRESNILLO PLC", "sector": "", "last_price": 3494.0, "change_1d_pct": 9.874213836477995, "distance_from_ma200_pct": 32.60847028444005, "distance_from_ma50_pct": -5.295273561947766, "volatility_20d_pct": 123.12648079806692, "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": "HWDN_CFD.UK", "name": "HOWDEN JOINERY GROUP PLC", "sector": "", "last_price": 843.0, "change_1d_pct": -2.686229466563539, "distance_from_ma200_pct": 2.9144756901175572, "distance_from_ma50_pct": 0.6796292983215046, "volatility_20d_pct": 44.16384759940265, "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": "LRE_CFD.UK", "name": "LANCASHIRE HOLDINGS LTD", "sector": "", "last_price": 611.0, "change_1d_pct": -7.424242424242422, "distance_from_ma200_pct": 0.4068944205071867, "distance_from_ma50_pct": -6.396619125545266, "volatility_20d_pct": 86.32350801127552, "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": "WIZZ_CFD.UK", "name": "WIZZ AIR HOLDINGS PLC", "sector": "", "last_price": 906.21, "change_1d_pct": 2.165727170236753, "distance_from_ma200_pct": -22.830319651563403, "distance_from_ma50_pct": -21.16928444038726, "volatility_20d_pct": 194.9261168436724, "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": "STJ_CFD.UK", "name": "ST JAMES'S PLACE PLC", "sector": "", "last_price": 1280.0, "change_1d_pct": -14.836992681304062, "distance_from_ma200_pct": 4.633703562254432, "distance_from_ma50_pct": -6.669417974449299, "volatility_20d_pct": 125.87476157380789, "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": 722.5, "change_1d_pct": -1.0951403148528382, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -1.628407265201648, "volatility_20d_pct": 2239.4661443465884, "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": "AAL_CFD.UK", "name": "ANGLO AMERICAN PLC", "sector": "", "last_price": 3586.0, "change_1d_pct": 0.055803571428580945, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 11.748904636364198, "volatility_20d_pct": 4209.946938281094, "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": "UMI_CFD.BE", "name": "Umicore", "sector": "", "last_price": 16.7, "change_1d_pct": 4.1147132169575995, "distance_from_ma200_pct": 3.49407140099367, "distance_from_ma50_pct": -7.589911695797058, "volatility_20d_pct": 84.62085258767603, "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": "AGFB_CFD.BE", "name": "Agfa-Gevaert", "sector": "", "last_price": 0.49, "change_1d_pct": 4.255319148936176, "distance_from_ma200_pct": -34.941646640200744, "distance_from_ma50_pct": 1.491300745650359, "volatility_20d_pct": 106.27247086566986, "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": "EL_CFD.US", "name": "Estee Lauder Companies Inc", "sector": "", "last_price": 72.69, "change_1d_pct": 6.1167883211678875, "distance_from_ma200_pct": -23.440450699715733, "distance_from_ma50_pct": -26.7152207314565, "volatility_20d_pct": 133.36185414921857, "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": "MRN_CFD.FR", "name": "Mersen", "sector": "", "last_price": 22.85, "change_1d_pct": 4.10022779043282, "distance_from_ma200_pct": -4.206528209814953, "distance_from_ma50_pct": -9.61620310524709, "volatility_20d_pct": 88.76493092868468, "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": "EGL_CFD.PT", "name": "Mota-Engil SGPS SA", "sector": "", "last_price": 4.72, "change_1d_pct": 7.762557077625565, "distance_from_ma200_pct": -3.2219702530581484, "distance_from_ma50_pct": 0.8090352233603548, "volatility_20d_pct": 99.94399510320801, "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": "CMCX_CFD.UK", "name": "CMC MARKETS PLC", "sector": "", "last_price": 336.5, "change_1d_pct": 6.487341772151889, "distance_from_ma200_pct": 33.727269096422944, "distance_from_ma50_pct": 13.399699398122245, "volatility_20d_pct": 207.2492443353413, "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": "IDL_CFD.FR", "name": "", "sector": "", "last_price": 325.0, "change_1d_pct": 2.0408163265306145, "distance_from_ma200_pct": -18.920591076375317, "distance_from_ma50_pct": -13.377134474029429, "volatility_20d_pct": 98.79615587582798, "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": "BPOST_CFD.BE", "name": "Bpost", "sector": "", "last_price": 1.8559999999999999, "change_1d_pct": 0.5417118093174356, "distance_from_ma200_pct": -11.943598356533547, "distance_from_ma50_pct": -9.673149175572815, "volatility_20d_pct": 98.05183037189238, "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": "AAD_CFD.DE", "name": "AMADEUS FIRE AG", "sector": "", "last_price": 23.689, "change_1d_pct": 5.991051454138696, "distance_from_ma200_pct": -52.327747790461856, "distance_from_ma50_pct": -20.72182661409344, "volatility_20d_pct": 72.98703710542877, "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": "SRP_CFD.UK", "name": "SERCO GROUP PLC", "sector": "", "last_price": 300.0, "change_1d_pct": -0.3984063745019917, "distance_from_ma200_pct": 34.11120814305375, "distance_from_ma50_pct": 6.89280433272168, "volatility_20d_pct": 77.89780733903845, "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": "SKB_CFD.DE", "name": "Koenig & Bauer AG", "sector": "", "last_price": 8.451, "change_1d_pct": 2.7602140077821025, "distance_from_ma200_pct": -28.569556989254576, "distance_from_ma50_pct": -6.41859270217836, "volatility_20d_pct": 100.05173444339124, "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": 300.4, "change_1d_pct": -12.674418604651173, "distance_from_ma200_pct": -28.03446775272175, "distance_from_ma50_pct": -14.34777426817815, "volatility_20d_pct": 87.82535981934274, "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": "VIRI_CFD.FR", "name": "VIRIDIEN", "sector": "", "last_price": 127.1, "change_1d_pct": 32.258064516129025, "distance_from_ma200_pct": 86.88026988392838, "distance_from_ma50_pct": 29.097132641971314, "volatility_20d_pct": 297.97668648307325, "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": "APAM_CFD.NL", "name": "Aperam SA", "sector": "", "last_price": 33.98, "change_1d_pct": 2.5347012673506253, "distance_from_ma200_pct": 13.229433054763806, "distance_from_ma50_pct": -9.772311836237025, "volatility_20d_pct": 107.27141164278213, "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": "WEW_CFD.DE", "name": "Westwing Group AG", "sector": "", "last_price": 14.0, "change_1d_pct": 3.7651941891491125, "distance_from_ma200_pct": 11.846814602720102, "distance_from_ma50_pct": -12.710368013088457, "volatility_20d_pct": 101.88568059283736, "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": "EZJ_CFD.UK", "name": "EASYJET PLC", "sector": "", "last_price": 362.85, "change_1d_pct": -0.3159340659340648, "distance_from_ma200_pct": -24.167583266752256, "distance_from_ma50_pct": -16.124990753753977, "volatility_20d_pct": 106.20041289549162, "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": "CLARI_CFD.FR", "name": "Clariane SE", "sector": "", "last_price": 3.7119999999999997, "change_1d_pct": 10.279263220439683, "distance_from_ma200_pct": -10.1218270547344, "distance_from_ma50_pct": -2.49693989587767, "volatility_20d_pct": 77.3621836086101, "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": "PSN_CFD.UK", "name": "PERSIMMON PLC", "sector": "", "last_price": 1094.5, "change_1d_pct": -14.990291262135925, "distance_from_ma200_pct": -12.659800346448124, "distance_from_ma50_pct": -19.09340856328078, "volatility_20d_pct": 125.96745311555702, "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": "IWG_CFD.UK",
"selection_reason": "1d change -26.8% with price far below MA50 (-22.1%) and MA200 (-17.6%); elevated 20d vol (154%) suggests oversold dislocation for 2-10d bounce.",
"mean_reversion_score": 88
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Sharp 1d selloff (-26.6%) and materially below MA50 (-22.1%) and MA200 (-13.4%); high 20d vol (169%) consistent with near-term mean-reversion setup.",
"mean_reversion_score": 86
},
{
"symbol": "BYIT_CFD.UK",
"selection_reason": "Down -12.7% on the day and extended below MA200 (-28.0%) and MA50 (-14.3%); moderate-high 20d vol (87.8%) supports rebound potential.",
"mean_reversion_score": 82
},
{
"symbol": "PSN_CFD.UK",
"selection_reason": "Down -15.0% with price below MA50 (-19.1%) and MA200 (-12.7%); 20d vol (126%) indicates oversold condition suitable for short-horizon reversion.",
"mean_reversion_score": 80
},
{
"symbol": "UTG_CFD.UK",
"selection_reason": "Price significantly below MA200 (-32.1%) and MA50 (-13.5%) with recent weakness (-8.3% 1d); elevated 20d vol (98.9%) implies potential snap-back.",
"mean_reversion_score": 76
}
],
"rejected_common_reasons": [
"Missing/unknown sector, earnings, liquidity, and news data (cannot screen for earnings within 5 trading days or confirm non-event-driven moves).",
"Large upside gaps and price stretched above MA50/MA200 (more momentum/overbought than long mean-reversion).",
"Volatility/technical metrics appear anomalously extreme or incomplete (e.g., MA200 null or 20d vol in the thousands), reducing confidence in signals.",
"Not sufficiently dislocated versus moving averages (weak mean-reversion edge for 2-10 trading days).",
"Very high 20d volatility suggesting potentially binary/event-driven behavior (risk of continuation rather than reversion)."
]
}#1953 • openrouter • openai/gpt-5.2-pro • 2026-04-02T11:12:49.220235+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": 241.44, "unrealized_pnl": -96.564717200465, "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": "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": "COTY_CFD.US", "qty": 1496.2593516209477, "avg_price": 2.005, "last_price": 2.0549999999999997, "unrealized_pnl": 74.81296758104712, "opened_at": "2026-03-29T18:14:52.152268+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": "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": "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": 1061.835, "unrealized_pnl": -174.49286417541046, "opened_at": "2026-03-14T18:06:47.909233+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": 10.55594651653765, "avg_price": 284.2, "last_price": 284.2, "unrealized_pnl": 0.0, "opened_at": "2026-02-18T09:36:37.284518+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": "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": 16.216216216216218, "avg_price": 185.0, "last_price": 172.2, "unrealized_pnl": -207.56756756756778, "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": 204.3, "last_price": 204.3, "unrealized_pnl": 0.0, "opened_at": "2026-03-12T18:01:52.554929+00:00"}, {"symbol": "PAGE_CFD.UK", "qty": 22.57336343115124, "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": 2.4691358024691357, "avg_price": 1215.0, "last_price": 1068.0, "unrealized_pnl": -362.96296296296293, "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": 536.86, "unrealized_pnl": 9.30493273542583, "opened_at": "2026-03-15T18:15:23.812047+00:00"}, {"symbol": "UTG_CFD.UK", "qty": 6.504770164787511, "avg_price": 461.2, "last_price": 461.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": 18.778167250876315, "avg_price": 159.76, "last_price": 136.74, "unrealized_pnl": -432.27341011517245, "opened_at": "2026-02-21T17:32:49.140800+00:00"}], "candidates": [{"symbol": "IWG_CFD.UK", "mean_reversion_score": 88, "selection_reason": "1d change -26.8% with price far below MA50 (-22.1%) and MA200 (-17.6%); elevated 20d vol (154%) suggests oversold dislocation for 2-10d bounce."}, {"symbol": "CBG_CFD.UK", "mean_reversion_score": 86, "selection_reason": "Sharp 1d selloff (-26.6%) and materially below MA50 (-22.1%) and MA200 (-13.4%); high 20d vol (169%) consistent with near-term mean-reversion setup."}, {"symbol": "BYIT_CFD.UK", "mean_reversion_score": 82, "selection_reason": "Down -12.7% on the day and extended below MA200 (-28.0%) and MA50 (-14.3%); moderate-high 20d vol (87.8%) supports rebound potential."}, {"symbol": "PSN_CFD.UK", "mean_reversion_score": 80, "selection_reason": "Down -15.0% with price below MA50 (-19.1%) and MA200 (-12.7%); 20d vol (126%) indicates oversold condition suitable for short-horizon reversion."}, {"symbol": "UTG_CFD.UK", "mean_reversion_score": 76, "selection_reason": "Price significantly below MA200 (-32.1%) and MA50 (-13.5%) with recent weakness (-8.3% 1d); elevated 20d vol (98.9%) implies potential snap-back."}], "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": "High mean-reversion score (86) with sharp selloff and large deviations vs MA50/MA200 per candidate notes; add as a primary oversold rebound setup.",
"symbol": "CBG_CFD.UK",
"position_size": 3000
},
{
"reason": "Strong mean-reversion score (82) with material extension below key moving averages per candidate notes; add as a second oversold rebound setup.",
"symbol": "BYIT_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Already a top mean-reversion candidate this run (very high score); maintain exposure for potential short-horizon rebound rather than churn.",
"symbol": "IWG_CFD.UK"
},
{
"reason": "Included as a strong mean-reversion candidate; keep position to allow the oversold thesis time to play out.",
"symbol": "PSN_CFD.UK"
},
{
"reason": "Mean-reversion candidate (albeit lower score than top picks); hold to avoid overtrading while maintaining diversified oversold exposure.",
"symbol": "UTG_CFD.UK"
},
{
"reason": "No new risk/event data provided to justify an exit; avoid overtrading and allow mean-reversion potential to play out.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Downside move alone is not enough to force a sale here without additional risk/event inputs; hold to avoid churn.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Large drawdown but no explicit risk trigger provided; mean-reversion strategy typically avoids panic-selling absent new information.",
"symbol": "ZS_CFD.US"
},
{
"reason": "Position is working modestly; no clear replacement benefit requiring additional turnover beyond the planned rotations.",
"symbol": "COTY_CFD.US"
},
{
"reason": "Small unrealized gain and no candidate-driven need to rotate further this run; keep to respect overtrading limits.",
"symbol": "ULTA_CFD.US"
}
],
"sell": [
{
"reason": "Rotate out of a low-signal/neutral position (no strong mean-reversion setup indicated this run) to free a slot for higher-scoring oversold candidates.",
"symbol": "PAGE_CFD.UK"
},
{
"reason": "Rotate out of a low-signal/neutral position (no strong mean-reversion setup indicated this run) to reallocate to higher mean-reversion score opportunities.",
"symbol": "FUTR_CFD.UK"
}
]
},
"portfolio_rationale": "Portfolio is at the max 10 positions, so any adds require sells. To improve alignment with this run’s mean-reversion opportunity set while respecting the max 2 sells/buys rule and avoiding churn, rotate out of two UK holdings with no highlighted mean-reversion signal (PAGE, FUTR) and reallocate fixed-size positions into two higher-scoring oversold UK candidates (CBG, BYIT). Maintain existing core oversold candidates already held (IWG, PSN, UTG) and keep remaining positions unchanged due to lack of new risk/event information."
}Selection logs
#951 • stage1 • 2026-04-02T11:12:49.217926+00:00
{
"selected_stocks": [
{
"symbol": "IWG_CFD.UK",
"selection_reason": "1d change -26.8% with price far below MA50 (-22.1%) and MA200 (-17.6%); elevated 20d vol (154%) suggests oversold dislocation for 2-10d bounce.",
"mean_reversion_score": 88
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Sharp 1d selloff (-26.6%) and materially below MA50 (-22.1%) and MA200 (-13.4%); high 20d vol (169%) consistent with near-term mean-reversion setup.",
"mean_reversion_score": 86
},
{
"symbol": "BYIT_CFD.UK",
"selection_reason": "Down -12.7% on the day and extended below MA200 (-28.0%) and MA50 (-14.3%); moderate-high 20d vol (87.8%) supports rebound potential.",
"mean_reversion_score": 82
},
{
"symbol": "PSN_CFD.UK",
"selection_reason": "Down -15.0% with price below MA50 (-19.1%) and MA200 (-12.7%); 20d vol (126%) indicates oversold condition suitable for short-horizon reversion.",
"mean_reversion_score": 80
},
{
"symbol": "UTG_CFD.UK",
"selection_reason": "Price significantly below MA200 (-32.1%) and MA50 (-13.5%) with recent weakness (-8.3% 1d); elevated 20d vol (98.9%) implies potential snap-back.",
"mean_reversion_score": 76
}
],
"rejected_common_reasons": [
"Missing/unknown sector, earnings, liquidity, and news data (cannot screen for earnings within 5 trading days or confirm non-event-driven moves).",
"Large upside gaps and price stretched above MA50/MA200 (more momentum/overbought than long mean-reversion).",
"Volatility/technical metrics appear anomalously extreme or incomplete (e.g., MA200 null or 20d vol in the thousands), reducing confidence in signals.",
"Not sufficiently dislocated versus moving averages (weak mean-reversion edge for 2-10 trading days).",
"Very high 20d volatility suggesting potentially binary/event-driven behavior (risk of continuation rather than reversion)."
]
}