{"ok":true,"security_id":140,"symbol":"GRID","snapshot":{"security_id":140,"symbol":"GRID","asset_type":"ipo","sector_code":"energy","industry":null,"exchange_code":null,"currency":"USD","data_mode":"demo","price":"16.000000","prev_close":"15.846700","chg_1d_pct":"0.9670","volume":3808929,"rvol_30":"1.529","avg_volume_30d":null,"dollar_volume_avg":"37977843.0400","mcap":4534229104,"wk52_high":"22.073400","wk52_low":"13.765900","pct_from_52wh":"-27.5100","dist_to_52wh_pct":"-27.5100","rsi14":"68.597","macd":"0.252400","macd_hist":"0.095300","adx14":"28.915","atr_pct":"2.7600","hv20":"20.5100","hv60":"20.5400","vol_regime":"normal","bb_pctb":"0.9858","stoch_k":"91.775","above_sma20":1,"above_sma50":1,"above_sma200":0,"sma20":"15.145600","sma50":"14.973100","sma200":"17.174100","vwap":"15.944700","trend":"up","support":"14.989200","resistance":"15.543800","perf_1d":"0.9700","perf_5d":"3.3900","perf_1m":"11.9400","perf_3m":"4.2300","perf_6m":"-9.4200","perf_12m":"-4.6000","rel_strength_3m":"-0.1200","rs_rank":null,"mom_persist":null,"bars":760,"beta":"0.4640","mdd_pct":"-35.5100","gap_risk":"0.4240","liq_days":null,"pe_ttm":"20.4760","pe_fwd":"18.0510","peg":"1.5240","ps":"4.2000","pb":"4.9860","ev_ebitda":"14.1210","rev_g":"12.4730","eps_g":"18.6000","gross_margin":"46.6360","op_margin":"23.3610","fcf_margin":"20.6750","roe":"24.3500","roic":"9.0720","debt_equity":"1.1670","net_debt_ebitda":null,"div_yield":"1.0220","payout":"65.0600","buyback_yield":"0.3620","eps_surprise_pct":null,"rev_surprise_pct":null,"earnings_days_out":null,"earnings_date":null,"consensus_score":"48.500","pct_analyst_buy":null,"pt_upside_pct":null,"sent_score":null,"sent_label":null,"sent_delta":"6.360","inst_ownership":null,"inst_chg_pct":null,"inst_top_name":null,"insider_net_usd":null,"insider_trades_90d":0,"short_pct_float":null,"score_total":"64.71","score_technical":"63.48","score_fundamental":"58.41","score_momentum":"57.99","score_sentiment":"71.92","score_institutional":"50.00","score_risk":"84.57","confidence":"65.00","risk_level":"low","stance":"constructive","cats":"defensive,growth","catalysts":"Demo synthetic: GRID posts quarterly result inside modelled range","risks":"No exceptional risk flags from stored data; normal market risk always applies","model_version":"score-1.0.0","priced_at":"2026-10-23 16:00:00","computed_at":"2026-10-23 17:35:24"},"quote":{"security_id":140,"last_price":"16.000000","bid":null,"ask":null,"prev_close":"15.846700","open":"15.806700","day_high":"16.092100","day_low":"15.742000","volume":3808929,"avg_volume_30d":2510826,"change_abs":"0.153300","change_pct":"0.9670","market_state":"closed","quote_ts":"2026-10-23 16:00:00","latency_ms":null,"is_realtime":0,"data_source":"synthetic_demo","data_mode":"demo","updated_at":"2026-10-23 17:35:21","price":"16.000000","as_of":"2026-10-23 16:00:00"},"score":{"id":915,"security_id":140,"model_id":1,"scored_at":"2026-10-23 17:35:00","total_score":"64.71","technical":"63.48","fundamental":"58.41","momentum":"57.99","sentiment":"71.92","institutional":"50.00","risk":"84.57","components_json":"{\"components\":{\"technical\":{\"score\":63.48,\"label\":\"Positive\",\"complete\":true,\"factors\":[{\"key\":\"trend_structure\",\"score\":70,\"why\":\"Price vs 20\\/50\\/200-day moving averages: up\",\"w\":1.8},{\"key\":\"trend_strength_adx\",\"score\":63.61,\"why\":\"ADX(14) 28.9 \\u2014 trending\",\"w\":1},{\"key\":\"rsi_condition\",\"score\":66.33,\"why\":\"RSI(14) 68.6 \\u2014 constructive zone\",\"w\":1},{\"key\":\"macd_signal\",\"score\":67.72,\"why\":\"MACD(12,26,9) above, histogram 0.095\",\"w\":1},{\"key\":\"volume_confirmation\",\"score\":74.41,\"why\":\"Relative volume 1.53\\u00d7 its own 30-day average\",\"w\":0.8},{\"key\":\"52w_position\",\"score\":43.24,\"why\":\"-27.5% from its 52-week high\",\"w\":1.4},{\"key\":\"volatility_compression\",\"score\":78.71,\"why\":\"Bollinger width 11.6%\",\"w\":0.7},{\"key\":\"candlestick_patterns\",\"score\":50,\"why\":\"No reversal\\/breakout pattern at the latest close\",\"w\":0.7},{\"key\":\"intraday_position\",\"score\":62,\"why\":\"Holding above session VWAP\",\"w\":0.4}]},\"fundamental\":{\"score\":58.41,\"label\":\"Available\",\"complete\":true,\"factors\":[{\"key\":\"gross_margin\",\"score\":67.97,\"why\":\"Gross margin 46.6%\",\"w\":1},{\"key\":\"operating_margin\",\"score\":75.38,\"why\":\"Operating margin 23.4%\",\"w\":1},{\"key\":\"free_cash_flow\",\"score\":82,\"why\":\"FCF margin 20.7%\",\"w\":1},{\"key\":\"return_on_equity\",\"score\":80.9,\"why\":\"ROE 24.4%\",\"w\":1},{\"key\":\"return_on_invested_capital\",\"score\":58.29,\"why\":\"ROIC 9.1%\",\"w\":1},{\"key\":\"leverage\",\"score\":51.66,\"why\":\"Debt\\/Equity 1.17\",\"w\":1},{\"key\":\"coverage\",\"score\":82,\"why\":\"Interest coverage 16.9\\u00d7\",\"w\":1},{\"key\":\"valuation_pe\",\"score\":29.32,\"why\":\"P\\/E 20.5\\u00d7 vs sector median 11.8\\u00d7 (premium)\",\"w\":1},{\"key\":\"peg\",\"score\":54.31,\"why\":\"PEG 1.52\",\"w\":1},{\"key\":\"valuation_sales\",\"score\":35.99,\"why\":\"P\\/S 4.2\\u00d7 vs sector median 2.4\\u00d7\",\"w\":1},{\"key\":\"valuation_book\",\"score\":39.41,\"why\":\"P\\/B 5\\u00d7\",\"w\":1},{\"key\":\"valuation_ebitda\",\"score\":51.73,\"why\":\"EV\\/EBITDA 14.1\\u00d7\",\"w\":1}]},\"momentum\":{\"score\":57.99,\"label\":\"Neutral\",\"complete\":true,\"factors\":[{\"key\":\"multi_horizon_performance\",\"score\":52.95,\"why\":\"1M +11.9% \\u00b7 3M +4.2% \\u00b7 6M -9.4% \\u00b7 12M -4.6%\",\"w\":1},{\"key\":\"relative_strength_vs_index\",\"score\":51.71,\"why\":\"3-month return minus index -0.1%\",\"w\":1},{\"key\":\"volume_acceleration\",\"score\":64.79,\"why\":\"Today +1% on 1.5\\u00d7 volume\",\"w\":1},{\"key\":\"momentum_persistence\",\"score\":62.5,\"why\":\"2 of 4 measured horizons are positive\",\"w\":1}]},\"sentiment\":{\"score\":71.92,\"label\":\"Neutral\",\"complete\":true,\"factors\":[{\"key\":\"news_sentiment_index\",\"score\":48.5,\"why\":\"Aggregate news sentiment -3 (\\u2212100 bearish \\u2026 +100 bullish) from 20 scored items\",\"w\":1},{\"key\":\"sentiment_delta\",\"score\":72.26,\"why\":\"30-day sentiment change 6.4 pts\",\"w\":1},{\"key\":\"recent_headline_tone\",\"score\":95,\"why\":\"Last items: 1 positive \\/ 0 negative headlines\",\"w\":1}]},\"institutional\":{\"score\":50,\"label\":\"Not available (no licensed filing feed configured)\",\"complete\":false,\"factors\":[]},\"risk\":{\"score\":84.57,\"label\":\"Low risk\",\"complete\":true,\"factors\":[{\"key\":\"volatility\",\"score\":79.7,\"why\":\"20-day realised volatility 20.5% annualised\",\"w\":1.5},{\"key\":\"beta\",\"score\":85.92,\"why\":\"Beta 0.46 vs the reference index\",\"w\":1},{\"key\":\"drawdown_history\",\"score\":70.76,\"why\":\"Max drawdown in stored history -35.5%\",\"w\":1.2},{\"key\":\"liquidity\",\"score\":92.27,\"why\":\"Average $38M traded per session\",\"w\":1.3},{\"key\":\"gap_risk\",\"score\":95,\"why\":\"Median overnight gap 0.42% \\u2014 position sizing must survive opens\",\"w\":1},{\"key\":\"event_risk_earnings\",\"score\":82,\"why\":\"No scheduled earnings date on file\",\"w\":1},{\"key\":\"sector_risk\",\"score\":80.51,\"why\":\"Sector average volatility 28%\",\"w\":1},{\"key\":\"market_risk\",\"score\":84.63,\"why\":\"Benchmark volatility 20.1% \\u00b7 regime: Sideways \\u00b7 normal vol \\u00b7 risk-off\",\"w\":1},{\"key\":\"correlation\",\"score\":93.19,\"why\":\"Correlation to benchmark 0.63-year rolling: 0.44\",\"w\":1}]}},\"weights\":{\"technical\":25,\"fundamental\":25,\"momentum\":15,\"sentiment\":10,\"institutional\":10,\"risk\":15},\"confidence\":65,\"confidence_basis\":\"760 bars \\u00b7 data <1h old \\u00b7 components covered 96%% \\u00b7 risk drag 73\",\"coverage\":95.5}","factors_json":"{\"positive\":[{\"component\":\"sentiment\",\"key\":\"recent_headline_tone\",\"score\":95,\"why\":\"Last items: 1 positive \\/ 0 negative headlines\"},{\"component\":\"risk\",\"key\":\"gap_risk\",\"score\":95,\"why\":\"Median overnight gap 0.42% \\u2014 position sizing must survive opens\"},{\"component\":\"risk\",\"key\":\"correlation\",\"score\":93.19,\"why\":\"Correlation to benchmark 0.63-year rolling: 0.44\"},{\"component\":\"risk\",\"key\":\"liquidity\",\"score\":92.27,\"why\":\"Average $38M traded per session\"},{\"component\":\"risk\",\"key\":\"beta\",\"score\":85.92,\"why\":\"Beta 0.46 vs the reference index\"},{\"component\":\"risk\",\"key\":\"market_risk\",\"score\":84.63,\"why\":\"Benchmark volatility 20.1% \\u00b7 regime: Sideways \\u00b7 normal vol \\u00b7 risk-off\"}],\"negative\":[{\"component\":\"fundamental\",\"key\":\"valuation_pe\",\"score\":29.32,\"why\":\"P\\/E 20.5\\u00d7 vs sector median 11.8\\u00d7 (premium)\"},{\"component\":\"fundamental\",\"key\":\"valuation_sales\",\"score\":35.99,\"why\":\"P\\/S 4.2\\u00d7 vs sector median 2.4\\u00d7\"}]}","inputs_snapshot":"{\"bars\":760,\"price\":\"16.000000\",\"trend\":\"up\",\"pe\":\"20.4760\",\"sent\":-3.01,\"sector\":\"energy\"}","data_mode":"demo","stance":"constructive","risk_level":"low","confidence":"65.00","model_version":"score-1.0.0","computed_at":"2026-10-23 17:35:24","catalysts":"Demo synthetic: GRID posts quarterly result inside modelled range","risks":"No exceptional risk flags from stored data; normal market risk always applies","sent_score":null,"sent_label":null,"snap_total":"64.71","score_total":64.71,"components":{"technical":25,"fundamental":25,"momentum":15,"sentiment":10,"institutional":10,"risk":15},"component_detail":{"technical":{"score":63.48,"label":"Positive","complete":true,"factors":[{"key":"trend_structure","score":70,"why":"Price vs 20/50/200-day moving averages: up","w":1.8},{"key":"trend_strength_adx","score":63.61,"why":"ADX(14) 28.9 — trending","w":1},{"key":"rsi_condition","score":66.33,"why":"RSI(14) 68.6 — constructive zone","w":1},{"key":"macd_signal","score":67.72,"why":"MACD(12,26,9) above, histogram 0.095","w":1},{"key":"volume_confirmation","score":74.41,"why":"Relative volume 1.53× its own 30-day average","w":0.8},{"key":"52w_position","score":43.24,"why":"-27.5% from its 52-week high","w":1.4},{"key":"volatility_compression","score":78.71,"why":"Bollinger width 11.6%","w":0.7},{"key":"candlestick_patterns","score":50,"why":"No reversal/breakout pattern at the latest close","w":0.7},{"key":"intraday_position","score":62,"why":"Holding above session VWAP","w":0.4}]},"fundamental":{"score":58.41,"label":"Available","complete":true,"factors":[{"key":"gross_margin","score":67.97,"why":"Gross margin 46.6%","w":1},{"key":"operating_margin","score":75.38,"why":"Operating margin 23.4%","w":1},{"key":"free_cash_flow","score":82,"why":"FCF margin 20.7%","w":1},{"key":"return_on_equity","score":80.9,"why":"ROE 24.4%","w":1},{"key":"return_on_invested_capital","score":58.29,"why":"ROIC 9.1%","w":1},{"key":"leverage","score":51.66,"why":"Debt/Equity 1.17","w":1},{"key":"coverage","score":82,"why":"Interest coverage 16.9×","w":1},{"key":"valuation_pe","score":29.32,"why":"P/E 20.5× vs sector median 11.8× (premium)","w":1},{"key":"peg","score":54.31,"why":"PEG 1.52","w":1},{"key":"valuation_sales","score":35.99,"why":"P/S 4.2× vs sector median 2.4×","w":1},{"key":"valuation_book","score":39.41,"why":"P/B 5×","w":1},{"key":"valuation_ebitda","score":51.73,"why":"EV/EBITDA 14.1×","w":1}]},"momentum":{"score":57.99,"label":"Neutral","complete":true,"factors":[{"key":"multi_horizon_performance","score":52.95,"why":"1M +11.9% · 3M +4.2% · 6M -9.4% · 12M -4.6%","w":1},{"key":"relative_strength_vs_index","score":51.71,"why":"3-month return minus index -0.1%","w":1},{"key":"volume_acceleration","score":64.79,"why":"Today +1% on 1.5× volume","w":1},{"key":"momentum_persistence","score":62.5,"why":"2 of 4 measured horizons are positive","w":1}]},"sentiment":{"score":71.92,"label":"Neutral","complete":true,"factors":[{"key":"news_sentiment_index","score":48.5,"why":"Aggregate news sentiment -3 (−100 bearish … +100 bullish) from 20 scored items","w":1},{"key":"sentiment_delta","score":72.26,"why":"30-day sentiment change 6.4 pts","w":1},{"key":"recent_headline_tone","score":95,"why":"Last items: 1 positive / 0 negative headlines","w":1}]},"institutional":{"score":50,"label":"Not available (no licensed filing feed configured)","complete":false,"factors":[]},"risk":{"score":84.57,"label":"Low risk","complete":true,"factors":[{"key":"volatility","score":79.7,"why":"20-day realised volatility 20.5% annualised","w":1.5},{"key":"beta","score":85.92,"why":"Beta 0.46 vs the reference index","w":1},{"key":"drawdown_history","score":70.76,"why":"Max drawdown in stored history -35.5%","w":1.2},{"key":"liquidity","score":92.27,"why":"Average $38M traded per session","w":1.3},{"key":"gap_risk","score":95,"why":"Median overnight gap 0.42% — position sizing must survive opens","w":1},{"key":"event_risk_earnings","score":82,"why":"No scheduled earnings date on file","w":1},{"key":"sector_risk","score":80.51,"why":"Sector average volatility 28%","w":1},{"key":"market_risk","score":84.63,"why":"Benchmark volatility 20.1% · regime: Sideways · normal vol · risk-off","w":1},{"key":"correlation","score":93.19,"why":"Correlation to benchmark 0.63-year rolling: 0.44","w":1}]}},"coverage":95.5,"confidence_basis":"760 bars · data <1h old · components covered 96%% · risk drag 73","factors":[{"component":"sentiment","key":"recent_headline_tone","label":"Recent Headline Tone","score":95,"why":"Last items: 1 positive / 0 negative headlines","w":1,"direction":"positive"},{"component":"risk","key":"gap_risk","label":"Gap Risk","score":95,"why":"Median overnight gap 0.42% — position sizing must survive opens","w":1,"direction":"positive"},{"component":"risk","key":"correlation","label":"Correlation","score":93.19,"why":"Correlation to benchmark 0.63-year rolling: 0.44","w":1,"direction":"positive"},{"component":"risk","key":"liquidity","label":"Liquidity","score":92.27,"why":"Average $38M traded per session","w":1.3,"direction":"positive"},{"component":"risk","key":"beta","label":"Beta","score":85.92,"why":"Beta 0.46 vs the reference index","w":1,"direction":"positive"},{"component":"risk","key":"market_risk","label":"Market Risk","score":84.63,"why":"Benchmark volatility 20.1% · regime: Sideways · normal vol · risk-off","w":1,"direction":"positive"},{"component":"fundamental","key":"free_cash_flow","label":"Free Cash Flow","score":82,"why":"FCF margin 20.7%","w":1,"direction":"positive"},{"component":"fundamental","key":"coverage","label":"Coverage","score":82,"why":"Interest coverage 16.9×","w":1,"direction":"positive"},{"component":"risk","key":"event_risk_earnings","label":"Event Risk Earnings","score":82,"why":"No scheduled earnings date on file","w":1,"direction":"positive"},{"component":"fundamental","key":"return_on_equity","label":"Return On Equity","score":80.9,"why":"ROE 24.4%","w":1,"direction":"positive"},{"component":"risk","key":"sector_risk","label":"Sector Risk","score":80.51,"why":"Sector average volatility 28%","w":1,"direction":"positive"},{"component":"risk","key":"volatility","label":"Volatility","score":79.7,"why":"20-day realised volatility 20.5% annualised","w":1.5,"direction":"positive"},{"component":"technical","key":"volatility_compression","label":"Volatility Compression","score":78.71,"why":"Bollinger width 11.6%","w":0.7,"direction":"positive"},{"component":"fundamental","key":"operating_margin","label":"Operating Margin","score":75.38,"why":"Operating margin 23.4%","w":1,"direction":"positive"}],"factors_positive":[{"component":"sentiment","key":"recent_headline_tone","score":95,"why":"Last items: 1 positive / 0 negative headlines"},{"component":"risk","key":"gap_risk","score":95,"why":"Median overnight gap 0.42% — position sizing must survive opens"},{"component":"risk","key":"correlation","score":93.19,"why":"Correlation to benchmark 0.63-year rolling: 0.44"},{"component":"risk","key":"liquidity","score":92.27,"why":"Average $38M traded per session"},{"component":"risk","key":"beta","score":85.92,"why":"Beta 0.46 vs the reference index"},{"component":"risk","key":"market_risk","score":84.63,"why":"Benchmark volatility 20.1% · regime: Sideways · normal vol · risk-off"}],"factors_negative":[{"component":"fundamental","key":"valuation_pe","score":29.32,"why":"P/E 20.5× vs sector median 11.8× (premium)"},{"component":"fundamental","key":"valuation_sales","score":35.99,"why":"P/S 4.2× vs sector median 2.4×"}],"inputs":{"bars":760,"price":"16.000000","trend":"up","pe":"20.4760","sent":-3.01,"sector":"energy"}},"predictions":[{"id":5485,"security_id":140,"model_id":2,"horizon_code":"1D","generated_at":"2026-10-23 17:35:24","ref_price":16,"bull_low_pct":1,"bull_high_pct":1.5,"base_low_pct":-0.5,"base_high_pct":0.5,"bear_low_pct":-1,"bear_high_pct":-0.5,"prob_up":0.58,"p10_pct":-0.5,"p25_pct":-0.5,"p50_pct":0,"p75_pct":0.5,"p90_pct":1,"expected_range_low":-0.5,"expected_range_high":0.5,"risk_range_low":-1,"risk_range_high":0.5,"confidence":69,"confidence_basis":"760 bars, blended vol 21%, score 65, coverage 96%%","risk_level":"low","volatility_ann":20.5,"max_hist_drawdown":"-35.5000","sample_size":760,"data_freshness_secs":0,"bull_case":"If a volatility-compressed setup resolving upward would accelerate the move, the upside path is the 80–95th percentile band shown here.","base_case":"mildly positive","bear_case":"Downside triggers: a market-wide risk-off move alone can carry the 5–20th percentile band. Treat the 5–20th percentile band as the stress case for sizing, not as a worst case.","catalysts":"Demo synthetic: GRID posts quarterly result inside modelled range","key_risks":"No exceptional risk flags from stored data; normal market risk always applies","assumptions":["Realised volatility stays near its recent level (blended 20.5% annualised).","The scoring tilt persists over the window; no structural break (fraud, delisting, forced guidance cut).","Returns are approximated as lognormal; fat tails are handled by widening, not by point forecasts.","Index regime assumed: sideways.","Close below the 17.17 support band or the strategy stop.","Earnings or regulatory headline that changes forward estimates by more than the modelled window σ.","Volatility expanding beyond 33% annualised invalidates position sizing.","Loss of the fundamental pillars used in the score (guidance cut, covenant breach, auditor change)."],"invalidation":null,"regime_at_time":"sideways","status":"active","invalidated_at":null,"invalidated_reason":null,"data_mode":"demo"},{"id":5486,"security_id":140,"model_id":2,"horizon_code":"5D","generated_at":"2026-10-23 17:35:24","ref_price":16,"bull_low_pct":2,"bull_high_pct":3,"base_low_pct":-1,"base_high_pct":2,"bear_low_pct":-2,"bear_high_pct":-1,"prob_up":0.58,"p10_pct":-2,"p25_pct":-1,"p50_pct":0,"p75_pct":2,"p90_pct":2,"expected_range_low":-1,"expected_range_high":2,"risk_range_low":-2,"risk_range_high":2,"confidence":69,"confidence_basis":"760 bars, blended vol 21%, score 65, coverage 96%%","risk_level":"low","volatility_ann":20.5,"max_hist_drawdown":"-35.5000","sample_size":760,"data_freshness_secs":0,"bull_case":"If a volatility-compressed setup resolving upward would accelerate the move, the upside path is the 80–95th percentile band shown here.","base_case":"mildly positive","bear_case":"Downside triggers: a market-wide risk-off move alone can carry the 5–20th percentile band. Treat the 5–20th percentile band as the stress case for sizing, not as a worst case.","catalysts":"Demo synthetic: GRID posts quarterly result inside modelled range","key_risks":"No exceptional risk flags from stored data; normal market risk always applies","assumptions":["Realised volatility stays near its recent level (blended 20.5% annualised).","The scoring tilt persists over the window; no structural break (fraud, delisting, forced guidance cut).","Returns are approximated as lognormal; fat tails are handled by widening, not by point forecasts.","Index regime assumed: sideways.","Close below the 17.17 support band or the strategy stop.","Earnings or regulatory headline that changes forward estimates by more than the modelled window σ.","Volatility expanding beyond 33% annualised invalidates position sizing.","Loss of the fundamental pillars used in the score (guidance cut, covenant breach, auditor change)."],"invalidation":null,"regime_at_time":"sideways","status":"active","invalidated_at":null,"invalidated_reason":null,"data_mode":"demo"},{"id":5487,"security_id":140,"model_id":2,"horizon_code":"1M","generated_at":"2026-10-23 17:35:24","ref_price":16,"bull_low_pct":4,"bull_high_pct":6,"base_low_pct":-1,"base_high_pct":3,"bear_low_pct":-4,"bear_high_pct":-2,"prob_up":0.58,"p10_pct":-3,"p25_pct":-1,"p50_pct":1,"p75_pct":3,"p90_pct":5,"expected_range_low":-1,"expected_range_high":3,"risk_range_low":-4,"risk_range_high":3,"confidence":69,"confidence_basis":"760 bars, blended vol 21%, score 65, coverage 96%%","risk_level":"low","volatility_ann":20.5,"max_hist_drawdown":"-35.5000","sample_size":760,"data_freshness_secs":0,"bull_case":"If a volatility-compressed setup resolving upward would accelerate the move, the upside path is the 80–95th percentile band shown here.","base_case":"mildly positive","bear_case":"Downside triggers: a market-wide risk-off move alone can carry the 5–20th percentile band. Treat the 5–20th percentile band as the stress case for sizing, not as a worst case.","catalysts":"Demo synthetic: GRID posts quarterly result inside modelled range","key_risks":"No exceptional risk flags from stored data; normal market risk always applies","assumptions":["Realised volatility stays near its recent level (blended 20.5% annualised).","The scoring tilt persists over the window; no structural break (fraud, delisting, forced guidance cut).","Returns are approximated as lognormal; fat tails are handled by widening, not by point forecasts.","Index regime assumed: sideways.","Close below the 17.17 support band or the strategy stop.","Earnings or regulatory headline that changes forward estimates by more than the modelled window σ.","Volatility expanding beyond 33% annualised invalidates position sizing.","Loss of the fundamental pillars used in the score (guidance cut, covenant breach, auditor change)."],"invalidation":null,"regime_at_time":"sideways","status":"active","invalidated_at":null,"invalidated_reason":null,"data_mode":"demo"},{"id":5488,"security_id":140,"model_id":2,"horizon_code":"3M","generated_at":"2026-10-23 17:35:24","ref_price":16,"bull_low_pct":6,"bull_high_pct":10.5,"base_low_pct":-1.5,"base_high_pct":6,"bear_low_pct":-7.5,"bear_high_pct":-3,"prob_up":0.58,"p10_pct":-6,"p25_pct":-1.5,"p50_pct":1.5,"p75_pct":6,"p90_pct":9,"expected_range_low":-1.5,"expected_range_high":6,"risk_range_low":-7.5,"risk_range_high":6,"confidence":69,"confidence_basis":"760 bars, blended vol 21%, score 65, coverage 96%%","risk_level":"low","volatility_ann":20.5,"max_hist_drawdown":"-35.5000","sample_size":760,"data_freshness_secs":0,"bull_case":"If a volatility-compressed setup resolving upward would accelerate the move, the upside path is the 80–95th percentile band shown here.","base_case":"mildly positive","bear_case":"Downside triggers: a market-wide risk-off move alone can carry the 5–20th percentile band. Treat the 5–20th percentile band as the stress case for sizing, not as a worst case.","catalysts":"Demo synthetic: GRID posts quarterly result inside modelled range","key_risks":"No exceptional risk flags from stored data; normal market risk always applies","assumptions":["Realised volatility stays near its recent level (blended 20.5% annualised).","The scoring tilt persists over the window; no structural break (fraud, delisting, forced guidance cut).","Returns are approximated as lognormal; fat tails are handled by widening, not by point forecasts.","Index regime assumed: sideways.","Close below the 17.17 support band or the strategy stop.","Earnings or regulatory headline that changes forward estimates by more than the modelled window σ.","Volatility expanding beyond 33% annualised invalidates position sizing.","Loss of the fundamental pillars used in the score (guidance cut, covenant breach, auditor change)."],"invalidation":null,"regime_at_time":"sideways","status":"active","invalidated_at":null,"invalidated_reason":null,"data_mode":"demo"},{"id":5489,"security_id":140,"model_id":2,"horizon_code":"6M","generated_at":"2026-10-23 17:35:24","ref_price":16,"bull_low_pct":9,"bull_high_pct":15,"base_low_pct":-3,"base_high_pct":7.5,"bear_low_pct":-10.5,"bear_high_pct":-4.5,"prob_up":0.58,"p10_pct":-7.5,"p25_pct":-3,"p50_pct":1.5,"p75_pct":7.5,"p90_pct":12,"expected_range_low":-3,"expected_range_high":7.5,"risk_range_low":-10.5,"risk_range_high":7.5,"confidence":69,"confidence_basis":"760 bars, blended vol 21%, score 65, coverage 96%%","risk_level":"low","volatility_ann":20.5,"max_hist_drawdown":"-35.5000","sample_size":760,"data_freshness_secs":0,"bull_case":"If a volatility-compressed setup resolving upward would accelerate the move, the upside path is the 80–95th percentile band shown here.","base_case":"mildly positive","bear_case":"Downside triggers: a market-wide risk-off move alone can carry the 5–20th percentile band. Treat the 5–20th percentile band as the stress case for sizing, not as a worst case.","catalysts":"Demo synthetic: GRID posts quarterly result inside modelled range","key_risks":"No exceptional risk flags from stored data; normal market risk always applies","assumptions":["Realised volatility stays near its recent level (blended 20.5% annualised).","The scoring tilt persists over the window; no structural break (fraud, delisting, forced guidance cut).","Returns are approximated as lognormal; fat tails are handled by widening, not by point forecasts.","Index regime assumed: sideways.","Close below the 17.17 support band or the strategy stop.","Earnings or regulatory headline that changes forward estimates by more than the modelled window σ.","Volatility expanding beyond 33% annualised invalidates position sizing.","Loss of the fundamental pillars used in the score (guidance cut, covenant breach, auditor change)."],"invalidation":null,"regime_at_time":"sideways","status":"active","invalidated_at":null,"invalidated_reason":null,"data_mode":"demo"},{"id":5490,"security_id":140,"model_id":2,"horizon_code":"12M","generated_at":"2026-10-23 17:35:24","ref_price":16,"bull_low_pct":12.5,"bull_high_pct":22.5,"base_low_pct":-5,"base_high_pct":10,"bear_low_pct":-15,"bear_high_pct":-7.5,"prob_up":0.58,"p10_pct":-12.5,"p25_pct":-5,"p50_pct":2.5,"p75_pct":10,"p90_pct":17.5,"expected_range_low":-5,"expected_range_high":10,"risk_range_low":-15,"risk_range_high":10,"confidence":69,"confidence_basis":"760 bars, blended vol 21%, score 65, coverage 96%%","risk_level":"low","volatility_ann":20.5,"max_hist_drawdown":"-35.5000","sample_size":760,"data_freshness_secs":0,"bull_case":"If a volatility-compressed setup resolving upward would accelerate the move, the upside path is the 80–95th percentile band shown here.","base_case":"mildly positive","bear_case":"Downside triggers: a market-wide risk-off move alone can carry the 5–20th percentile band. Treat the 5–20th percentile band as the stress case for sizing, not as a worst case.","catalysts":"Demo synthetic: GRID posts quarterly result inside modelled range","key_risks":"No exceptional risk flags from stored data; normal market risk always applies","assumptions":["Realised volatility stays near its recent level (blended 20.5% annualised).","The scoring tilt persists over the window; no structural break (fraud, delisting, forced guidance cut).","Returns are approximated as lognormal; fat tails are handled by widening, not by point forecasts.","Index regime assumed: sideways.","Close below the 17.17 support band or the strategy stop.","Earnings or regulatory headline that changes forward estimates by more than the modelled window σ.","Volatility expanding beyond 33% annualised invalidates position sizing.","Loss of the fundamental pillars used in the score (guidance cut, covenant breach, auditor change)."],"invalidation":null,"regime_at_time":"sideways","status":"active","invalidated_at":null,"invalidated_reason":null,"data_mode":"demo"}],"available":true,"as_of":"2026-10-23","mode":"demo","note":"Stored snapshot values; not a real-time feed."}