Arena run #1126
meanrev-v1 • openai • openai/gpt-5.2-pro • EU • success
Run status
as_of: 2026-04-08T10:08:21.944296+00:00
started_at: 2026-04-08T11:51:59.860226+00:00
finished_at: 2026-04-08T11:54:43.761147+00:00
duration_ms: 163899
Inputs
{
"as_of": "2026-04-08T10:08:21.944296+00:00",
"dry_run": false,
"selected": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "Large 1D selloff (-36.8%) with deep oversold vs MA200 (-40.6%) and MA50 (-31.7%); high 20D vol suggests capitulation/mean-reversion setup.",
"mean_reversion_score": 92
},
{
"symbol": "OCDO_CFD.UK",
"selection_reason": "Sharp 1D drop (-27.7%) and materially below MA200 (-25.4%) and MA50 (-16.5%); elevated 20D vol supports short-horizon rebound potential.",
"mean_reversion_score": 89
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Big 1D decline (-26.6%) with price stretched below MA50 (-22.1%) and below MA200 (-13.4%); volatility elevated for potential snap-back.",
"mean_reversion_score": 86
},
{
"symbol": "CRST_CFD.UK",
"selection_reason": "Down day (-12.8%) while significantly below MA200 (-28.2%) and MA50 (-15.8%); high 20D vol indicates dislocation conducive to mean reversion.",
"mean_reversion_score": 82
},
{
"symbol": "ESNT_CFD.UK",
"selection_reason": "Meaningful 1D drop (-10.6%) with concurrent weakness vs MA200 (-10.7%) and MA50 (-8.5%); volatility elevated, fitting 2–10 day bounce profile.",
"mean_reversion_score": 74
}
],
"simulate_only": false,
"strict_replay": false,
"universe_symbols": [
"HAS_CFD.UK",
"RS1_CFD.UK",
"JUP_CFD.UK",
"BOY_CFD.UK",
"THG_CFD.UK",
"CRST_CFD.UK",
"PAGE_CFD.UK",
"FGP_CFD.UK",
"JDW_CFD.UK",
"SHC_CFD.UK",
"PAG_CFD.UK",
"SAFE_CFD.UK",
"RHIM_CFD.UK",
"HBR_CFD.UK",
"PNN_CFD.UK",
"CBG_CFD.UK",
"RSW_CFD.UK",
"DLN_CFD.UK",
"TPK_CFD.UK",
"DOM_CFD.UK",
"MAB_CFD.UK",
"CNA_CFD.UK",
"HUBS_CFD.US",
"OCDO_CFD.UK",
"ESNT_CFD.UK",
"IPO_CFD.UK",
"VXXB_CFD.ETF",
"GROW_CFD.UK",
"SMG_CFD.US",
"BME_CFD.UK",
"IWG_CFD.UK",
"COTY_CFD.US",
"ATG_CFD.UK",
"CABO_CFD.US"
]
}Outputs
{
"actions": {
"buy": [
{
"reason": "Initiate per mean-reversion list (score 89): sharp 1D drop with material distance below MA200/MA50 and elevated volatility consistent with a 2–10 day snap-back profile. Funded by trimming one existing winner to keep positions at the 10 max and gross leverage near the 3.0 cap.",
"symbol": "OCDO_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Maintain position; no new mean-reversion candidate signal provided for replacement and unrealized drawdown is modest relative to fixed position sizing—avoid unnecessary churn.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Maintain position; currently profitable and no higher-conviction replacement signal provided for this name—avoid overtrading.",
"symbol": "CLX_CFD.US"
},
{
"reason": "Maintain position; currently profitable and sized near the strategy’s fixed notional—no clear improvement from rotating out beyond the one planned swap.",
"symbol": "COTY_CFD.US"
},
{
"reason": "Hold; it is itself a high mean-reversion candidate (score 82) and already in the portfolio—stay positioned for the potential snap-back.",
"symbol": "CRST_CFD.UK"
},
{
"reason": "Maintain position; unrealized loss is moderate and there is no provided stronger replacement signal specific to this holding—avoid churn.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Maintain position; neutral P&L and no new information suggesting a superior swap—avoid overtrading.",
"symbol": "HAS_CFD.UK"
},
{
"reason": "Maintain position; neutral P&L and keeping exposure stable helps respect the max gross leverage constraint.",
"symbol": "ICG_CFD.UK"
},
{
"reason": "Hold; it is the top mean-reversion candidate (score 92) and already held. Do not add due to max gross leverage/position sizing discipline.",
"symbol": "PAGE_CFD.UK"
},
{
"reason": "Maintain position; small unrealized loss and no explicit higher-conviction replacement signal—avoid unnecessary selling.",
"symbol": "ULTA_CFD.US"
}
],
"sell": [
{
"reason": "Rotate out of an existing mean-reversion holding with meaningful unrealized gains (+141.45) to free one slot/notional for a higher-scoring current oversold candidate, while keeping gross leverage near the 3.0 cap and avoiding adding leverage.",
"symbol": "FUTR_CFD.UK"
}
]
},
"portfolio_rationale": "Portfolio is already at the max 10 active positions and approximately at the max gross leverage (fixed ~3,000 notional per leg). To follow the mean-reversion playbook without increasing leverage, execute a single rotation: sell one profitable existing holding (FUTR_CFD.UK) and redeploy the fixed position size into a higher-scoring current oversold setup (OCDO_CFD.UK). All other positions are held to avoid overtrading given no clearly superior replacement signals were provided for them."
}Prompts & responses
#2177 • openrouter • openai/gpt-5.2-pro • 2026-04-08T11:51:59.897126+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": "HAS_CFD.UK", "name": "HAYS PLC", "sector": "", "last_price": 47.66, "change_1d_pct": -17.213826645822483, "distance_from_ma200_pct": -26.546854506980832, "distance_from_ma50_pct": -12.888674431016456, "volatility_20d_pct": 117.95597135078918, "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": "RS1_CFD.UK", "name": "RS GROUP PLC", "sector": "", "last_price": 725.5, "change_1d_pct": 23.91118701964132, "distance_from_ma200_pct": 26.42587431420933, "distance_from_ma50_pct": 23.74236481466445, "volatility_20d_pct": 102.67597620645313, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "JUP_CFD.UK", "name": "JUPITER FUND MANAGEMENT", "sector": "", "last_price": 193.6, "change_1d_pct": 22.06809583858764, "distance_from_ma200_pct": 57.65825374753912, "distance_from_ma50_pct": 19.274691586205538, "volatility_20d_pct": 96.15961444303547, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BOY_CFD.UK", "name": "BODYCOTE PLC", "sector": "", "last_price": 775.4, "change_1d_pct": 24.163330664531625, "distance_from_ma200_pct": 28.652243313347768, "distance_from_ma50_pct": 18.63612217470385, "volatility_20d_pct": 103.46484337510964, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "THG_CFD.UK", "name": "THG PLC", "sector": "", "last_price": 34.98, "change_1d_pct": -21.463852716659193, "distance_from_ma200_pct": 2.6990050116409536, "distance_from_ma50_pct": -18.650784422253118, "volatility_20d_pct": 150.5308117928466, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "CRST_CFD.UK", "name": "CREST NICHOLSON HOLDINGS", "sector": "", "last_price": 118.83, "change_1d_pct": -12.817314746881891, "distance_from_ma200_pct": -28.150055914529826, "distance_from_ma50_pct": -15.848139991077058, "volatility_20d_pct": 236.5351415372937, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "PAGE_CFD.UK", "name": "PAGEGROUP PLC", "sector": "", "last_price": 152.7, "change_1d_pct": -36.79635761589404, "distance_from_ma200_pct": -40.61156091058385, "distance_from_ma50_pct": -31.72721647345812, "volatility_20d_pct": 193.22753953431183, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "FGP_CFD.UK", "name": "FIRSTGROUP PLC", "sector": "", "last_price": 193.2, "change_1d_pct": 1.3109596224436304, "distance_from_ma200_pct": -4.044842646206826, "distance_from_ma50_pct": 1.7250076083144883, "volatility_20d_pct": 88.3516119820011, "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": 664.5, "change_1d_pct": -2.9927007299270114, "distance_from_ma200_pct": -5.6847404935860375, "distance_from_ma50_pct": -6.433911223030586, "volatility_20d_pct": 119.51576459001842, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "SHC_CFD.UK", "name": "SHAFTESBURY CAPITAL PLC", "sector": "", "last_price": 140.4, "change_1d_pct": -2.9045643153526868, "distance_from_ma200_pct": 0.26963533347688085, "distance_from_ma50_pct": -0.771073778544229, "volatility_20d_pct": 63.75522821252001, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "PAG_CFD.UK", "name": "PARAGON BANKING GROUP PLC", "sector": "", "last_price": 852.5, "change_1d_pct": -3.399433427762044, "distance_from_ma200_pct": -1.3404962254783492, "distance_from_ma50_pct": 0.699141440891915, "volatility_20d_pct": 71.52779356208148, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "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": "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": "HBR_CFD.UK", "name": "HARBOUR ENERGY PLC", "sector": "", "last_price": 293.4, "change_1d_pct": -2.3172193367958616, "distance_from_ma200_pct": 32.20661812632039, "distance_from_ma50_pct": 13.726219824177853, "volatility_20d_pct": 156.34190016756523, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "PNN_CFD.UK", "name": "PENNON GROUP PLC", "sector": "", "last_price": 599.27, "change_1d_pct": 16.58722592945663, "distance_from_ma200_pct": 23.75684537859759, "distance_from_ma50_pct": 16.983140154106113, "volatility_20d_pct": 84.07433118596934, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "CBG_CFD.UK", "name": "CLOSE BROTHERS GROUP PLC", "sector": "", "last_price": 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": "TPK_CFD.UK", "name": "TRAVIS PERKINS PLC", "sector": "", "last_price": 601.57, "change_1d_pct": -1.21029986533977, "distance_from_ma200_pct": 0.5267641208837714, "distance_from_ma50_pct": -4.983077425595306, "volatility_20d_pct": 108.19399806448348, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "DOM_CFD.UK", "name": "DOMINO'S PIZZA GROUP PLC", "sector": "", "last_price": 183.13, "change_1d_pct": -0.3102885138813294, "distance_from_ma200_pct": -15.070952368916624, "distance_from_ma50_pct": 1.0777282376278619, "volatility_20d_pct": 87.92203351330001, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "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": "CNA_CFD.UK", "name": "CENTRICA PLC", "sector": "", "last_price": 219.4, "change_1d_pct": 8.452792881858628, "distance_from_ma200_pct": 26.974463027947415, "distance_from_ma50_pct": 12.919213868167589, "volatility_20d_pct": 108.05347024816936, "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": "HUBS_CFD.US", "name": "HubSpot Inc", "sector": "", "last_price": 209.29, "change_1d_pct": -9.76934684199181, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -39.141166091198976, "volatility_20d_pct": 7372.220885228378, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "OCDO_CFD.UK", "name": "OCADO GROUP PLC", "sector": "", "last_price": 191.8, "change_1d_pct": -27.731725697061027, "distance_from_ma200_pct": -25.425914067168765, "distance_from_ma50_pct": -16.54505218327368, "volatility_20d_pct": 249.00720326714767, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "ESNT_CFD.UK", "name": "ESSENTRA PLC", "sector": "", "last_price": 90.1, "change_1d_pct": -10.61507936507937, "distance_from_ma200_pct": -10.657490467074904, "distance_from_ma50_pct": -8.545188421272742, "volatility_20d_pct": 126.22890829663649, "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": "VXXB_CFD.ETF", "name": "IPATH SERIES B S&P 500 VIX", "sector": "", "last_price": 36.18, "change_1d_pct": 5.4810495626822275, "distance_from_ma200_pct": 4.488258788941213, "distance_from_ma50_pct": 16.413761149079107, "volatility_20d_pct": 169.75949201361448, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "GROW_CFD.UK", "name": "MOLTEN VENTURES PLC", "sector": "", "last_price": 465.0, "change_1d_pct": 1.572739187418093, "distance_from_ma200_pct": 22.569628774815076, "distance_from_ma50_pct": -4.275686024250158, "volatility_20d_pct": 115.72658030340939, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "SMG_CFD.US", "name": "", "sector": "", "last_price": 63.15, "change_1d_pct": 4.001976284584985, "distance_from_ma200_pct": 2.9045480877108565, "distance_from_ma50_pct": -3.3721069012054516, "volatility_20d_pct": 87.1544710211987, "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": 183.5, "change_1d_pct": -5.534105534105538, "distance_from_ma200_pct": -13.158231617644445, "distance_from_ma50_pct": 5.595587888329945, "volatility_20d_pct": 140.16230415606387, "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": 172.2, "change_1d_pct": -2.7118644067796627, "distance_from_ma200_pct": -19.879269877746097, "distance_from_ma50_pct": -24.25375432175879, "volatility_20d_pct": 8127.791425139084, "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": "COTY_CFD.US", "name": "Coty Inc", "sector": "", "last_price": 2.65, "change_1d_pct": -0.7490636704119868, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -12.425644415069403, "volatility_20d_pct": 7661.46272234243, "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": "CABO_CFD.US", "name": "Cable One Inc", "sector": "", "last_price": 109.96, "change_1d_pct": -4.7222944285590485, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 10.582579924977598, "volatility_20d_pct": 9205.89183144133, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}], "output_schema": {"selected_stocks": [{"symbol": "string", "mean_reversion_score": "integer 0-100", "selection_reason": "short, concrete, indicator-based"}], "rejected_common_reasons": ["string"]}}Output JSON
{
"selected_stocks": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "Large 1D selloff (-36.8%) with deep oversold vs MA200 (-40.6%) and MA50 (-31.7%); high 20D vol suggests capitulation/mean-reversion setup.",
"mean_reversion_score": 92
},
{
"symbol": "OCDO_CFD.UK",
"selection_reason": "Sharp 1D drop (-27.7%) and materially below MA200 (-25.4%) and MA50 (-16.5%); elevated 20D vol supports short-horizon rebound potential.",
"mean_reversion_score": 89
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Big 1D decline (-26.6%) with price stretched below MA50 (-22.1%) and below MA200 (-13.4%); volatility elevated for potential snap-back.",
"mean_reversion_score": 86
},
{
"symbol": "CRST_CFD.UK",
"selection_reason": "Down day (-12.8%) while significantly below MA200 (-28.2%) and MA50 (-15.8%); high 20D vol indicates dislocation conducive to mean reversion.",
"mean_reversion_score": 82
},
{
"symbol": "ESNT_CFD.UK",
"selection_reason": "Meaningful 1D drop (-10.6%) with concurrent weakness vs MA200 (-10.7%) and MA50 (-8.5%); volatility elevated, fitting 2–10 day bounce profile.",
"mean_reversion_score": 74
}
],
"rejected_common_reasons": [
"Not an EU equity in the provided universe for this run (e.g., *_CFD.US symbols).",
"Non-equity instrument (e.g., VXXB_CFD.ETF) not aligned with liquid single-stock mean reversion.",
"Move is strongly positive/extended above key moving averages (more overbought than oversold for long mean reversion).",
"Insufficient technical context for this strategy (e.g., MA200/MA50 missing) or data-quality flags implied by extreme/implausible volatility values."
]
}#2178 • openrouter • openai/gpt-5.2-pro • 2026-04-08T11:53:03.557550+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": 239.84, "unrealized_pnl": -115.80550767627365, "opened_at": "2026-03-14T18:06:47.909233+00:00"}, {"symbol": "AMH_CFD.US", "qty": 0.0, "avg_price": 29.674999999999997, "last_price": 28.435000000000002, "unrealized_pnl": 0.0, "opened_at": "2026-02-20T17:33:34.647633+00:00"}, {"symbol": "ARCAD_CFD.NL", "qty": 0.0, "avg_price": 28.6, "last_price": 30.0, "unrealized_pnl": 146.8531468531467, "opened_at": "2026-02-23T10:32:09.961595+00:00"}, {"symbol": "AUTO_CFD.UK", "qty": 0.0, "avg_price": 482.8, "last_price": 482.8, "unrealized_pnl": 0.0, "opened_at": "2026-04-03T10:08:21.824313+00:00"}, {"symbol": "BYIT_CFD.UK", "qty": 0.0, "avg_price": 292.6, "last_price": 292.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T09:30:55.514112+00:00"}, {"symbol": "CABO_CFD.US", "qty": 0.0, "avg_price": 94.325, "last_price": 108.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-27T18:23:55.960577+00:00"}, {"symbol": "CBG_CFD.UK", "qty": 0.0, "avg_price": 342.92, "last_price": 342.92, "unrealized_pnl": 0.0, "opened_at": "2026-03-20T10:26:40.341409+00:00"}, {"symbol": "CLX_CFD.US", "qty": 29.714738510301107, "avg_price": 100.96000000000001, "last_price": 102.975, "unrealized_pnl": 59.87519809825633, "opened_at": "2026-04-03T18:06:55.972569+00:00"}, {"symbol": "COTY_CFD.US", "qty": 1496.2593516209477, "avg_price": 2.005, "last_price": 2.105, "unrealized_pnl": 149.6259351620949, "opened_at": "2026-03-29T18:14:52.152268+00:00"}, {"symbol": "CRST_CFD.UK", "qty": 29.013539651837522, "avg_price": 103.4, "last_price": 103.4, "unrealized_pnl": 0.0, "opened_at": "2026-04-07T18:08:48.203875+00:00"}, {"symbol": "CRWD_CFD.US", "qty": 0.0, "avg_price": 350.45000000000005, "last_price": 382.96500000000003, "unrealized_pnl": 0.0, "opened_at": "2026-02-23T18:14:12.978497+00:00"}, {"symbol": "CSGP_CFD.US", "qty": 0.0, "avg_price": 47.235, "last_price": 40.870000000000005, "unrealized_pnl": 0.0, "opened_at": "2026-03-03T18:03:34.247734+00:00"}, {"symbol": "DSY_CFD.FR", "qty": 0.0, "avg_price": 17.881, "last_price": 17.45, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T09:30:55.514112+00:00"}, {"symbol": "EEFT_CFD.US", "qty": 0.0, "avg_price": 63.91, "last_price": 63.91, "unrealized_pnl": 0.0, "opened_at": "2026-04-03T18:06:55.972569+00:00"}, {"symbol": "ETSY_CFD.US", "qty": 0.0, "avg_price": 44.13, "last_price": 50.769999999999996, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T00:47:27.070066+00:00"}, {"symbol": "EZJ_CFD.UK", "qty": 0.0, "avg_price": 437.5, "last_price": 348.5, "unrealized_pnl": 0.0, "opened_at": "2026-03-03T10:20:03.276878+00:00"}, {"symbol": "FBIN_CFD.US", "qty": 0.0, "avg_price": 50.974999999999994, "last_price": 54.185, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T17:30:52.485845+00:00"}, {"symbol": "FICO_CFD.US", "qty": 2.6609662855571625, "avg_price": 1127.4099999999999, "last_price": 1080.5, "unrealized_pnl": -124.8259284554861, "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": 297.6, "unrealized_pnl": 141.44968332160488, "opened_at": "2026-02-18T09:36:37.284518+00:00"}, {"symbol": "HAS_CFD.UK", "qty": 92.36453201970444, "avg_price": 32.48, "last_price": 32.48, "unrealized_pnl": 0.0, "opened_at": "2026-04-07T18:08:48.203875+00:00"}, {"symbol": "HIK_CFD.UK", "qty": 0.0, "avg_price": 1236.0, "last_price": 1236.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-28T10:05:22.022266+00:00"}, {"symbol": "ICG_CFD.UK", "qty": 2.0053475935828877, "avg_price": 1496.0, "last_price": 1496.0, "unrealized_pnl": 0.0, "opened_at": "2026-04-07T10:08:43.931517+00:00"}, {"symbol": "ITRK_CFD.UK", "qty": 0.0, "avg_price": 3620.0, "last_price": 3620.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-28T10:05:22.022266+00:00"}, {"symbol": "IWG_CFD.UK", "qty": 0.0, "avg_price": 185.0, "last_price": 172.2, "unrealized_pnl": 0.0, "opened_at": "2026-03-17T10:04:29.123574+00:00"}, {"symbol": "MLCO_CFD.US", "qty": 0.0, "avg_price": 5.51, "last_price": 6.06, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T17:30:52.485845+00:00"}, {"symbol": "OCDO_CFD.UK", "qty": 0.0, "avg_price": 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": 0.0, "avg_price": 1215.0, "last_price": 1087.73, "unrealized_pnl": 0.0, "opened_at": "2026-03-12T18:01:52.554929+00:00"}, {"symbol": "RMV_CFD.UK", "qty": 0.0, "avg_price": 424.3, "last_price": 424.3, "unrealized_pnl": 0.0, "opened_at": "2026-02-18T09:36:37.284518+00:00"}, {"symbol": "TMV_CFD.DE", "qty": 0.0, "avg_price": 4.781, "last_price": 4.467, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T09:33:49.074031+00:00"}, {"symbol": "TRN_CFD.UK", "qty": 0.0, "avg_price": 184.5, "last_price": 204.2, "unrealized_pnl": 0.0, "opened_at": "2026-03-05T10:27:11.178069+00:00"}, {"symbol": "UKW_CFD.UK", "qty": 0.0, "avg_price": 92.35, "last_price": 92.35, "unrealized_pnl": 0.0, "opened_at": "2026-02-25T17:57:28.313088+00:00"}, {"symbol": "ULTA_CFD.US", "qty": 5.605381165919282, "avg_price": 535.2, "last_price": 532.2, "unrealized_pnl": -16.816143497757846, "opened_at": "2026-03-15T18:15:23.812047+00:00"}, {"symbol": "UTG_CFD.UK", "qty": 0.0, "avg_price": 461.2, "last_price": 457.2, "unrealized_pnl": 0.0, "opened_at": "2026-03-30T10:23:56.039732+00:00"}, {"symbol": "WPP_CFD.UK", "qty": 0.0, "avg_price": 232.09999999999997, "last_price": 232.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-28T10:51:05.818250+00:00"}, {"symbol": "ZS_CFD.US", "qty": 0.0, "avg_price": 159.76, "last_price": 138.82, "unrealized_pnl": 0.0, "opened_at": "2026-02-21T17:32:49.140800+00:00"}], "candidates": [{"symbol": "PAGE_CFD.UK", "mean_reversion_score": 92, "selection_reason": "Large 1D selloff (-36.8%) with deep oversold vs MA200 (-40.6%) and MA50 (-31.7%); high 20D vol suggests capitulation/mean-reversion setup."}, {"symbol": "OCDO_CFD.UK", "mean_reversion_score": 89, "selection_reason": "Sharp 1D drop (-27.7%) and materially below MA200 (-25.4%) and MA50 (-16.5%); elevated 20D vol supports short-horizon rebound potential."}, {"symbol": "CBG_CFD.UK", "mean_reversion_score": 86, "selection_reason": "Big 1D decline (-26.6%) with price stretched below MA50 (-22.1%) and below MA200 (-13.4%); volatility elevated for potential snap-back."}, {"symbol": "CRST_CFD.UK", "mean_reversion_score": 82, "selection_reason": "Down day (-12.8%) while significantly below MA200 (-28.2%) and MA50 (-15.8%); high 20D vol indicates dislocation conducive to mean reversion."}, {"symbol": "ESNT_CFD.UK", "mean_reversion_score": 74, "selection_reason": "Meaningful 1D drop (-10.6%) with concurrent weakness vs MA200 (-10.7%) and MA50 (-8.5%); volatility elevated, fitting 2–10 day bounce profile."}], "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": "Initiate per mean-reversion list (score 89): sharp 1D drop with material distance below MA200/MA50 and elevated volatility consistent with a 2–10 day snap-back profile. Funded by trimming one existing winner to keep positions at the 10 max and gross leverage near the 3.0 cap.",
"symbol": "OCDO_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Maintain position; no new mean-reversion candidate signal provided for replacement and unrealized drawdown is modest relative to fixed position sizing—avoid unnecessary churn.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Maintain position; currently profitable and no higher-conviction replacement signal provided for this name—avoid overtrading.",
"symbol": "CLX_CFD.US"
},
{
"reason": "Maintain position; currently profitable and sized near the strategy’s fixed notional—no clear improvement from rotating out beyond the one planned swap.",
"symbol": "COTY_CFD.US"
},
{
"reason": "Hold; it is itself a high mean-reversion candidate (score 82) and already in the portfolio—stay positioned for the potential snap-back.",
"symbol": "CRST_CFD.UK"
},
{
"reason": "Maintain position; unrealized loss is moderate and there is no provided stronger replacement signal specific to this holding—avoid churn.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Maintain position; neutral P&L and no new information suggesting a superior swap—avoid overtrading.",
"symbol": "HAS_CFD.UK"
},
{
"reason": "Maintain position; neutral P&L and keeping exposure stable helps respect the max gross leverage constraint.",
"symbol": "ICG_CFD.UK"
},
{
"reason": "Hold; it is the top mean-reversion candidate (score 92) and already held. Do not add due to max gross leverage/position sizing discipline.",
"symbol": "PAGE_CFD.UK"
},
{
"reason": "Maintain position; small unrealized loss and no explicit higher-conviction replacement signal—avoid unnecessary selling.",
"symbol": "ULTA_CFD.US"
}
],
"sell": [
{
"reason": "Rotate out of an existing mean-reversion holding with meaningful unrealized gains (+141.45) to free one slot/notional for a higher-scoring current oversold candidate, while keeping gross leverage near the 3.0 cap and avoiding adding leverage.",
"symbol": "FUTR_CFD.UK"
}
]
},
"portfolio_rationale": "Portfolio is already at the max 10 active positions and approximately at the max gross leverage (fixed ~3,000 notional per leg). To follow the mean-reversion playbook without increasing leverage, execute a single rotation: sell one profitable existing holding (FUTR_CFD.UK) and redeploy the fixed position size into a higher-scoring current oversold setup (OCDO_CFD.UK). All other positions are held to avoid overtrading given no clearly superior replacement signals were provided for them."
}Selection logs
#1056 • stage1 • 2026-04-08T11:53:03.555294+00:00
{
"selected_stocks": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "Large 1D selloff (-36.8%) with deep oversold vs MA200 (-40.6%) and MA50 (-31.7%); high 20D vol suggests capitulation/mean-reversion setup.",
"mean_reversion_score": 92
},
{
"symbol": "OCDO_CFD.UK",
"selection_reason": "Sharp 1D drop (-27.7%) and materially below MA200 (-25.4%) and MA50 (-16.5%); elevated 20D vol supports short-horizon rebound potential.",
"mean_reversion_score": 89
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Big 1D decline (-26.6%) with price stretched below MA50 (-22.1%) and below MA200 (-13.4%); volatility elevated for potential snap-back.",
"mean_reversion_score": 86
},
{
"symbol": "CRST_CFD.UK",
"selection_reason": "Down day (-12.8%) while significantly below MA200 (-28.2%) and MA50 (-15.8%); high 20D vol indicates dislocation conducive to mean reversion.",
"mean_reversion_score": 82
},
{
"symbol": "ESNT_CFD.UK",
"selection_reason": "Meaningful 1D drop (-10.6%) with concurrent weakness vs MA200 (-10.7%) and MA50 (-8.5%); volatility elevated, fitting 2–10 day bounce profile.",
"mean_reversion_score": 74
}
],
"rejected_common_reasons": [
"Not an EU equity in the provided universe for this run (e.g., *_CFD.US symbols).",
"Non-equity instrument (e.g., VXXB_CFD.ETF) not aligned with liquid single-stock mean reversion.",
"Move is strongly positive/extended above key moving averages (more overbought than oversold for long mean reversion).",
"Insufficient technical context for this strategy (e.g., MA200/MA50 missing) or data-quality flags implied by extreme/implausible volatility values."
]
}