Arena run #1166
meanrev-v1 • openai • openai/gpt-5.2-pro • EU • success
Run status
as_of: 2026-04-10T10:21:39.995579+00:00
started_at: 2026-04-10T13:11:17.241918+00:00
finished_at: 2026-04-10T13:14:08.063355+00:00
duration_ms: 170820
Inputs
{
"as_of": "2026-04-10T10:21:39.995579+00:00",
"dry_run": false,
"selected": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "Deep oversold: -36.8% 1D, -40.6% vs MA200, -31.7% vs MA50; elevated 20D vol (193%) supports short-term snapback potential.",
"mean_reversion_score": 92
},
{
"symbol": "HAS_CFD.UK",
"selection_reason": "Oversold pullback: -17.2% 1D, -26.5% vs MA200, -12.9% vs MA50; high 20D vol (118%) fits mean-reversion setup.",
"mean_reversion_score": 80
},
{
"symbol": "ICG_CFD.UK",
"selection_reason": "Sharp drop below trend: -15.2% 1D, -16.2% vs MA200, -12.3% vs MA50; moderate-high 20D vol (73%) for 2–10D reversion.",
"mean_reversion_score": 78
},
{
"symbol": "JUP_CFD.UK",
"selection_reason": "Overbought spike: +22.1% 1D, +57.7% vs MA200, +19.3% vs MA50; high 20D vol (96%) suggests potential pullback/mean reversion.",
"mean_reversion_score": 85
},
{
"symbol": "BOY_CFD.UK",
"selection_reason": "Overextended rally: +24.2% 1D, +28.7% vs MA200, +18.6% vs MA50; high 20D vol (103%) supports short-term reversion risk.",
"mean_reversion_score": 82
}
],
"simulate_only": false,
"strict_replay": false,
"universe_symbols": [
"HAS_CFD.UK",
"RS1_CFD.UK",
"MGNS_CFD.UK",
"GEN_CFD.UK",
"JUP_CFD.UK",
"BOY_CFD.UK",
"PAGE_CFD.UK",
"FGP_CFD.UK",
"ICG_CFD.UK",
"SHC_CFD.UK",
"PAG_CFD.UK",
"SAFE_CFD.UK",
"RHIM_CFD.UK",
"PNN_CFD.UK",
"BBY_CFD.UK",
"CMCX_CFD.UK",
"HAIN_CFD.US",
"CFEB_CFD.BE",
"ATG_CFD.UK",
"CCL_CFD.UK",
"ICE_CFD.US",
"VST_CFD.US"
]
}Outputs
{
"actions": {
"buy": [],
"hold": [
{
"reason": "Position is below entry but no new mean-reversion signal provided in the candidate set; avoiding unnecessary churn and keeping within max-trading guidance.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Position is profitable and there is no overbought/exit signal provided; hold to avoid overtrading.",
"symbol": "CLX_CFD.US"
},
{
"reason": "Position is modestly profitable with no new information indicating a sell; hold to avoid churn.",
"symbol": "COTY_CFD.US"
},
{
"reason": "No updated signal to change exposure; hold per avoid-overtrading rule.",
"symbol": "CRST_CFD.UK"
},
{
"reason": "Position is down from entry but no explicit mean-reversion candidate/exit trigger provided; hold rather than react to small drawdown.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Included as an oversold mean-reversion candidate and already held at the fixed position size; maintain exposure (no add due to fixed sizing / avoid overtrading).",
"symbol": "HAS_CFD.UK"
},
{
"reason": "Included as an oversold mean-reversion candidate and already held at the fixed position size; hold (no incremental buy to avoid churn).",
"symbol": "ICG_CFD.UK"
},
{
"reason": "No new signal provided to warrant a sell or add; hold.",
"symbol": "OCDO_CFD.UK"
},
{
"reason": "Top oversold mean-reversion candidate and already held at the fixed position size; keep position to capture potential snapback.",
"symbol": "PAGE_CFD.UK"
},
{
"reason": "Small unrealized loss with no explicit new candidate/exit trigger; hold to avoid overtrading.",
"symbol": "ULTA_CFD.US"
}
],
"sell": []
},
"portfolio_rationale": "Portfolio already has 10 active positions (max allowed). The strongest new signals in the candidate list (PAGE/HAS/ICG) are already held at the fixed position size, so no new buys are needed. Overbought candidates (JUP/BOY) would require adding new symbols and would exceed max positions; additionally no shorting rule is specified. With no clear improvement versus current holdings and to comply with the avoid-overtrading constraint, all active positions are held and no trades are placed this run."
}Prompts & responses
#2252 • openrouter • openai/gpt-5.2-pro • 2026-04-10T13:11:17.264994+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": "MGNS_CFD.UK", "name": "MORGAN SINDALL GROUP PLC", "sector": "", "last_price": 5370.0, "change_1d_pct": 19.599109131403125, "distance_from_ma200_pct": 32.00382943846654, "distance_from_ma50_pct": 15.63012691493826, "volatility_20d_pct": 90.38530398603771, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "GEN_CFD.UK", "name": "GENUIT GROUP PLC", "sector": "", "last_price": 370.0, "change_1d_pct": 13.671274961597547, "distance_from_ma200_pct": 1.1384913963945476, "distance_from_ma50_pct": 7.521632190000593, "volatility_20d_pct": 112.82453945409682, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "JUP_CFD.UK", "name": "JUPITER FUND MANAGEMENT", "sector": "", "last_price": 193.6, "change_1d_pct": 22.06809583858764, "distance_from_ma200_pct": 57.65825374753912, "distance_from_ma50_pct": 19.274691586205538, "volatility_20d_pct": 96.15961444303547, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BOY_CFD.UK", "name": "BODYCOTE PLC", "sector": "", "last_price": 775.4, "change_1d_pct": 24.163330664531625, "distance_from_ma200_pct": 28.652243313347768, "distance_from_ma50_pct": 18.63612217470385, "volatility_20d_pct": 103.46484337510964, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "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": "ICG_CFD.UK", "name": "ICG Plc", "sector": "", "last_price": 1693.0, "change_1d_pct": -15.18545979199647, "distance_from_ma200_pct": -16.18296530905513, "distance_from_ma50_pct": -12.256151916578562, "volatility_20d_pct": 73.10253575454833, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "SHC_CFD.UK", "name": "SHAFTESBURY CAPITAL PLC", "sector": "", "last_price": 140.4, "change_1d_pct": -2.9045643153526868, "distance_from_ma200_pct": 0.26963533347688085, "distance_from_ma50_pct": -0.771073778544229, "volatility_20d_pct": 63.75522821252001, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "PAG_CFD.UK", "name": "PARAGON BANKING GROUP PLC", "sector": "", "last_price": 852.5, "change_1d_pct": -3.399433427762044, "distance_from_ma200_pct": -1.3404962254783492, "distance_from_ma50_pct": 0.699141440891915, "volatility_20d_pct": 71.52779356208148, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "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": "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": "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": "CMCX_CFD.UK", "name": "CMC MARKETS PLC", "sector": "", "last_price": 325.0, "change_1d_pct": 0.0, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 2.8513560555713857, "volatility_20d_pct": 3004.223066122388, "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": "HAIN_CFD.US", "name": "The Hain Celestial Group Inc", "sector": "", "last_price": 0.7051, "change_1d_pct": -0.18403171007929098, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -33.19918220868079, "volatility_20d_pct": 9562.636249272142, "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": 9.9, "change_1d_pct": 4.6511627906976605, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 9.416445623342184, "volatility_20d_pct": 2316.9595725659747, "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": "CCL_CFD.UK", "name": "CARNIVAL PLC", "sector": "", "last_price": 1921.5, "change_1d_pct": -6.541828793774318, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -14.683615213991775, "volatility_20d_pct": 5150.407605401003, "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": "ICE_CFD.US", "name": "Intercontinental Exchange Inc", "sector": "", "last_price": 166.29, "change_1d_pct": 0.9163733462798751, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 1.0315191120842782, "volatility_20d_pct": 3562.678389244709, "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": "VST_CFD.US", "name": "Vistra Energy Corp", "sector": "", "last_price": 158.65, "change_1d_pct": -5.2270011947431305, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -2.878446544884661, "volatility_20d_pct": 4530.365230302939, "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": "Deep oversold: -36.8% 1D, -40.6% vs MA200, -31.7% vs MA50; elevated 20D vol (193%) supports short-term snapback potential.",
"mean_reversion_score": 92
},
{
"symbol": "HAS_CFD.UK",
"selection_reason": "Oversold pullback: -17.2% 1D, -26.5% vs MA200, -12.9% vs MA50; high 20D vol (118%) fits mean-reversion setup.",
"mean_reversion_score": 80
},
{
"symbol": "ICG_CFD.UK",
"selection_reason": "Sharp drop below trend: -15.2% 1D, -16.2% vs MA200, -12.3% vs MA50; moderate-high 20D vol (73%) for 2–10D reversion.",
"mean_reversion_score": 78
},
{
"symbol": "JUP_CFD.UK",
"selection_reason": "Overbought spike: +22.1% 1D, +57.7% vs MA200, +19.3% vs MA50; high 20D vol (96%) suggests potential pullback/mean reversion.",
"mean_reversion_score": 85
},
{
"symbol": "BOY_CFD.UK",
"selection_reason": "Overextended rally: +24.2% 1D, +28.7% vs MA200, +18.6% vs MA50; high 20D vol (103%) supports short-term reversion risk.",
"mean_reversion_score": 82
}
],
"rejected_common_reasons": [
"Non-EU/UK region symbols present (e.g., *_CFD.US) excluded for EU scan.",
"Key technical inputs missing (e.g., MA200 null) reduced signal reliability.",
"Implausibly extreme 20D volatility readings (thousands of %) suggest data quality issues; avoided.",
"Price action not sufficiently stretched vs MA50/MA200 to rank top-5 mean-reversion candidates."
]
}#2253 • openrouter • openai/gpt-5.2-pro • 2026-04-10T13:13:01.163706+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": 229.98, "unrealized_pnl": -234.376878983445, "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": 107.725, "unrealized_pnl": 201.02020602218658, "opened_at": "2026-04-03T18:06:55.972569+00:00"}, {"symbol": "COTY_CFD.US", "qty": 1496.2593516209477, "avg_price": 2.005, "last_price": 2.085, "unrealized_pnl": 119.70074812967592, "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": 1073.8249999999998, "unrealized_pnl": -142.58787841158065, "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": 0.0, "avg_price": 284.2, "last_price": 297.6, "unrealized_pnl": 0.0, "opened_at": "2026-02-18T09:36:37.284518+00:00"}, {"symbol": "HAS_CFD.UK", "qty": 92.36453201970444, "avg_price": 32.48, "last_price": 32.48, "unrealized_pnl": 0.0, "opened_at": "2026-04-07T18:08:48.203875+00:00"}, {"symbol": "HIK_CFD.UK", "qty": 0.0, "avg_price": 1236.0, "last_price": 1236.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-28T10:05:22.022266+00:00"}, {"symbol": "ICG_CFD.UK", "qty": 2.0053475935828877, "avg_price": 1496.0, "last_price": 1496.0, "unrealized_pnl": 0.0, "opened_at": "2026-04-07T10:08:43.931517+00:00"}, {"symbol": "ITRK_CFD.UK", "qty": 0.0, "avg_price": 3620.0, "last_price": 3620.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-28T10:05:22.022266+00:00"}, {"symbol": "IWG_CFD.UK", "qty": 0.0, "avg_price": 185.0, "last_price": 172.2, "unrealized_pnl": 0.0, "opened_at": "2026-03-17T10:04:29.123574+00:00"}, {"symbol": "MLCO_CFD.US", "qty": 0.0, "avg_price": 5.51, "last_price": 6.06, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T17:30:52.485845+00:00"}, {"symbol": "OCDO_CFD.UK", "qty": 16.129032258064516, "avg_price": 186.0, "last_price": 186.0, "unrealized_pnl": 0.0, "opened_at": "2026-03-12T18:01:52.554929+00:00"}, {"symbol": "PAGE_CFD.UK", "qty": 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.79, "unrealized_pnl": -13.50896860986593, "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": "Deep oversold: -36.8% 1D, -40.6% vs MA200, -31.7% vs MA50; elevated 20D vol (193%) supports short-term snapback potential."}, {"symbol": "HAS_CFD.UK", "mean_reversion_score": 80, "selection_reason": "Oversold pullback: -17.2% 1D, -26.5% vs MA200, -12.9% vs MA50; high 20D vol (118%) fits mean-reversion setup."}, {"symbol": "ICG_CFD.UK", "mean_reversion_score": 78, "selection_reason": "Sharp drop below trend: -15.2% 1D, -16.2% vs MA200, -12.3% vs MA50; moderate-high 20D vol (73%) for 2–10D reversion."}, {"symbol": "JUP_CFD.UK", "mean_reversion_score": 85, "selection_reason": "Overbought spike: +22.1% 1D, +57.7% vs MA200, +19.3% vs MA50; high 20D vol (96%) suggests potential pullback/mean reversion."}, {"symbol": "BOY_CFD.UK", "mean_reversion_score": 82, "selection_reason": "Overextended rally: +24.2% 1D, +28.7% vs MA200, +18.6% vs MA50; high 20D vol (103%) supports short-term reversion risk."}], "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": [],
"hold": [
{
"reason": "Position is below entry but no new mean-reversion signal provided in the candidate set; avoiding unnecessary churn and keeping within max-trading guidance.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Position is profitable and there is no overbought/exit signal provided; hold to avoid overtrading.",
"symbol": "CLX_CFD.US"
},
{
"reason": "Position is modestly profitable with no new information indicating a sell; hold to avoid churn.",
"symbol": "COTY_CFD.US"
},
{
"reason": "No updated signal to change exposure; hold per avoid-overtrading rule.",
"symbol": "CRST_CFD.UK"
},
{
"reason": "Position is down from entry but no explicit mean-reversion candidate/exit trigger provided; hold rather than react to small drawdown.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Included as an oversold mean-reversion candidate and already held at the fixed position size; maintain exposure (no add due to fixed sizing / avoid overtrading).",
"symbol": "HAS_CFD.UK"
},
{
"reason": "Included as an oversold mean-reversion candidate and already held at the fixed position size; hold (no incremental buy to avoid churn).",
"symbol": "ICG_CFD.UK"
},
{
"reason": "No new signal provided to warrant a sell or add; hold.",
"symbol": "OCDO_CFD.UK"
},
{
"reason": "Top oversold mean-reversion candidate and already held at the fixed position size; keep position to capture potential snapback.",
"symbol": "PAGE_CFD.UK"
},
{
"reason": "Small unrealized loss with no explicit new candidate/exit trigger; hold to avoid overtrading.",
"symbol": "ULTA_CFD.US"
}
],
"sell": []
},
"portfolio_rationale": "Portfolio already has 10 active positions (max allowed). The strongest new signals in the candidate list (PAGE/HAS/ICG) are already held at the fixed position size, so no new buys are needed. Overbought candidates (JUP/BOY) would require adding new symbols and would exceed max positions; additionally no shorting rule is specified. With no clear improvement versus current holdings and to comply with the avoid-overtrading constraint, all active positions are held and no trades are placed this run."
}Selection logs
#1091 • stage1 • 2026-04-10T13:13:01.160643+00:00
{
"selected_stocks": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "Deep oversold: -36.8% 1D, -40.6% vs MA200, -31.7% vs MA50; elevated 20D vol (193%) supports short-term snapback potential.",
"mean_reversion_score": 92
},
{
"symbol": "HAS_CFD.UK",
"selection_reason": "Oversold pullback: -17.2% 1D, -26.5% vs MA200, -12.9% vs MA50; high 20D vol (118%) fits mean-reversion setup.",
"mean_reversion_score": 80
},
{
"symbol": "ICG_CFD.UK",
"selection_reason": "Sharp drop below trend: -15.2% 1D, -16.2% vs MA200, -12.3% vs MA50; moderate-high 20D vol (73%) for 2–10D reversion.",
"mean_reversion_score": 78
},
{
"symbol": "JUP_CFD.UK",
"selection_reason": "Overbought spike: +22.1% 1D, +57.7% vs MA200, +19.3% vs MA50; high 20D vol (96%) suggests potential pullback/mean reversion.",
"mean_reversion_score": 85
},
{
"symbol": "BOY_CFD.UK",
"selection_reason": "Overextended rally: +24.2% 1D, +28.7% vs MA200, +18.6% vs MA50; high 20D vol (103%) supports short-term reversion risk.",
"mean_reversion_score": 82
}
],
"rejected_common_reasons": [
"Non-EU/UK region symbols present (e.g., *_CFD.US) excluded for EU scan.",
"Key technical inputs missing (e.g., MA200 null) reduced signal reliability.",
"Implausibly extreme 20D volatility readings (thousands of %) suggest data quality issues; avoided.",
"Price action not sufficiently stretched vs MA50/MA200 to rank top-5 mean-reversion candidates."
]
}