Arena run #896
meanrev-v1 • openai • openai/gpt-5.2-pro • US • success
Run status
as_of: 2026-03-27T18:04:13.865611+00:00
started_at: 2026-03-27T19:12:34.793849+00:00
finished_at: 2026-03-27T19:14:39.442224+00:00
duration_ms: 124646
Inputs
{
"as_of": "2026-03-27T18:04:13.865611+00:00",
"dry_run": false,
"selected": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "Extreme 1D selloff (-36.8%) with deep dislocation below MA200 (-40.6%) and MA50 (-31.7%); classic oversold mean-reversion setup (earnings/news unknown).",
"mean_reversion_score": 90
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Sharp 1D drop (-26.6%) and meaningfully below MA50 (-22.1%) and below MA200 (-13.4%); strong oversold bounce candidate (earnings/news unknown).",
"mean_reversion_score": 85
},
{
"symbol": "UTG_CFD.UK",
"selection_reason": "Down -8.3% on the day and significantly below MA200 (-32.1%) and MA50 (-13.5%); oversold vs trend with room to revert (earnings/news unknown).",
"mean_reversion_score": 78
},
{
"symbol": "RHIM_CFD.UK",
"selection_reason": "Pullback day (-6.8%) while near MA50 (+0.9%) and slightly below MA200 (-2.4%); short-term dip toward mean with moderate dislocation (earnings/news unknown).",
"mean_reversion_score": 62
},
{
"symbol": "MCG_CFD.UK",
"selection_reason": "Down -4.3% with price near MA50 (+0.9%) and below MA200 (-13.6%); moderate oversold/mean-reversion potential (earnings/news unknown).",
"mean_reversion_score": 58
}
],
"simulate_only": false,
"strict_replay": false,
"universe_symbols": [
"CRST_CFD.UK",
"MSLH_CFD.UK",
"MCG_CFD.UK",
"BOY_CFD.UK",
"LMP_CFD.UK",
"PAGE_CFD.UK",
"ESNT_CFD.UK",
"JDW_CFD.UK",
"PAG_CFD.UK",
"INVP_CFD.UK",
"RHIM_CFD.UK",
"UTG_CFD.UK",
"CBG_CFD.UK",
"DLN_CFD.UK",
"ABDN_CFD.UK",
"BBY_CFD.UK",
"CPG_CFD.UK",
"BYIT_CFD.UK",
"ATG_CFD.UK"
]
}Outputs
{
"actions": {
"buy": [
{
"reason": "Top candidate (mean_reversion_score 90): extreme 1D selloff and deep dislocation below MA50/MA200 per provided signal, fitting the strategy’s oversold mean-reversion entry criteria. Executed as a single rotation (funded by selling BYIT) to respect max positions and avoid overtrading.",
"symbol": "PAGE_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Already held with unrealized loss; no new information provided that clearly improves expected outcome by rotating. Avoid overtrading and allow time for mean reversion.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Name appears as a high mean-reversion candidate (score 85) and is already held; keep exposure rather than churning.",
"symbol": "CBG_CFD.UK"
},
{
"reason": "Already held with unrealized loss; absent a clearly superior replacement signal beyond the single planned swap, hold to avoid unnecessary turnover.",
"symbol": "CSGP_CFD.US"
},
{
"reason": "Already held with unrealized loss; no risk/event data provided to justify a forced exit. Hold under mean-reversion framework.",
"symbol": "EZJ_CFD.UK"
},
{
"reason": "Already held with unrealized loss; no provided catalyst to justify rotation today. Hold to avoid overtrading.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Already held with unrealized loss; no new candidate-based reason to replace it in this run given trade limits.",
"symbol": "IWG_CFD.UK"
},
{
"reason": "Already held with unrealized loss; without additional signals/news/earnings info, prefer HOLD to avoid churn.",
"symbol": "PSN_CFD.UK"
},
{
"reason": "Moderate unrealized loss; no replacement signal provided strong enough to justify selling within limited sell budget.",
"symbol": "ULTA_CFD.US"
},
{
"reason": "Already held with unrealized loss; no new information provided to justify exit. Maintain position for potential mean reversion.",
"symbol": "ZS_CFD.US"
}
],
"sell": [
{
"reason": "Position is flat and lacks a current mean-reversion catalyst in the provided candidate list; rotate out to free one slot for a higher-conviction oversold setup while staying within the max 10 positions constraint.",
"symbol": "BYIT_CFD.UK"
}
]
},
"portfolio_rationale": "Portfolio is already at the 10-position limit, so any new entry requires a sell. Given the provided candidate list, PAGE_CFD.UK is the highest-conviction mean-reversion setup; to minimize churn and stay within the max 2 sells / max 2 buys constraints, we execute only one swap: sell the flat BYIT_CFD.UK (no candidate signal provided) and buy PAGE_CFD.UK at the fixed $3,000 position size. All other existing positions are held to avoid overtrading in the absence of additional, clearly superior replacement signals."
}Prompts & responses
#1752 • openrouter • openai/gpt-5.2-pro • 2026-03-27T19:12:34.813455+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": "US", "strategy": {"key": "meanrev-v1", "name": "Two-Stage LLM Mean-Reversion (Arena v1)", "rules": {"max_positions": 10, "max_buys_per_run": 2, "avoid_overtrading": true, "max_sells_per_run": 2, "max_gross_leverage": 3.0, "fixed_position_size": 3000.0, "universe_symbols_eu": [], "universe_symbols_us": []}}, "selection_rules": {"horizon": "2-10 trading days", "target": "short-term mean reversion in liquid equities", "constraints": ["Select exactly 5 candidates", "Avoid earnings within 5 trading days (if known)", "Avoid highly binary/event-driven moves (if known)", "Avoid sector concentration: max 1 per sector unless clearly justified (sector may be unknown)"]}, "universe": [{"symbol": "CRST_CFD.UK", "name": "CREST NICHOLSON HOLDINGS", "sector": "", "last_price": 167.8, "change_1d_pct": 24.85119047619049, "distance_from_ma200_pct": 1.2720261375977815, "distance_from_ma50_pct": 17.82963155418549, "volatility_20d_pct": 158.46878099582966, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "MSLH_CFD.UK", "name": "MARSHALLS PLC", "sector": "", "last_price": 179.0, "change_1d_pct": 2.052451539338662, "distance_from_ma200_pct": -18.41965657865713, "distance_from_ma50_pct": 4.539832012082234, "volatility_20d_pct": 102.90810964969117, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "MCG_CFD.UK", "name": "MOBICO GROUP PLC", "sector": "", "last_price": 23.88, "change_1d_pct": -4.250200481154776, "distance_from_ma200_pct": -13.633157923289751, "distance_from_ma50_pct": 0.9358119246278163, "volatility_20d_pct": 236.12122528317374, "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": "LMP_CFD.UK", "name": "LONDONMETRIC PROPERTY PLC", "sector": "", "last_price": 214.0, "change_1d_pct": 11.57455683003128, "distance_from_ma200_pct": 12.507879494597773, "distance_from_ma50_pct": 10.77384329331672, "volatility_20d_pct": 54.89150861607771, "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": "ESNT_CFD.UK", "name": "ESSENTRA PLC", "sector": "", "last_price": 108.4, "change_1d_pct": 4.230769230769238, "distance_from_ma200_pct": 7.40452119530135, "distance_from_ma50_pct": 9.771484932749797, "volatility_20d_pct": 98.9832071461764, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "JDW_CFD.UK", "name": "WETHERSPOON (J.D.) PLC", "sector": "", "last_price": 748.5, "change_1d_pct": 9.750733137829904, "distance_from_ma200_pct": 6.242631058659898, "distance_from_ma50_pct": 5.290077328071208, "volatility_20d_pct": 98.2373545531062, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "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": "INVP_CFD.UK", "name": "INVESTEC PLC", "sector": "", "last_price": 623.5, "change_1d_pct": 8.529155787641418, "distance_from_ma200_pct": 17.34715626999408, "distance_from_ma50_pct": 9.569618971869698, "volatility_20d_pct": 76.97154585310399, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "RHIM_CFD.UK", "name": "RHI MAGNESITA NV", "sector": "", "last_price": 2550.0, "change_1d_pct": -6.764168190127973, "distance_from_ma200_pct": -2.35709026809392, "distance_from_ma50_pct": 0.9429816244979738, "volatility_20d_pct": 151.25590362229855, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "UTG_CFD.UK", "name": "UNITE GROUP PLC/THE", "sector": "", "last_price": 505.0, "change_1d_pct": -8.265213442325159, "distance_from_ma200_pct": -32.12786599325862, "distance_from_ma50_pct": -13.548388422126267, "volatility_20d_pct": 98.87339279796446, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "CBG_CFD.UK", "name": "CLOSE BROTHERS GROUP PLC", "sector": "", "last_price": 372.74, "change_1d_pct": -26.625984251968504, "distance_from_ma200_pct": -13.365429078084645, "distance_from_ma50_pct": -22.129222788055436, "volatility_20d_pct": 169.0552301316783, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "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": "ABDN_CFD.UK", "name": "Aberdeen Group Plc", "sector": "", "last_price": 206.2, "change_1d_pct": 0.4873294346978474, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -3.567353199768042, "volatility_20d_pct": 5122.525857900045, "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": "CPG_CFD.UK", "name": "COMPASS GROUP PLC", "sector": "", "last_price": 2287.0, "change_1d_pct": -0.823937554206422, "distance_from_ma200_pct": null, "distance_from_ma50_pct": 2.8011537977172374, "volatility_20d_pct": 2808.1897930853006, "market_cap_usd": null, "avg_daily_volume_usd": null, "days_to_next_earnings": null, "earnings_confirmed": null, "news_sentiment_score": null, "news_headlines_last_3": [], "data_quality_note": "snapshot_ok_prices_technicals_only"}, {"symbol": "BYIT_CFD.UK", "name": "BYTES TECHNOLOGY GROUP PLC", "sector": "", "last_price": 316.4, "change_1d_pct": 1.9329896907216426, "distance_from_ma200_pct": null, "distance_from_ma50_pct": -3.036395062333752, "volatility_20d_pct": 3610.9502328075146, "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"}], "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": "Extreme 1D selloff (-36.8%) with deep dislocation below MA200 (-40.6%) and MA50 (-31.7%); classic oversold mean-reversion setup (earnings/news unknown).",
"mean_reversion_score": 90
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Sharp 1D drop (-26.6%) and meaningfully below MA50 (-22.1%) and below MA200 (-13.4%); strong oversold bounce candidate (earnings/news unknown).",
"mean_reversion_score": 85
},
{
"symbol": "UTG_CFD.UK",
"selection_reason": "Down -8.3% on the day and significantly below MA200 (-32.1%) and MA50 (-13.5%); oversold vs trend with room to revert (earnings/news unknown).",
"mean_reversion_score": 78
},
{
"symbol": "RHIM_CFD.UK",
"selection_reason": "Pullback day (-6.8%) while near MA50 (+0.9%) and slightly below MA200 (-2.4%); short-term dip toward mean with moderate dislocation (earnings/news unknown).",
"mean_reversion_score": 62
},
{
"symbol": "MCG_CFD.UK",
"selection_reason": "Down -4.3% with price near MA50 (+0.9%) and below MA200 (-13.6%); moderate oversold/mean-reversion potential (earnings/news unknown).",
"mean_reversion_score": 58
}
],
"rejected_common_reasons": [
"Region mismatch: provided universe appears to be UK CFD symbols despite region=US",
"Not a mean-reversion long setup: large positive 1D spike and/or extended above MA50/MA200 (momentum/overbought)",
"Data-quality concern: implausibly extreme 20D volatility values (thousands of %) suggesting unreliable inputs",
"Insufficient dislocation vs MA50/MA200 (weak mean-reversion edge) given the short 2–10 day horizon",
"Earnings/news/event risk is unknown (no filtering possible for 'earnings within 5 days' or binary catalysts)"
]
}#1753 • openrouter • openai/gpt-5.2-pro • 2026-03-27T19:13:34.513453+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": "US", "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": 234.58, "unrealized_pnl": -179.0596063654947, "opened_at": "2026-03-14T18:06:47.909233+00:00"}, {"symbol": "AMH_CFD.US", "qty": 0.0, "avg_price": 29.674999999999997, "last_price": 28.435000000000002, "unrealized_pnl": 0.0, "opened_at": "2026-02-20T17:33:34.647633+00:00"}, {"symbol": "ARCAD_CFD.NL", "qty": 0.0, "avg_price": 28.6, "last_price": 30.0, "unrealized_pnl": 146.8531468531467, "opened_at": "2026-02-23T10:32:09.961595+00:00"}, {"symbol": "BYIT_CFD.UK", "qty": 10.252904989747094, "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": 8.748396127376648, "avg_price": 342.92, "last_price": 342.92, "unrealized_pnl": 0.0, "opened_at": "2026-03-20T10:26:40.341409+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": 63.51222610352493, "avg_price": 47.235, "last_price": 40.18, "unrealized_pnl": -448.07875516036836, "opened_at": "2026-03-03T18:03:34.247734+00:00"}, {"symbol": "DSY_CFD.FR", "qty": 0.0, "avg_price": 17.881, "last_price": 17.45, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T09:30:55.514112+00:00"}, {"symbol": "ETSY_CFD.US", "qty": 0.0, "avg_price": 44.13, "last_price": 50.769999999999996, "unrealized_pnl": 0.0, "opened_at": "2026-02-19T00:47:27.070066+00:00"}, {"symbol": "EZJ_CFD.UK", "qty": 6.857142857142857, "avg_price": 437.5, "last_price": 351.6, "unrealized_pnl": -589.0285714285712, "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": 1012.69, "unrealized_pnl": -305.26605227911716, "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": 414.2, "last_price": 414.2, "unrealized_pnl": 0.0, "opened_at": "2026-02-18T09:36:37.284518+00:00"}, {"symbol": "IWG_CFD.UK", "qty": 16.216216216216218, "avg_price": 185.0, "last_price": 172.2, "unrealized_pnl": -207.56756756756778, "opened_at": "2026-03-17T10:04:29.123574+00:00"}, {"symbol": "MLCO_CFD.US", "qty": 0.0, "avg_price": 5.51, "last_price": 6.06, "unrealized_pnl": 0.0, "opened_at": "2026-02-16T17:30:52.485845+00:00"}, {"symbol": "OCDO_CFD.UK", "qty": 0.0, "avg_price": 204.3, "last_price": 204.3, "unrealized_pnl": 0.0, "opened_at": "2026-03-12T18:01:52.554929+00:00"}, {"symbol": "PAGE_CFD.UK", "qty": 0.0, "avg_price": 151.91, "last_price": 152.7, "unrealized_pnl": 0.0, "opened_at": "2026-03-05T10:27:11.178069+00:00"}, {"symbol": "PAYC_CFD.US", "qty": 0.0, "avg_price": 121.22, "last_price": 134.24, "unrealized_pnl": 322.2240554363969, "opened_at": "2026-02-19T17:33:27.020111+00:00"}, {"symbol": "PSN_CFD.UK", "qty": 2.4691358024691357, "avg_price": 1215.0, "last_price": 1089.0, "unrealized_pnl": -311.1111111111111, "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": 518.65, "unrealized_pnl": -92.7690582959645, "opened_at": "2026-03-15T18:15:23.812047+00:00"}, {"symbol": "WPP_CFD.UK", "qty": 0.0, "avg_price": 232.09999999999997, "last_price": 232.0, "unrealized_pnl": 0.0, "opened_at": "2026-02-28T10:51:05.818250+00:00"}, {"symbol": "ZS_CFD.US", "qty": 18.778167250876315, "avg_price": 159.76, "last_price": 133.27, "unrealized_pnl": -497.43365047571325, "opened_at": "2026-02-21T17:32:49.140800+00:00"}], "candidates": [{"symbol": "PAGE_CFD.UK", "mean_reversion_score": 90, "selection_reason": "Extreme 1D selloff (-36.8%) with deep dislocation below MA200 (-40.6%) and MA50 (-31.7%); classic oversold mean-reversion setup (earnings/news unknown)."}, {"symbol": "CBG_CFD.UK", "mean_reversion_score": 85, "selection_reason": "Sharp 1D drop (-26.6%) and meaningfully below MA50 (-22.1%) and below MA200 (-13.4%); strong oversold bounce candidate (earnings/news unknown)."}, {"symbol": "UTG_CFD.UK", "mean_reversion_score": 78, "selection_reason": "Down -8.3% on the day and significantly below MA200 (-32.1%) and MA50 (-13.5%); oversold vs trend with room to revert (earnings/news unknown)."}, {"symbol": "RHIM_CFD.UK", "mean_reversion_score": 62, "selection_reason": "Pullback day (-6.8%) while near MA50 (+0.9%) and slightly below MA200 (-2.4%); short-term dip toward mean with moderate dislocation (earnings/news unknown)."}, {"symbol": "MCG_CFD.UK", "mean_reversion_score": 58, "selection_reason": "Down -4.3% with price near MA50 (+0.9%) and below MA200 (-13.6%); moderate oversold/mean-reversion potential (earnings/news unknown)."}], "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": "Top candidate (mean_reversion_score 90): extreme 1D selloff and deep dislocation below MA50/MA200 per provided signal, fitting the strategy’s oversold mean-reversion entry criteria. Executed as a single rotation (funded by selling BYIT) to respect max positions and avoid overtrading.",
"symbol": "PAGE_CFD.UK",
"position_size": 3000
}
],
"hold": [
{
"reason": "Already held with unrealized loss; no new information provided that clearly improves expected outcome by rotating. Avoid overtrading and allow time for mean reversion.",
"symbol": "ADBE_CFD.US"
},
{
"reason": "Name appears as a high mean-reversion candidate (score 85) and is already held; keep exposure rather than churning.",
"symbol": "CBG_CFD.UK"
},
{
"reason": "Already held with unrealized loss; absent a clearly superior replacement signal beyond the single planned swap, hold to avoid unnecessary turnover.",
"symbol": "CSGP_CFD.US"
},
{
"reason": "Already held with unrealized loss; no risk/event data provided to justify a forced exit. Hold under mean-reversion framework.",
"symbol": "EZJ_CFD.UK"
},
{
"reason": "Already held with unrealized loss; no provided catalyst to justify rotation today. Hold to avoid overtrading.",
"symbol": "FICO_CFD.US"
},
{
"reason": "Already held with unrealized loss; no new candidate-based reason to replace it in this run given trade limits.",
"symbol": "IWG_CFD.UK"
},
{
"reason": "Already held with unrealized loss; without additional signals/news/earnings info, prefer HOLD to avoid churn.",
"symbol": "PSN_CFD.UK"
},
{
"reason": "Moderate unrealized loss; no replacement signal provided strong enough to justify selling within limited sell budget.",
"symbol": "ULTA_CFD.US"
},
{
"reason": "Already held with unrealized loss; no new information provided to justify exit. Maintain position for potential mean reversion.",
"symbol": "ZS_CFD.US"
}
],
"sell": [
{
"reason": "Position is flat and lacks a current mean-reversion catalyst in the provided candidate list; rotate out to free one slot for a higher-conviction oversold setup while staying within the max 10 positions constraint.",
"symbol": "BYIT_CFD.UK"
}
]
},
"portfolio_rationale": "Portfolio is already at the 10-position limit, so any new entry requires a sell. Given the provided candidate list, PAGE_CFD.UK is the highest-conviction mean-reversion setup; to minimize churn and stay within the max 2 sells / max 2 buys constraints, we execute only one swap: sell the flat BYIT_CFD.UK (no candidate signal provided) and buy PAGE_CFD.UK at the fixed $3,000 position size. All other existing positions are held to avoid overtrading in the absence of additional, clearly superior replacement signals."
}Selection logs
#861 • stage1 • 2026-03-27T19:13:34.510488+00:00
{
"selected_stocks": [
{
"symbol": "PAGE_CFD.UK",
"selection_reason": "Extreme 1D selloff (-36.8%) with deep dislocation below MA200 (-40.6%) and MA50 (-31.7%); classic oversold mean-reversion setup (earnings/news unknown).",
"mean_reversion_score": 90
},
{
"symbol": "CBG_CFD.UK",
"selection_reason": "Sharp 1D drop (-26.6%) and meaningfully below MA50 (-22.1%) and below MA200 (-13.4%); strong oversold bounce candidate (earnings/news unknown).",
"mean_reversion_score": 85
},
{
"symbol": "UTG_CFD.UK",
"selection_reason": "Down -8.3% on the day and significantly below MA200 (-32.1%) and MA50 (-13.5%); oversold vs trend with room to revert (earnings/news unknown).",
"mean_reversion_score": 78
},
{
"symbol": "RHIM_CFD.UK",
"selection_reason": "Pullback day (-6.8%) while near MA50 (+0.9%) and slightly below MA200 (-2.4%); short-term dip toward mean with moderate dislocation (earnings/news unknown).",
"mean_reversion_score": 62
},
{
"symbol": "MCG_CFD.UK",
"selection_reason": "Down -4.3% with price near MA50 (+0.9%) and below MA200 (-13.6%); moderate oversold/mean-reversion potential (earnings/news unknown).",
"mean_reversion_score": 58
}
],
"rejected_common_reasons": [
"Region mismatch: provided universe appears to be UK CFD symbols despite region=US",
"Not a mean-reversion long setup: large positive 1D spike and/or extended above MA50/MA200 (momentum/overbought)",
"Data-quality concern: implausibly extreme 20D volatility values (thousands of %) suggesting unreliable inputs",
"Insufficient dislocation vs MA50/MA200 (weak mean-reversion edge) given the short 2–10 day horizon",
"Earnings/news/event risk is unknown (no filtering possible for 'earnings within 5 days' or binary catalysts)"
]
}