Arena run #524
meanrev-v1 • google • google/gemini-3-pro-preview • EU • success
Run status
as_of: 2026-03-09T10:19:46.508085+00:00
started_at: 2026-03-09T13:31:52.692154+00:00
finished_at: 2026-03-09T13:33:05.098390+00:00
duration_ms: 72405
Inputs
{
"as_of": "2026-03-09T10:19:46.508085+00:00",
"dry_run": false,
"selected": [
{
"symbol": "BRBY_CFD.UK",
"selection_reason": "Sharp 11.2% daily drop leading to -12.9% deviation from 50-day MA, signaling oversold conditions.",
"mean_reversion_score": 85
},
{
"symbol": "AAL_CFD.UK",
"selection_reason": "11.3% single-day decline pushing price 11.4% below 50-day MA, potential for mean reversion bounce.",
"mean_reversion_score": 82
},
{
"symbol": "SGRO_CFD.UK",
"selection_reason": "14.3% daily surge creating a 14.8% premium to 50-day MA, indicating overbought status.",
"mean_reversion_score": 78
},
{
"symbol": "WIX_CFD.UK",
"selection_reason": "15.9% daily spike leading to a 10.1% deviation above 50-day MA, vulnerable to pullback.",
"mean_reversion_score": 75
},
{
"symbol": "PRU_CFD.UK",
"selection_reason": "7.1% drop resulting in a 7.3% discount to 50-day MA, offering a moderate mean reversion setup.",
"mean_reversion_score": 70
}
],
"simulate_only": false,
"strict_replay": false,
"universe_symbols": [
"MCG_CFD.UK",
"TRN_CFD.UK",
"WIX_CFD.UK",
"WIZZ_CFD.UK",
"CBG_CFD.UK",
"DOM_CFD.UK",
"DLN_CFD.UK",
"MDM_CFD.FR",
"STAN_CFD.UK",
"SMIN_CFD.UK",
"SGRO_CFD.UK",
"RHIM_CFD.UK",
"AAL_CFD.UK",
"BRBY_CFD.UK",
"AALB_CFD.NL",
"CFEB_CFD.BE",
"LIO_CFD.UK",
"CCL_CFD.UK",
"GLO_CFD.FR",
"BARC_CFD.UK",
"BBY_CFD.UK",
"BAMNB_CFD.NL",
"AAF_CFD.UK",
"LAND_CFD.UK",
"AML_CFD.UK",
"ERA_CFD.FR",
"BEKB_CFD.BE",
"MTU_CFD.FR",
"MRN_CFD.FR",
"PRU_CFD.UK",
"WEIR_CFD.UK",
"CIEN_CFD.US",
"DGE_CFD.UK",
"BIG_CFD.FR",
"SSE_CFD.UK",
"SAVE_CFD.FR",
"SHOP_CFD.US",
"WHA_CFD.NL",
"DPLM_CFD.UK",
"ATG_CFD.UK",
"SVXY_CFD.ETF",
"ARG_CFD.FR",
"AAP_CFD.US",
"BCP_CFD.PT",
"ELIOR_CFD.FR",
"ODET_CFD.FR",
"CMBT_CFD.BE",
"SLIGR_CFD.NL"
]
}Outputs
{
"actions": {
"buy": [
{
"reason": "High mean reversion score (85), oversold conditions with -12.9% deviation from 50-day MA.",
"symbol": "BRBY_CFD.UK",
"position_size": 3000
},
{
"reason": "High mean reversion score (82), oversold conditions with 11.4% deviation below 50-day MA.",
"symbol": "AAL_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Maintaining position as mean reversion thesis is still playing out.",
"symbol": "ATE_CFD.FR"
},
{
"reason": "Price unchanged, holding position.",
"symbol": "BYIT_CFD.UK"
},
{
"reason": "Holding for potential mean reversion bounce.",
"symbol": "CCL_CFD.UK"
},
{
"reason": "Holding for potential mean reversion bounce.",
"symbol": "MKS_CFD.UK"
},
{
"reason": "Holding for potential mean reversion bounce.",
"symbol": "PZC_CFD.UK"
},
{
"reason": "Position is in profit, holding to capture further upside.",
"symbol": "UKW_CFD.UK"
}
],
"sell": []
},
"portfolio_rationale": "Holding current active positions to avoid overtrading and allow mean reversion to materialize. Adding BRBY_CFD.UK and AAL_CFD.UK as they present strong oversold signals with high mean reversion scores, keeping within the maximum of 2 buys per run and maximum 10 positions."
}Prompts & responses
#1033 • openrouter • google/gemini-3-pro-preview • 2026-03-09T13:31:52.735666+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": "MCG_CFD.UK", "name": "MOBICO GROUP PLC", "sector": "", "last_price": 30.54, "change_1d_pct": 21.867517956903427, "distance_from_ma200_pct": 10.17176911546931, "distance_from_ma50_pct": 28.667486813057195, "volatility_20d_pct": 211.42235702559637, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "TRN_CFD.UK", "name": "TRAINLINE PLC", "sector": "", "last_price": 184.5, "change_1d_pct": -10.436893203883491, "distance_from_ma200_pct": -30.640271123232875, "distance_from_ma50_pct": -21.68611284670343, "volatility_20d_pct": 4790.53876131341, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "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": "WIZZ_CFD.UK", "name": "WIZZ AIR HOLDINGS PLC", "sector": "", "last_price": 927.0, "change_1d_pct": -35.84775086505191, "distance_from_ma200_pct": -24.62689704221145, "distance_from_ma50_pct": -27.882954735701524, "volatility_20d_pct": 155.34645385957995, "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": 497.8, "change_1d_pct": -5.89792060491493, "distance_from_ma200_pct": 15.793508864321094, "distance_from_ma50_pct": 3.592137485786795, "volatility_20d_pct": 116.76618625853061, "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": "DLN_CFD.UK", "name": "DERWENT LONDON PLC", "sector": "", "last_price": 1812.0, "change_1d_pct": -7.219662058371734, "distance_from_ma200_pct": -2.516182676819012, "distance_from_ma50_pct": 4.053563926444004, "volatility_20d_pct": 7353.720365167649, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "MDM_CFD.FR", "name": "Maisons Du Monde", "sector": "", "last_price": 1.27, "change_1d_pct": -8.36940836940837, "distance_from_ma200_pct": -36.15315199823039, "distance_from_ma50_pct": -20.637896341844453, "volatility_20d_pct": 87.34671623562612, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "STAN_CFD.UK", "name": "STANDARD CHARTERED PLC", "sector": "", "last_price": 1842.0, "change_1d_pct": 0.3541269408880332, "distance_from_ma200_pct": 31.43986196388351, "distance_from_ma50_pct": 4.292113036344269, "volatility_20d_pct": 75.84142956557304, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "SMIN_CFD.UK", "name": "SMITHS GROUP PLC", "sector": "", "last_price": 2546.0, "change_1d_pct": 1.5880616072141196, "distance_from_ma200_pct": 15.133719154897696, "distance_from_ma50_pct": 4.317618549229563, "volatility_20d_pct": 72.74895841967528, "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": "RHIM_CFD.UK", "name": "RHI MAGNESITA NV", "sector": "", "last_price": 2960.0, "change_1d_pct": 9.023941068139973, "distance_from_ma200_pct": 12.939755835694466, "distance_from_ma50_pct": 17.95826987098712, "volatility_20d_pct": 137.0123103901981, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "AAL_CFD.UK", "name": "ANGLO AMERICAN PLC", "sector": "", "last_price": 3016.0, "change_1d_pct": -11.346266901822455, "distance_from_ma200_pct": 10.42506326741024, "distance_from_ma50_pct": -11.47634619205935, "volatility_20d_pct": 91.79381510156583, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BRBY_CFD.UK", "name": "BURBERRY GROUP PLC", "sector": "", "last_price": 1051.57, "change_1d_pct": -11.202965615078032, "distance_from_ma200_pct": -11.939302038764655, "distance_from_ma50_pct": -12.947860274183986, "volatility_20d_pct": 127.47353020558727, "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": "AALB_CFD.NL", "name": "Aalberts", "sector": "", "last_price": 32.04, "change_1d_pct": -4.529201430274144, "distance_from_ma200_pct": 3.6363283499052157, "distance_from_ma50_pct": 1.556244853247435, "volatility_20d_pct": 71.15751217185847, "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.3, "change_1d_pct": -7.186858316221767, "distance_from_ma200_pct": 29.7735566280696, "distance_from_ma50_pct": 15.534598011169031, "volatility_20d_pct": 136.83766929182127, "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": "CCL_CFD.UK", "name": "CARNIVAL PLC", "sector": "", "last_price": 1946.0, "change_1d_pct": -5.990338164251208, "distance_from_ma200_pct": 3.0409496965573712, "distance_from_ma50_pct": -6.311188398763845, "volatility_20d_pct": 156.5318659045592, "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": "GLO_CFD.FR", "name": "GL Events", "sector": "", "last_price": 30.9, "change_1d_pct": -1.2779552715655007, "distance_from_ma200_pct": 4.055732115421029, "distance_from_ma50_pct": -2.910974076287476, "volatility_20d_pct": 73.56081040135827, "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": "BARC_CFD.UK", "name": "BARCLAYS PLC", "sector": "", "last_price": 417.0, "change_1d_pct": -3.1583836507199314, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -11.088466885897342, "volatility_20d_pct": 3907.6753760892493, "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": "BAMNB_CFD.NL", "name": "Royal BAM Group NV", "sector": "", "last_price": 8.835, "change_1d_pct": -3.7581699346405095, "distance_from_ma200_pct": 22.775433518179746, "distance_from_ma50_pct": -0.03982567217133415, "volatility_20d_pct": 84.60174657339485, "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": "AAF_CFD.UK", "name": "AIRTEL AFRICA PLC", "sector": "", "last_price": 327.0, "change_1d_pct": -4.664723032069973, "distance_from_ma200_pct": 24.82519224320223, "distance_from_ma50_pct": -6.312315203190533, "volatility_20d_pct": 93.75503285760438, "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": 611.5, "change_1d_pct": -5.559845559845556, "distance_from_ma200_pct": 2.451497634819644, "distance_from_ma50_pct": -2.727851457873287, "volatility_20d_pct": 76.33674409886991, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "AML_CFD.UK", "name": "ASTON MARTIN LAGONDA GLOBAL", "sector": "", "last_price": 43.56, "change_1d_pct": -13.998025666337599, "distance_from_ma200_pct": -36.966946717100825, "distance_from_ma50_pct": -25.91080722522706, "volatility_20d_pct": 126.2717296514231, "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": "ERA_CFD.FR", "name": "Eramet", "sector": "", "last_price": 55.55, "change_1d_pct": -2.8846153846153966, "distance_from_ma200_pct": -0.3105894919285701, "distance_from_ma50_pct": -16.346232327670997, "volatility_20d_pct": 170.11489606781797, "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": "BEKB_CFD.BE", "name": "Bekaert", "sector": "", "last_price": 38.9, "change_1d_pct": -6.687775858760325, "distance_from_ma200_pct": 2.533959431872246, "distance_from_ma50_pct": -5.804295711552898, "volatility_20d_pct": 54.153003583750895, "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": "MTU_CFD.FR", "name": "Manitou BF", "sector": "", "last_price": 20.05, "change_1d_pct": -6.088992974238883, "distance_from_ma200_pct": 1.8018159819204183, "distance_from_ma50_pct": -3.1699408588077627, "volatility_20d_pct": 73.08216454601505, "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": 24.607, "change_1d_pct": -4.624031007751938, "distance_from_ma200_pct": 4.266551525862816, "distance_from_ma50_pct": -3.996810167513032, "volatility_20d_pct": 57.40920257711812, "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": "PRU_CFD.UK", "name": "PRUDENTIAL PLC", "sector": "", "last_price": 1065.5, "change_1d_pct": -7.186411149825789, "distance_from_ma200_pct": 3.4232212649790705, "distance_from_ma50_pct": -7.391263610789867, "volatility_20d_pct": 71.530611412442, "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": "WEIR_CFD.UK", "name": "WEIR GROUP PLC/THE", "sector": "", "last_price": 3016.0, "change_1d_pct": -1.6949152542372836, "distance_from_ma200_pct": 15.684186619919394, "distance_from_ma50_pct": -0.307598656638286, "volatility_20d_pct": 124.47422864424635, "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": "CIEN_CFD.US", "name": "Ciena Corp", "sector": "", "last_price": 303.37, "change_1d_pct": -9.24673926050017, "distance_from_ma200_pct": 81.85731002004589, "distance_from_ma50_pct": 10.880199530996881, "volatility_20d_pct": 165.28670948773296, "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": "DGE_CFD.UK", "name": "DIAGEO PLC", "sector": "", "last_price": 1503.0, "change_1d_pct": -4.297994269340977, "distance_from_ma200_pct": -17.13860814362641, "distance_from_ma50_pct": -10.546906571570624, "volatility_20d_pct": 79.15893255350483, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BIG_CFD.FR", "name": "Bigben Interactive", "sector": "", "last_price": 0.311, "change_1d_pct": -31.34657836644592, "distance_from_ma200_pct": -71.72740123908528, "distance_from_ma50_pct": -61.93949481104367, "volatility_20d_pct": 294.7389443112979, "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": "SSE_CFD.UK", "name": "", "sector": "", "last_price": 2665.0, "change_1d_pct": 5.045329128892395, "distance_from_ma200_pct": 32.81821793486013, "distance_from_ma50_pct": 9.679068755976772, "volatility_20d_pct": 67.85485731094869, "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": "SAVE_CFD.FR", "name": "", "sector": "", "last_price": 59.6, "change_1d_pct": -1.9736842105263053, "distance_from_ma200_pct": -3.788652727159869, "distance_from_ma50_pct": -0.9944739633739319, "volatility_20d_pct": 59.91371274305013, "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": "SHOP_CFD.US", "name": "SHOPIFY INC - CLASS A", "sector": "", "last_price": 134.49, "change_1d_pct": 14.703624733475484, "distance_from_ma200_pct": -3.6860547805704913, "distance_from_ma50_pct": -3.1780130794992867, "volatility_20d_pct": 158.063076280182, "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": "WHA_CFD.NL", "name": "", "sector": "", "last_price": 20.6, "change_1d_pct": -4.629629629629628, "distance_from_ma200_pct": 15.254136770293748, "distance_from_ma50_pct": 0.799743205314396, "volatility_20d_pct": 54.899431440206634, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "DPLM_CFD.UK", "name": "DIPLOMA PLC", "sector": "", "last_price": 5510.0, "change_1d_pct": 0.7312614259597838, "distance_from_ma200_pct": 11.035071455048428, "distance_from_ma50_pct": 0.39717925834363843, "volatility_20d_pct": 72.46279741195445, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "ATG_CFD.UK", "name": "AUCTION TECHNOLOGY GROUP", "sector": "", "last_price": 313.0, "change_1d_pct": 0.3205128205128194, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 0.8343803356850588, "volatility_20d_pct": 2871.9337920464413, "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": "SVXY_CFD.ETF", "name": "PROSHARES SHORT VIX ST FUTUR", "sector": "", "last_price": 48.15, "change_1d_pct": -3.815421494206961, "distance_from_ma200_pct": -1.3709741843902057, "distance_from_ma50_pct": -10.793686082703434, "volatility_20d_pct": 79.78689636404471, "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": "ARG_CFD.FR", "name": "ARGAN", "sector": "", "last_price": 65.9, "change_1d_pct": -1.6417910447761086, "distance_from_ma200_pct": 0.7025108008791303, "distance_from_ma50_pct": -1.2830507042607797, "volatility_20d_pct": 45.69256218887273, "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": "AAP_CFD.US", "name": "Advance Auto Parts Inc", "sector": "", "last_price": 51.76, "change_1d_pct": 0.7984420642648482, "distance_from_ma200_pct": -1.6922755503219422, "distance_from_ma50_pct": 6.908574166790582, "volatility_20d_pct": 102.27640546670942, "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": "BCP_CFD.PT", "name": "Banco Comercial Portugues SA", "sector": "", "last_price": 0.791, "change_1d_pct": -6.721698113207541, "distance_from_ma200_pct": 1.260313254091705, "distance_from_ma50_pct": -11.209393170644088, "volatility_20d_pct": 62.534267192414575, "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": "ELIOR_CFD.FR", "name": "Elior Group SCA", "sector": "", "last_price": 2.534, "change_1d_pct": -2.837423312883447, "distance_from_ma200_pct": -5.872039463908962, "distance_from_ma50_pct": -8.662961280881243, "volatility_20d_pct": 54.486651821590684, "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": "ODET_CFD.FR", "name": "Compagnie de L'Odet SA", "sector": "", "last_price": 1186.0, "change_1d_pct": -6.022187004754354, "distance_from_ma200_pct": -14.242558314843423, "distance_from_ma50_pct": -9.507464695664991, "volatility_20d_pct": 48.67270304500695, "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": "CMBT_CFD.BE", "name": "Euronav", "sector": "", "last_price": 11.34, "change_1d_pct": -7.804878048780495, "distance_from_ma200_pct": 30.107418933841966, "distance_from_ma50_pct": 8.273054331304074, "volatility_20d_pct": 77.43631274293911, "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": "SLIGR_CFD.NL", "name": "", "sector": "", "last_price": 13.2, "change_1d_pct": -3.9301310043668214, "distance_from_ma200_pct": 9.460859657495323, "distance_from_ma50_pct": 8.646804055488877, "volatility_20d_pct": 75.72544992772063, "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": "BRBY_CFD.UK",
"selection_reason": "Sharp 11.2% daily drop leading to -12.9% deviation from 50-day MA, signaling oversold conditions.",
"mean_reversion_score": 85
},
{
"symbol": "AAL_CFD.UK",
"selection_reason": "11.3% single-day decline pushing price 11.4% below 50-day MA, potential for mean reversion bounce.",
"mean_reversion_score": 82
},
{
"symbol": "SGRO_CFD.UK",
"selection_reason": "14.3% daily surge creating a 14.8% premium to 50-day MA, indicating overbought status.",
"mean_reversion_score": 78
},
{
"symbol": "WIX_CFD.UK",
"selection_reason": "15.9% daily spike leading to a 10.1% deviation above 50-day MA, vulnerable to pullback.",
"mean_reversion_score": 75
},
{
"symbol": "PRU_CFD.UK",
"selection_reason": "7.1% drop resulting in a 7.3% discount to 50-day MA, offering a moderate mean reversion setup.",
"mean_reversion_score": 70
}
],
"rejected_common_reasons": [
"Extreme >30% moves likely driven by binary events (e.g., WIZZ_CFD.UK, BIG_CFD.FR)",
"Abnormally high volatility data points suggesting data artifacts (e.g., TRN_CFD.UK, DLN_CFD.UK)",
"Insufficient daily price change to justify short-term mean reversion"
]
}#1034 • openrouter • google/gemini-3-pro-preview • 2026-03-09T13:32:34.325386+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": "ATE_CFD.FR", "qty": 48.115477145148354, "avg_price": 62.35, "last_price": 58.8, "unrealized_pnl": -170.80994386527686, "opened_at": "2026-02-27T18:23:55.960577+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": 1858.65, "unrealized_pnl": -134.66084275436745, "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": "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": 379.4, "unrealized_pnl": -137.32394366197215, "opened_at": "2026-03-01T10:30:13.622938+00:00"}, {"symbol": "PZC_CFD.UK", "qty": 36.67481662591687, "avg_price": 81.8, "last_price": 78.6, "unrealized_pnl": -117.35941320293408, "opened_at": "2026-03-01T10:30:13.622938+00:00"}, {"symbol": "UKW_CFD.UK", "qty": 32.48511099079589, "avg_price": 92.35, "last_price": 94.79, "unrealized_pnl": 79.26367081754236, "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": "BRBY_CFD.UK", "mean_reversion_score": 85, "selection_reason": "Sharp 11.2% daily drop leading to -12.9% deviation from 50-day MA, signaling oversold conditions."}, {"symbol": "AAL_CFD.UK", "mean_reversion_score": 82, "selection_reason": "11.3% single-day decline pushing price 11.4% below 50-day MA, potential for mean reversion bounce."}, {"symbol": "SGRO_CFD.UK", "mean_reversion_score": 78, "selection_reason": "14.3% daily surge creating a 14.8% premium to 50-day MA, indicating overbought status."}, {"symbol": "WIX_CFD.UK", "mean_reversion_score": 75, "selection_reason": "15.9% daily spike leading to a 10.1% deviation above 50-day MA, vulnerable to pullback."}, {"symbol": "PRU_CFD.UK", "mean_reversion_score": 70, "selection_reason": "7.1% drop resulting in a 7.3% discount to 50-day MA, offering a moderate mean reversion setup."}], "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 (85), oversold conditions with -12.9% deviation from 50-day MA.",
"symbol": "BRBY_CFD.UK",
"position_size": 3000
},
{
"reason": "High mean reversion score (82), oversold conditions with 11.4% deviation below 50-day MA.",
"symbol": "AAL_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Maintaining position as mean reversion thesis is still playing out.",
"symbol": "ATE_CFD.FR"
},
{
"reason": "Price unchanged, holding position.",
"symbol": "BYIT_CFD.UK"
},
{
"reason": "Holding for potential mean reversion bounce.",
"symbol": "CCL_CFD.UK"
},
{
"reason": "Holding for potential mean reversion bounce.",
"symbol": "MKS_CFD.UK"
},
{
"reason": "Holding for potential mean reversion bounce.",
"symbol": "PZC_CFD.UK"
},
{
"reason": "Position is in profit, holding to capture further upside.",
"symbol": "UKW_CFD.UK"
}
],
"sell": []
},
"portfolio_rationale": "Holding current active positions to avoid overtrading and allow mean reversion to materialize. Adding BRBY_CFD.UK and AAL_CFD.UK as they present strong oversold signals with high mean reversion scores, keeping within the maximum of 2 buys per run and maximum 10 positions."
}Selection logs
#514 • stage1 • 2026-03-09T13:32:34.323406+00:00
{
"selected_stocks": [
{
"symbol": "BRBY_CFD.UK",
"selection_reason": "Sharp 11.2% daily drop leading to -12.9% deviation from 50-day MA, signaling oversold conditions.",
"mean_reversion_score": 85
},
{
"symbol": "AAL_CFD.UK",
"selection_reason": "11.3% single-day decline pushing price 11.4% below 50-day MA, potential for mean reversion bounce.",
"mean_reversion_score": 82
},
{
"symbol": "SGRO_CFD.UK",
"selection_reason": "14.3% daily surge creating a 14.8% premium to 50-day MA, indicating overbought status.",
"mean_reversion_score": 78
},
{
"symbol": "WIX_CFD.UK",
"selection_reason": "15.9% daily spike leading to a 10.1% deviation above 50-day MA, vulnerable to pullback.",
"mean_reversion_score": 75
},
{
"symbol": "PRU_CFD.UK",
"selection_reason": "7.1% drop resulting in a 7.3% discount to 50-day MA, offering a moderate mean reversion setup.",
"mean_reversion_score": 70
}
],
"rejected_common_reasons": [
"Extreme >30% moves likely driven by binary events (e.g., WIZZ_CFD.UK, BIG_CFD.FR)",
"Abnormally high volatility data points suggesting data artifacts (e.g., TRN_CFD.UK, DLN_CFD.UK)",
"Insufficient daily price change to justify short-term mean reversion"
]
}