Arena run #584
meanrev-v1 • google • google/gemini-3-pro-preview • EU • success
Run status
as_of: 2026-03-12T10:21:39.078796+00:00
started_at: 2026-03-12T14:33:38.027405+00:00
finished_at: 2026-03-12T14:35:42.233189+00:00
duration_ms: 124204
Inputs
{
"as_of": "2026-03-12T10:21:39.078796+00:00",
"dry_run": false,
"selected": [
{
"symbol": "RSW_CFD.UK",
"selection_reason": "Extreme overextension: +18% 1d change and +36% above MA200, prime candidate for technical pullback.",
"mean_reversion_score": 92
},
{
"symbol": "TRN_CFD.UK",
"selection_reason": "Significant 1d drop of -12.9% creates oversold condition relative to recent volatility, targeting a bounce.",
"mean_reversion_score": 88
},
{
"symbol": "SAFE_CFD.UK",
"selection_reason": "Overbought condition with +13% 1d move and price 21% above MA200, suggesting mean reversion potential.",
"mean_reversion_score": 85
},
{
"symbol": "GMM_CFD.DE",
"selection_reason": "Sharp -9.1% pullback while remaining above long-term MA200 (+4%), offering a dip-buying opportunity.",
"mean_reversion_score": 80
},
{
"symbol": "OSB_CFD.UK",
"selection_reason": "Oversold on 1d basis (-8.5%) with price testing MA50 support zone, attractive for short-term reversal.",
"mean_reversion_score": 78
}
],
"simulate_only": false,
"strict_replay": false,
"universe_symbols": [
"SAFE_CFD.UK",
"UTG_CFD.UK",
"TRN_CFD.UK",
"WIX_CFD.UK",
"KGF_CFD.UK",
"RHIM_CFD.UK",
"VTY_CFD.UK",
"RSW_CFD.UK",
"DOM_CFD.UK",
"OCDO_CFD.UK",
"SGRO_CFD.UK",
"LRE_CFD.UK",
"HSBA_CFD.UK",
"LIO_CFD.UK",
"ITV_CFD.UK",
"LSEG_CFD.UK",
"TRST_CFD.UK",
"KWS_CFD.DE",
"OSB_CFD.UK",
"GMM_CFD.DE",
"BME_CFD.UK",
"TBCG_CFD.UK",
"WIZZ_CFD.UK",
"TNG_CFD.FR",
"FUTR_CFD.UK",
"FICO_CFD.US",
"DPLM_CFD.UK",
"SGE_CFD.UK",
"CRDA_CFD.UK",
"OLLI_CFD.US",
"DCC_CFD.UK",
"LAND_CFD.UK",
"BMW_CFD.DE",
"HMSO_CFD.UK",
"MNG_CFD.UK",
"MSLH_CFD.UK",
"DLTR_CFD.US",
"CRBN_CFD.NL"
]
}Outputs
{
"actions": {
"buy": [
{
"reason": "High mean reversion score (88): Significant 12.9% drop creates an oversold condition ideal for a bounce play.",
"symbol": "TRN_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Holding for potential mean reversion bounce after drawdown.",
"symbol": "ATE_CFD.FR"
},
{
"reason": "Position slightly profitable, holding for further upside.",
"symbol": "BRBY_CFD.UK"
},
{
"reason": "Price flat relative to entry, maintaining exposure.",
"symbol": "BYIT_CFD.UK"
},
{
"reason": "Positive performance, holding for continued reversion.",
"symbol": "CCL_CFD.UK"
},
{
"reason": "Recently opened position, allowing thesis to play out.",
"symbol": "ICG_CFD.UK"
},
{
"reason": "Position oversold; holding for technical bounce rather than selling at lows.",
"symbol": "MKS_CFD.UK"
},
{
"reason": "Holding through volatility targeting mean reversion.",
"symbol": "PZC_CFD.UK"
},
{
"reason": "Steady performance, maintaining position.",
"symbol": "UKW_CFD.UK"
}
],
"sell": [
{
"reason": "Taking profit: Position has gained over 8% rapidly, meeting mean reversion criteria to sell into strength.",
"symbol": "AAL_CFD.UK"
}
]
},
"portfolio_rationale": "The strategy rotates capital from a winner to a new opportunity. AAL_CFD.UK is sold to lock in rapid gains (+8.3%) as it becomes overextended. Capital is redeployed into TRN_CFD.UK, which offers a compelling mean reversion entry following a sharp 12.9% decline. Other holdings are retained to avoid overtrading and allow time for their respective reversion theses to materialize. This keeps the portfolio within the 10-position limit."
}Prompts & responses
#1153 • openrouter • google/gemini-3-pro-preview • 2026-03-12T14:33:38.063562+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": "SAFE_CFD.UK", "name": "SAFESTORE HOLDINGS PLC", "sector": "", "last_price": 802.5, "change_1d_pct": 13.187588152327212, "distance_from_ma200_pct": 21.40724384452035, "distance_from_ma50_pct": 10.29872606002229, "volatility_20d_pct": 81.07249455345375, "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": 567.5, "change_1d_pct": 3.4639927073837784, "distance_from_ma200_pct": -23.929923575376698, "distance_from_ma50_pct": -3.6875042216270137, "volatility_20d_pct": 73.84223442053181, "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": 206.0, "change_1d_pct": -12.93322062552832, "distance_from_ma200_pct": -22.557701091522887, "distance_from_ma50_pct": -12.560104316644482, "volatility_20d_pct": 131.09279103846345, "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": "WIX_CFD.UK", "name": "WICKES GROUP PLC", "sector": "", "last_price": 247.5, "change_1d_pct": 15.984816533108393, "distance_from_ma200_pct": 18.647646929530737, "distance_from_ma50_pct": 10.198455173494668, "volatility_20d_pct": 84.25206447406164, "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": "KGF_CFD.UK", "name": "KINGFISHER PLC", "sector": "", "last_price": 315.6, "change_1d_pct": -9.048991354466851, "distance_from_ma200_pct": 7.853280580001876, "distance_from_ma50_pct": -3.0101280045040535, "volatility_20d_pct": 4841.586311080337, "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": 2795.0, "change_1d_pct": 2.3809523809523725, "distance_from_ma200_pct": 6.811460460804897, "distance_from_ma50_pct": 10.895008018562113, "volatility_20d_pct": 141.33746334612064, "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": "VTY_CFD.UK", "name": "VISTRY GROUP PLC", "sector": "", "last_price": 463.9, "change_1d_pct": -32.72911832946637, "distance_from_ma200_pct": -26.66844502405723, "distance_from_ma50_pct": -28.488957332309774, "volatility_20d_pct": 205.6561667968453, "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": "DOM_CFD.UK", "name": "DOMINO'S PIZZA GROUP PLC", "sector": "", "last_price": 204.15, "change_1d_pct": 11.924342105263165, "distance_from_ma200_pct": -5.759626343727387, "distance_from_ma50_pct": 12.834440951357639, "volatility_20d_pct": 73.60557991984848, "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": 217.0, "change_1d_pct": -21.148255813953487, "distance_from_ma200_pct": -15.81606625159202, "distance_from_ma50_pct": -5.48311196636071, "volatility_20d_pct": 241.3119670937803, "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": "SGRO_CFD.UK", "name": "SEGRO PLC", "sector": "", "last_price": 838.6, "change_1d_pct": 14.312977099236646, "distance_from_ma200_pct": 23.337223471135403, "distance_from_ma50_pct": 14.881685289390623, "volatility_20d_pct": 61.79400737887707, "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": -5.564142194744981, "distance_from_ma200_pct": 0.3541219387989347, "distance_from_ma50_pct": -6.520894339541805, "volatility_20d_pct": 4817.271229246994, "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": "HSBA_CFD.UK", "name": "HSBC HOLDINGS PLC", "sector": "", "last_price": 1205.4, "change_1d_pct": -5.754495699765439, "distance_from_ma200_pct": 13.508671303503107, "distance_from_ma50_pct": -4.766870816663193, "volatility_20d_pct": 5015.147576914964, "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": 270.0, "change_1d_pct": 7.784431137724557, "distance_from_ma200_pct": -17.148878096081223, "distance_from_ma50_pct": 4.440258238208905, "volatility_20d_pct": 138.52252179896075, "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": 86.0, "change_1d_pct": 3.92749244712991, "distance_from_ma200_pct": 7.871211807633016, "distance_from_ma50_pct": 5.417994606521215, "volatility_20d_pct": 139.7485078641958, "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": "LSEG_CFD.UK", "name": "LONDON STOCK EXCHANGE GROUP", "sector": "", "last_price": 8422.0, "change_1d_pct": -4.836158192090401, "distance_from_ma200_pct": -9.453084048707193, "distance_from_ma50_pct": 0.9170776523241386, "volatility_20d_pct": 109.51804758992422, "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": "TRST_CFD.UK", "name": "TRUSTPILOT AS", "sector": "", "last_price": 156.6, "change_1d_pct": -27.567067530064747, "distance_from_ma200_pct": -26.81677017545049, "distance_from_ma50_pct": -10.671300046318578, "volatility_20d_pct": 228.54402237564213, "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": "KWS_CFD.DE", "name": "KWS SAAT AG", "sector": "", "last_price": 65.2, "change_1d_pct": 2.1943573667711602, "distance_from_ma200_pct": -0.4765904378915553, "distance_from_ma50_pct": -6.063486675566621, "volatility_20d_pct": 43.83991611415101, "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": "OSB_CFD.UK", "name": "OSB GROUP PLC", "sector": "", "last_price": 575.5, "change_1d_pct": -8.50556438791733, "distance_from_ma200_pct": 7.26309045372473, "distance_from_ma50_pct": -3.1605502163448818, "volatility_20d_pct": 83.79306172690484, "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": "GMM_CFD.DE", "name": "Grammer AG", "sector": "", "last_price": 6.95, "change_1d_pct": -9.150326797385622, "distance_from_ma200_pct": 4.306429778510168, "distance_from_ma50_pct": 3.4934627870268464, "volatility_20d_pct": 184.652948783905, "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": "BME_CFD.UK", "name": "B&M EUROPEAN VALUE RETAIL SA", "sector": "", "last_price": 180.0, "change_1d_pct": -0.5799502899751507, "distance_from_ma200_pct": -17.510144533683704, "distance_from_ma50_pct": 3.6906975618860693, "volatility_20d_pct": 107.67302074828436, "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": "TBCG_CFD.UK", "name": "TBC BANK GROUP PLC", "sector": "", "last_price": 4320.0, "change_1d_pct": 7.32919254658384, "distance_from_ma200_pct": -2.181054535330118, "distance_from_ma50_pct": 4.04542083578916, "volatility_20d_pct": 103.56899161014346, "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": 927.0, "change_1d_pct": -5.0691244239631335, "distance_from_ma200_pct": -24.217738215858287, "distance_from_ma50_pct": -27.277531220454044, "volatility_20d_pct": 8111.240262670523, "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": "TNG_CFD.FR", "name": "Transgene SA", "sector": "", "last_price": 0.778, "change_1d_pct": -4.187192118226601, "distance_from_ma200_pct": -23.223052821158063, "distance_from_ma50_pct": -12.066549120665492, "volatility_20d_pct": 86.61732111556974, "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": 423.6, "change_1d_pct": -20.82242990654205, "distance_from_ma200_pct": -37.68377383888033, "distance_from_ma50_pct": -24.301477407850992, "volatility_20d_pct": 153.59085037557008, "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": "FICO_CFD.US", "name": "FAIR ISAAC CORP", "sector": "", "last_price": 1159.52, "change_1d_pct": -20.122896330332118, "distance_from_ma200_pct": -27.205765379721957, "distance_from_ma50_pct": -20.554343660017103, "volatility_20d_pct": 102.9945402361105, "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": 5220.0, "change_1d_pct": -5.434782608695654, "distance_from_ma200_pct": 4.8180942215069855, "distance_from_ma50_pct": -4.664614313757087, "volatility_20d_pct": 82.77890721911896, "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": 825.0, "change_1d_pct": 5.07278678502745, "distance_from_ma200_pct": -26.453535550154516, "distance_from_ma50_pct": -13.245015005983463, "volatility_20d_pct": 105.66269444091493, "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": 2852.0, "change_1d_pct": 4.622157006603089, "distance_from_ma200_pct": 0.7062484713757033, "distance_from_ma50_pct": 0.43312312572669764, "volatility_20d_pct": 116.9451780511235, "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": "OLLI_CFD.US", "name": "OLLIE'S BARGAIN OUTLET HOLDI", "sector": "", "last_price": 105.35, "change_1d_pct": -2.2364513734224323, "distance_from_ma200_pct": -13.646337694869526, "distance_from_ma50_pct": -5.060496334893583, "volatility_20d_pct": 75.55467440580614, "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": "DCC_CFD.UK", "name": "DCC PLC", "sector": "", "last_price": 4722.0, "change_1d_pct": 3.871535415750116, "distance_from_ma200_pct": -1.7078152611501807, "distance_from_ma50_pct": -2.095260937900023, "volatility_20d_pct": 101.77420564801834, "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": "LAND_CFD.UK", "name": "LAND SECURITIES GROUP PLC", "sector": "", "last_price": 587.0, "change_1d_pct": -9.203402938901784, "distance_from_ma200_pct": -1.751221707657491, "distance_from_ma50_pct": -6.159306646766682, "volatility_20d_pct": 80.69294894711774, "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": "BMW_CFD.DE", "name": "BAYERISCHE MOTOREN WERKE AG", "sector": "", "last_price": 80.004, "change_1d_pct": 1.967881723171061, "distance_from_ma200_pct": -6.290991980901184, "distance_from_ma50_pct": -8.943591326491218, "volatility_20d_pct": 47.57236440643064, "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": 355.4, "change_1d_pct": 14.129736673089276, "distance_from_ma200_pct": 22.516025502913806, "distance_from_ma50_pct": 10.006914897239172, "volatility_20d_pct": 87.54938293511039, "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": "MNG_CFD.UK", "name": "M&G PLC", "sector": "", "last_price": 300.1, "change_1d_pct": -2.564935064935059, "distance_from_ma200_pct": 12.150356967747356, "distance_from_ma50_pct": -0.6814293137056837, "volatility_20d_pct": 66.02335421814031, "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": 182.32, "change_1d_pct": 0.8407079646017612, "distance_from_ma200_pct": -17.111863069088763, "distance_from_ma50_pct": 6.139091576985178, "volatility_20d_pct": 102.4204512350097, "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": "DLTR_CFD.US", "name": "Dollar Tree Inc", "sector": "", "last_price": 113.23, "change_1d_pct": -1.5562510867675128, "distance_from_ma200_pct": 2.7290377601567606, "distance_from_ma50_pct": -10.047252401546892, "volatility_20d_pct": 76.37221415674689, "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": "CRBN_CFD.NL", "name": "Corbion", "sector": "", "last_price": 21.32, "change_1d_pct": 0.0, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 10.465176526668118, "volatility_20d_pct": 1678.2965924693424, "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": "RSW_CFD.UK",
"selection_reason": "Extreme overextension: +18% 1d change and +36% above MA200, prime candidate for technical pullback.",
"mean_reversion_score": 92
},
{
"symbol": "TRN_CFD.UK",
"selection_reason": "Significant 1d drop of -12.9% creates oversold condition relative to recent volatility, targeting a bounce.",
"mean_reversion_score": 88
},
{
"symbol": "SAFE_CFD.UK",
"selection_reason": "Overbought condition with +13% 1d move and price 21% above MA200, suggesting mean reversion potential.",
"mean_reversion_score": 85
},
{
"symbol": "GMM_CFD.DE",
"selection_reason": "Sharp -9.1% pullback while remaining above long-term MA200 (+4%), offering a dip-buying opportunity.",
"mean_reversion_score": 80
},
{
"symbol": "OSB_CFD.UK",
"selection_reason": "Oversold on 1d basis (-8.5%) with price testing MA50 support zone, attractive for short-term reversal.",
"mean_reversion_score": 78
}
],
"rejected_common_reasons": [
"1d move too small for mean reversion strategy",
"Extreme binary/event-driven move (>20% drop) implies fundamental shift rather than technical noise (e.g., VTY, TRST, OCDO, FUTR)",
"Sector concentration limits (avoided multiple Real Estate/Retail picks)",
"Data quality or extreme volatility flags (WIZZ)"
]
}#1154 • openrouter • google/gemini-3-pro-preview • 2026-03-12T14:35:01.933145+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": "AAL_CFD.UK", "qty": 0.9884678747940692, "avg_price": 3035.0, "last_price": 3291.0, "unrealized_pnl": 253.0477759472817, "opened_at": "2026-03-09T10:19:46.508085+00:00"}, {"symbol": "ATE_CFD.FR", "qty": 48.115477145148354, "avg_price": 62.35, "last_price": 58.55, "unrealized_pnl": -182.83881315156395, "opened_at": "2026-02-27T18:23:55.960577+00:00"}, {"symbol": "BRBY_CFD.UK", "qty": 2.8222013170272815, "avg_price": 1063.0, "last_price": 1074.0, "unrealized_pnl": 31.044214487300096, "opened_at": "2026-03-09T10:19:46.508085+00:00"}, {"symbol": "BYIT_CFD.UK", "qty": 10.252904989747094, "avg_price": 292.6, "last_price": 292.6, "unrealized_pnl": 0.0, "opened_at": "2026-03-06T18:02:13.212382+00:00"}, {"symbol": "CABO_CFD.US", "qty": 0.0, "avg_price": 94.6, "last_price": 108.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-27T18:23:55.960577+00:00"}, {"symbol": "CCL_CFD.UK", "qty": 1.5416238437821173, "avg_price": 1945.9999999999998, "last_price": 1989.0, "unrealized_pnl": 66.2898252826314, "opened_at": "2026-03-06T18:02:13.212382+00:00"}, {"symbol": "HIK_CFD.UK", "qty": 0.0, "avg_price": 1408.0, "last_price": 1234.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-26T10:33:24.101894+00:00"}, {"symbol": "ICG_CFD.UK", "qty": 1.772002362669817, "avg_price": 1693.0, "last_price": 1693.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-09T18:18:45.954380+00:00"}, {"symbol": "LIO_CFD.UK", "qty": 0.0, "avg_price": 250.0, "last_price": 270.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-26T10:33:24.101894+00:00"}, {"symbol": "MKS_CFD.UK", "qty": 7.5452716297786715, "avg_price": 397.6, "last_price": 355.5, "unrealized_pnl": -317.65593561368223, "opened_at": "2026-03-01T10:30:13.622938+00:00"}, {"symbol": "PZC_CFD.UK", "qty": 36.67481662591687, "avg_price": 81.8, "last_price": 77.7, "unrealized_pnl": -150.36674816625896, "opened_at": "2026-03-01T10:30:13.622938+00:00"}, {"symbol": "UKW_CFD.UK", "qty": 32.48511099079589, "avg_price": 92.35, "last_price": 95.01, "unrealized_pnl": 86.41039523551741, "opened_at": "2026-02-25T17:57:28.313088+00:00"}, {"symbol": "WIZZ_CFD.UK", "qty": 0.0, "avg_price": 1299.0, "last_price": 927.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-25T17:57:28.313088+00:00"}], "candidates": [{"symbol": "RSW_CFD.UK", "mean_reversion_score": 92, "selection_reason": "Extreme overextension: +18% 1d change and +36% above MA200, prime candidate for technical pullback."}, {"symbol": "TRN_CFD.UK", "mean_reversion_score": 88, "selection_reason": "Significant 1d drop of -12.9% creates oversold condition relative to recent volatility, targeting a bounce."}, {"symbol": "SAFE_CFD.UK", "mean_reversion_score": 85, "selection_reason": "Overbought condition with +13% 1d move and price 21% above MA200, suggesting mean reversion potential."}, {"symbol": "GMM_CFD.DE", "mean_reversion_score": 80, "selection_reason": "Sharp -9.1% pullback while remaining above long-term MA200 (+4%), offering a dip-buying opportunity."}, {"symbol": "OSB_CFD.UK", "mean_reversion_score": 78, "selection_reason": "Oversold on 1d basis (-8.5%) with price testing MA50 support zone, attractive for short-term reversal."}], "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 (88): Significant 12.9% drop creates an oversold condition ideal for a bounce play.",
"symbol": "TRN_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Holding for potential mean reversion bounce after drawdown.",
"symbol": "ATE_CFD.FR"
},
{
"reason": "Position slightly profitable, holding for further upside.",
"symbol": "BRBY_CFD.UK"
},
{
"reason": "Price flat relative to entry, maintaining exposure.",
"symbol": "BYIT_CFD.UK"
},
{
"reason": "Positive performance, holding for continued reversion.",
"symbol": "CCL_CFD.UK"
},
{
"reason": "Recently opened position, allowing thesis to play out.",
"symbol": "ICG_CFD.UK"
},
{
"reason": "Position oversold; holding for technical bounce rather than selling at lows.",
"symbol": "MKS_CFD.UK"
},
{
"reason": "Holding through volatility targeting mean reversion.",
"symbol": "PZC_CFD.UK"
},
{
"reason": "Steady performance, maintaining position.",
"symbol": "UKW_CFD.UK"
}
],
"sell": [
{
"reason": "Taking profit: Position has gained over 8% rapidly, meeting mean reversion criteria to sell into strength.",
"symbol": "AAL_CFD.UK"
}
]
},
"portfolio_rationale": "The strategy rotates capital from a winner to a new opportunity. AAL_CFD.UK is sold to lock in rapid gains (+8.3%) as it becomes overextended. Capital is redeployed into TRN_CFD.UK, which offers a compelling mean reversion entry following a sharp 12.9% decline. Other holdings are retained to avoid overtrading and allow time for their respective reversion theses to materialize. This keeps the portfolio within the 10-position limit."
}Selection logs
#574 • stage1 • 2026-03-12T14:35:01.930501+00:00
{
"selected_stocks": [
{
"symbol": "RSW_CFD.UK",
"selection_reason": "Extreme overextension: +18% 1d change and +36% above MA200, prime candidate for technical pullback.",
"mean_reversion_score": 92
},
{
"symbol": "TRN_CFD.UK",
"selection_reason": "Significant 1d drop of -12.9% creates oversold condition relative to recent volatility, targeting a bounce.",
"mean_reversion_score": 88
},
{
"symbol": "SAFE_CFD.UK",
"selection_reason": "Overbought condition with +13% 1d move and price 21% above MA200, suggesting mean reversion potential.",
"mean_reversion_score": 85
},
{
"symbol": "GMM_CFD.DE",
"selection_reason": "Sharp -9.1% pullback while remaining above long-term MA200 (+4%), offering a dip-buying opportunity.",
"mean_reversion_score": 80
},
{
"symbol": "OSB_CFD.UK",
"selection_reason": "Oversold on 1d basis (-8.5%) with price testing MA50 support zone, attractive for short-term reversal.",
"mean_reversion_score": 78
}
],
"rejected_common_reasons": [
"1d move too small for mean reversion strategy",
"Extreme binary/event-driven move (>20% drop) implies fundamental shift rather than technical noise (e.g., VTY, TRST, OCDO, FUTR)",
"Sector concentration limits (avoided multiple Real Estate/Retail picks)",
"Data quality or extreme volatility flags (WIZZ)"
]
}