{
  "updated_at": "2026-09-08T19:01:17.851064",
  "stocks": [
    {
      "symbol": "AVTR",
      "total_score": 72.94,
      "raw_score": 77.32,
      "breakdown": {
        "price_quality": 0.0,
        "volume_quality": 12.0,
        "rvol": 7.32,
        "volume_acceleration": 6.54,
        "price_momentum": 0.59,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.95,
        "spread_liquidity": 4.78,
        "momentum_consistency": 4.14,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 15.29,
        "vwap": 15.1999,
        "vwap_slope": 0.0112,
        "rvol": 2.74,
        "volume_acceleration": 1.65,
        "premarket_volume": 1371821.0,
        "momentum_pct": 0.39,
        "consolidation_tightness_pct": 0.52,
        "distance_from_pm_high_pct": 0.07,
        "extension_from_vwap_pct": 0.59,
        "spread_pct": 0.07
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": true,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 15.3,
      "pm_low": 15.14,
      "health_score": 72.94,
      "health_state": "WATCH"
    },
    {
      "symbol": "BNC",
      "total_score": 72.83,
      "raw_score": 77.2,
      "breakdown": {
        "price_quality": 1.5,
        "volume_quality": 12.0,
        "rvol": 7.51,
        "volume_acceleration": 6.14,
        "price_momentum": 1.44,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.86,
        "spread_liquidity": 3.73,
        "momentum_consistency": 3.03,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 5.2599,
        "vwap": 5.1636,
        "vwap_slope": 0.0082,
        "rvol": 2.82,
        "volume_acceleration": 1.61,
        "premarket_volume": 1407877.0,
        "momentum_pct": 0.96,
        "consolidation_tightness_pct": 1.72,
        "distance_from_pm_high_pct": 0.19,
        "extension_from_vwap_pct": 1.86,
        "spread_pct": 0.38
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": true,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 5.27,
      "pm_low": 5.075,
      "health_score": 72.83,
      "health_state": "WATCH"
    },
    {
      "symbol": "BRSL",
      "total_score": 72.35,
      "raw_score": 76.69,
      "breakdown": {
        "price_quality": 3.9,
        "volume_quality": 12.0,
        "rvol": 1.04,
        "volume_acceleration": 10,
        "price_momentum": 0.34,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.9,
        "spread_liquidity": 4.7,
        "momentum_consistency": 2.81,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 11.1,
        "vwap": 11.0767,
        "vwap_slope": 0.0038,
        "rvol": 0.43,
        "volume_acceleration": 2.29,
        "premarket_volume": 217140.0,
        "momentum_pct": 0.23,
        "consolidation_tightness_pct": 0.23,
        "distance_from_pm_high_pct": 0.13,
        "extension_from_vwap_pct": 0.21,
        "spread_pct": 0.09
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 11.115,
      "pm_low": 11.035,
      "health_score": 72.35,
      "health_state": "WATCH"
    },
    {
      "symbol": "PSQL",
      "total_score": 71.82,
      "raw_score": 76.13,
      "breakdown": {
        "price_quality": 3.29,
        "volume_quality": 12.0,
        "rvol": 0.91,
        "volume_acceleration": 6.26,
        "price_momentum": 4.18,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 7.79,
        "distance_from_pm_high": 5.91,
        "spread_liquidity": 3.79,
        "momentum_consistency": 4.0,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 8.29,
        "vwap": 8.0493,
        "vwap_slope": 0.0433,
        "rvol": 0.38,
        "volume_acceleration": 1.63,
        "premarket_volume": 188764.0,
        "momentum_pct": 2.79,
        "consolidation_tightness_pct": 3.31,
        "distance_from_pm_high_pct": 0.12,
        "extension_from_vwap_pct": 2.99,
        "spread_pct": 0.36
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 8.3,
      "pm_low": 7.785,
      "health_score": 71.82,
      "health_state": "WATCH"
    },
    {
      "symbol": "PCG",
      "total_score": 70.52,
      "raw_score": 74.76,
      "breakdown": {
        "price_quality": 1.5,
        "volume_quality": 12.0,
        "rvol": 12.0,
        "volume_acceleration": 10,
        "price_momentum": 0.0,
        "price_structure": 2.4,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.6,
        "spread_liquidity": 4.78,
        "momentum_consistency": 2.48,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 14.835,
        "vwap": 14.8294,
        "vwap_slope": 0.0026,
        "rvol": 19.04,
        "volume_acceleration": 2.54,
        "premarket_volume": 9520431.0,
        "momentum_pct": -0.07,
        "consolidation_tightness_pct": 0.54,
        "distance_from_pm_high_pct": 0.54,
        "extension_from_vwap_pct": 0.04,
        "spread_pct": 0.07
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": true,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": false,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 14.915,
      "pm_low": 14.78,
      "health_score": 70.52,
      "health_state": "WATCH"
    },
    {
      "symbol": "FMC",
      "total_score": 70.42,
      "raw_score": 74.65,
      "breakdown": {
        "price_quality": 2.1,
        "volume_quality": 12.0,
        "rvol": 0.92,
        "volume_acceleration": 10,
        "price_momentum": 0.12,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.94,
        "spread_liquidity": 4.48,
        "momentum_consistency": 3.09,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 12.9,
        "vwap": 12.8373,
        "vwap_slope": 0.0123,
        "rvol": 0.38,
        "volume_acceleration": 2.03,
        "premarket_volume": 191805.0,
        "momentum_pct": 0.08,
        "consolidation_tightness_pct": 0.47,
        "distance_from_pm_high_pct": 0.08,
        "extension_from_vwap_pct": 0.49,
        "spread_pct": 0.16
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 12.91,
      "pm_low": 12.785,
      "health_score": 70.42,
      "health_state": "WATCH"
    },
    {
      "symbol": "GMRS",
      "total_score": 68.37,
      "raw_score": 72.47,
      "breakdown": {
        "price_quality": 1.5,
        "volume_quality": 12.0,
        "rvol": 0.5,
        "volume_acceleration": 8.74,
        "price_momentum": 0.7,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.84,
        "spread_liquidity": 4.05,
        "momentum_consistency": 3.14,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 14.07,
        "vwap": 13.9616,
        "vwap_slope": 0.0408,
        "rvol": 0.21,
        "volume_acceleration": 1.87,
        "premarket_volume": 104332.0,
        "momentum_pct": 0.46,
        "consolidation_tightness_pct": 0.85,
        "distance_from_pm_high_pct": 0.21,
        "extension_from_vwap_pct": 0.78,
        "spread_pct": 0.28
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 14.1,
      "pm_low": 13.84,
      "health_score": 68.37,
      "health_state": "WATCH"
    },
    {
      "symbol": "OSS",
      "total_score": 67.66,
      "raw_score": 71.72,
      "breakdown": {
        "price_quality": 4.91,
        "volume_quality": 8.3,
        "rvol": 0.33,
        "volume_acceleration": 7.63,
        "price_momentum": 0.46,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.92,
        "spread_liquidity": 3.99,
        "momentum_consistency": 4.18,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 9.91,
        "vwap": 9.8825,
        "vwap_slope": 0.0053,
        "rvol": 0.14,
        "volume_acceleration": 1.76,
        "premarket_volume": 69136.0,
        "momentum_pct": 0.3,
        "consolidation_tightness_pct": 0.3,
        "distance_from_pm_high_pct": 0.1,
        "extension_from_vwap_pct": 0.28,
        "spread_pct": 0.3
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 9.92,
      "pm_low": 9.85,
      "health_score": 67.66,
      "health_state": "WATCH"
    },
    {
      "symbol": "LXU",
      "total_score": 66.45,
      "raw_score": 70.44,
      "breakdown": {
        "price_quality": 3.45,
        "volume_quality": 5.51,
        "rvol": 0.22,
        "volume_acceleration": 9.89,
        "price_momentum": 1.11,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 6,
        "spread_liquidity": 4.13,
        "momentum_consistency": 4.13,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 11.555,
        "vwap": 11.4282,
        "vwap_slope": 0.0248,
        "rvol": 0.09,
        "volume_acceleration": 1.99,
        "premarket_volume": 45921.0,
        "momentum_pct": 0.74,
        "consolidation_tightness_pct": 0.96,
        "distance_from_pm_high_pct": 0.0,
        "extension_from_vwap_pct": 1.11,
        "spread_pct": 0.26
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 11.555,
      "pm_low": 11.38,
      "health_score": 66.45,
      "health_state": "WATCH"
    },
    {
      "symbol": "TRLV",
      "total_score": 65.37,
      "raw_score": 69.29,
      "breakdown": {
        "price_quality": 2.38,
        "volume_quality": 12.0,
        "rvol": 0.93,
        "volume_acceleration": 3.96,
        "price_momentum": 0.48,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.76,
        "spread_liquidity": 4.47,
        "momentum_consistency": 3.31,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 12.62,
        "vwap": 12.5486,
        "vwap_slope": 0.0122,
        "rvol": 0.39,
        "volume_acceleration": 1.4,
        "premarket_volume": 193273.0,
        "momentum_pct": 0.32,
        "consolidation_tightness_pct": 0.4,
        "distance_from_pm_high_pct": 0.32,
        "extension_from_vwap_pct": 0.57,
        "spread_pct": 0.16
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 12.66,
      "pm_low": 12.48,
      "health_score": 65.37,
      "health_state": "WATCH"
    },
    {
      "symbol": "DXC",
      "total_score": 65.28,
      "raw_score": 69.2,
      "breakdown": {
        "price_quality": 3.88,
        "volume_quality": 12.0,
        "rvol": 0.54,
        "volume_acceleration": 3.05,
        "price_momentum": 0.0,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.87,
        "spread_liquidity": 4.7,
        "momentum_consistency": 3.17,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 11.125,
        "vwap": 11.1018,
        "vwap_slope": 0.008,
        "rvol": 0.22,
        "volume_acceleration": 0.88,
        "premarket_volume": 112321.0,
        "momentum_pct": 0.0,
        "consolidation_tightness_pct": 0.22,
        "distance_from_pm_high_pct": 0.18,
        "extension_from_vwap_pct": 0.21,
        "spread_pct": 0.09
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 11.145,
      "pm_low": 11.0609,
      "health_score": 65.28,
      "health_state": "WATCH"
    },
    {
      "symbol": "EVMN",
      "total_score": 65.24,
      "raw_score": 69.15,
      "breakdown": {
        "price_quality": 1.81,
        "volume_quality": 7.31,
        "rvol": 0.29,
        "volume_acceleration": 9.92,
        "price_momentum": 1.03,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.44,
        "spread_liquidity": 3.23,
        "momentum_consistency": 4.12,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 13.19,
        "vwap": 13.1155,
        "vwap_slope": 0.0855,
        "rvol": 0.12,
        "volume_acceleration": 1.99,
        "premarket_volume": 60949.0,
        "momentum_pct": 0.69,
        "consolidation_tightness_pct": 1.07,
        "distance_from_pm_high_pct": 0.75,
        "extension_from_vwap_pct": 0.57,
        "spread_pct": 0.53
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 13.29,
      "pm_low": 12.935,
      "health_score": 65.24,
      "health_state": "WATCH"
    },
    {
      "symbol": "IMMX",
      "total_score": 63.26,
      "raw_score": 67.06,
      "breakdown": {
        "price_quality": 1.77,
        "volume_quality": 12.0,
        "rvol": 1.23,
        "volume_acceleration": 1.77,
        "price_momentum": 0.94,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.79,
        "spread_liquidity": 3.99,
        "momentum_consistency": 3.57,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 13.2325,
        "vwap": 13.181,
        "vwap_slope": 0.0007,
        "rvol": 0.51,
        "volume_acceleration": 0.51,
        "premarket_volume": 256262.0,
        "momentum_pct": 0.63,
        "consolidation_tightness_pct": 0.72,
        "distance_from_pm_high_pct": 0.28,
        "extension_from_vwap_pct": 0.39,
        "spread_pct": 0.3
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 13.27,
      "pm_low": 13.08,
      "health_score": 63.26,
      "health_state": "WATCH"
    },
    {
      "symbol": "CLBT",
      "total_score": 63.24,
      "raw_score": 67.03,
      "breakdown": {
        "price_quality": 3.54,
        "volume_quality": 12.0,
        "rvol": 2.13,
        "volume_acceleration": 10,
        "price_momentum": 0.0,
        "price_structure": 2.4,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.77,
        "spread_liquidity": 4.71,
        "momentum_consistency": 2.48,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 11.465,
        "vwap": 11.4482,
        "vwap_slope": 0.0054,
        "rvol": 0.89,
        "volume_acceleration": 2.02,
        "premarket_volume": 443975.0,
        "momentum_pct": -0.09,
        "consolidation_tightness_pct": 0.22,
        "distance_from_pm_high_pct": 0.3,
        "extension_from_vwap_pct": 0.15,
        "spread_pct": 0.09
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": false,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 11.5,
      "pm_low": 11.39,
      "health_score": 63.24,
      "health_state": "WATCH"
    },
    {
      "symbol": "FPI",
      "total_score": 63.0,
      "raw_score": 66.77,
      "breakdown": {
        "price_quality": 4.11,
        "volume_quality": 12.0,
        "rvol": 1.02,
        "volume_acceleration": 10,
        "price_momentum": 0.28,
        "price_structure": 2.4,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.79,
        "spread_liquidity": 4.69,
        "momentum_consistency": 2.48,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 10.89,
        "vwap": 10.8748,
        "vwap_slope": 0.0365,
        "rvol": 0.43,
        "volume_acceleration": 2.8,
        "premarket_volume": 213467.0,
        "momentum_pct": 0.18,
        "consolidation_tightness_pct": 0.54,
        "distance_from_pm_high_pct": 0.27,
        "extension_from_vwap_pct": 0.14,
        "spread_pct": 0.09
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": false,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 10.92,
      "pm_low": 10.78,
      "health_score": 63.0,
      "health_state": "WATCH"
    },
    {
      "symbol": "ONDS",
      "total_score": 62.67,
      "raw_score": 66.43,
      "breakdown": {
        "price_quality": 2.67,
        "volume_quality": 12.0,
        "rvol": 12.0,
        "volume_acceleration": 3.64,
        "price_momentum": 0.49,
        "price_structure": 12,
        "vwap_structure": 1.2,
        "vwap_slope": 0.8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.61,
        "spread_liquidity": 4.57,
        "momentum_consistency": 3.45,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 7.67,
        "vwap": 7.6759,
        "vwap_slope": -0.0102,
        "rvol": 7.83,
        "volume_acceleration": 1.05,
        "premarket_volume": 3915142.0,
        "momentum_pct": 0.33,
        "consolidation_tightness_pct": 0.39,
        "distance_from_pm_high_pct": 0.52,
        "extension_from_vwap_pct": -0.08,
        "spread_pct": 0.13
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": true,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": false,
        "vwap_rising": false
      },
      "pm_high": 7.71,
      "pm_low": 7.63,
      "health_score": 62.67,
      "health_state": "WATCH"
    },
    {
      "symbol": "KPLT",
      "total_score": 62.36,
      "raw_score": 66.1,
      "breakdown": {
        "price_quality": 4.5,
        "volume_quality": 7.29,
        "rvol": 0.29,
        "volume_acceleration": 2.46,
        "price_momentum": 1.72,
        "price_structure": 12,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 6,
        "spread_liquidity": 3.24,
        "momentum_consistency": 4.6,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 9.5,
        "vwap": 9.2772,
        "vwap_slope": 0.0674,
        "rvol": 0.12,
        "volume_acceleration": 1.25,
        "premarket_volume": 60727.0,
        "momentum_pct": 1.14,
        "consolidation_tightness_pct": 1.16,
        "distance_from_pm_high_pct": 0.0,
        "extension_from_vwap_pct": 2.4,
        "spread_pct": 0.53
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": true,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 9.5,
      "pm_low": 8.98,
      "health_score": 62.36,
      "health_state": "WATCH"
    },
    {
      "symbol": "GDYN",
      "total_score": 62.34,
      "raw_score": 66.08,
      "breakdown": {
        "price_quality": 2.85,
        "volume_quality": 12.0,
        "rvol": 0.67,
        "volume_acceleration": 10,
        "price_momentum": 0.38,
        "price_structure": 2.4,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.95,
        "spread_liquidity": 4.58,
        "momentum_consistency": 3.24,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 7.85,
        "vwap": 7.7945,
        "vwap_slope": 0.0314,
        "rvol": 0.28,
        "volume_acceleration": 6.72,
        "premarket_volume": 139989.0,
        "momentum_pct": 0.26,
        "consolidation_tightness_pct": 0.44,
        "distance_from_pm_high_pct": 0.06,
        "extension_from_vwap_pct": 0.71,
        "spread_pct": 0.13
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": false,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 7.855,
      "pm_low": 7.685,
      "health_score": 62.34,
      "health_state": "WATCH"
    },
    {
      "symbol": "IHS",
      "total_score": 61.17,
      "raw_score": 64.84,
      "breakdown": {
        "price_quality": 3.46,
        "volume_quality": 12.0,
        "rvol": 0.53,
        "volume_acceleration": 10,
        "price_momentum": 0.08,
        "price_structure": 2.4,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.96,
        "spread_liquidity": 4.61,
        "momentum_consistency": 1.8,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 8.465,
        "vwap": 8.4569,
        "vwap_slope": 0.004,
        "rvol": 0.22,
        "volume_acceleration": 2.81,
        "premarket_volume": 109395.0,
        "momentum_pct": 0.06,
        "consolidation_tightness_pct": 0.11,
        "distance_from_pm_high_pct": 0.06,
        "extension_from_vwap_pct": 0.1,
        "spread_pct": 0.12
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": false,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": false,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 8.47,
      "pm_low": 8.44,
      "health_score": 61.17,
      "health_state": "WATCH"
    },
    {
      "symbol": "ALMS",
      "total_score": 60.85,
      "raw_score": 64.5,
      "breakdown": {
        "price_quality": 4.37,
        "volume_quality": 12.0,
        "rvol": 4.15,
        "volume_acceleration": 4.39,
        "price_momentum": 0.0,
        "price_structure": 2.4,
        "vwap_structure": 8,
        "vwap_slope": 8,
        "consolidation_quality": 8,
        "distance_from_pm_high": 5.51,
        "spread_liquidity": 4.37,
        "momentum_consistency": 3.31,
        "extension_risk_penalty": 0.0
      },
      "metrics": {
        "price": 10.63,
        "vwap": 10.5504,
        "vwap_slope": 0.0105,
        "rvol": 1.55,
        "volume_acceleration": 1.44,
        "premarket_volume": 777303.0,
        "momentum_pct": 0.0,
        "consolidation_tightness_pct": 0.28,
        "distance_from_pm_high_pct": 0.65,
        "extension_from_vwap_pct": 0.75,
        "spread_pct": 0.19
      },
      "flags": {
        "meets_min_volume": true,
        "meets_min_rvol": true,
        "spread_ok": true,
        "extended": false,
        "hh_hl_structure": false,
        "price_above_vwap": true,
        "vwap_rising": true
      },
      "pm_high": 10.7,
      "pm_low": 10.26,
      "health_score": 60.85,
      "health_state": "WATCH"
    }
  ]
}