const STOCKS = [{"ticker": "VUZI", "name": "Vuzix Corporation  - Common Stock", "sector": "Technology", "industry": "Consumer Electronics", "v8": 83.95, "category": "path1", "mcap": 226, "rev": 6.3, "opi": -23.2, "prices": [2.84, 2.66, 2.71, 2.88, 2.86], "daily_returns": [0.0, -6.34, -4.58, 1.41, 0.7], "return_pct": 0.7}, {"ticker": "ABAT", "name": "American Battery Technology Company - Common Stock", "sector": "Industrials", "industry": "Waste Management", "v8": 77.05, "category": "core5", "mcap": 431, "rev": 9.5, "opi": -19.6, "prices": [3.27, 3.22, 3.21, 3.42, 3.09], "daily_returns": [0.0, -1.53, -1.83, 4.43, -5.5], "return_pct": -5.5}, {"ticker": "ESPR", "name": "Esperion Therapeutics, Inc. - Common Stock", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 75.9, "category": "path1", "mcap": 803, "rev": 403.1, "opi": 204.0, "prices": [3.11, 3.12, 3.12, 3.15, 3.14], "daily_returns": [0.0, 0.32, 0.32, 1.29, 0.96], "return_pct": 0.96}, {"ticker": "TRX", "name": "TRX Gold Corporation Common Stock", "sector": "Basic Materials", "industry": "Gold", "v8": 73.6, "category": "top10", "mcap": 332, "rev": 95.2, "opi": -21.0, "prices": [1.14, 1.11, 1.12, 1.24, 1.23], "daily_returns": [0.0, -2.63, -1.75, 8.77, 7.89], "return_pct": 7.89}, {"ticker": "KMTS", "name": "Kestra Medical Technologies, Ltd. - Common Stock", "sector": "Healthcare", "industry": "Medical Instruments & Supplies", "v8": 71.5, "category": "top10", "mcap": 1190, "rev": 83.7, "opi": -118.5, "prices": [21.82, 20.55, 20.25, 20.71, 21.52], "daily_returns": [0.0, -5.82, -7.2, -5.09, -1.37], "return_pct": -1.37}, {"ticker": "TEO", "name": "Telecom Argentina SA", "sector": "Communication Services", "industry": "Telecom Services", "v8": 70.4, "category": "path1", "mcap": 1480, "rev": 8328814.0, "opi": 583017.0, "prices": [11.85, 11.78, 11.63, 12.29, 11.99], "daily_returns": [0.0, -0.59, -1.86, 3.71, 1.18], "return_pct": 1.18}, {"ticker": "NUVB", "name": "Nuvation Bio Inc. Class A Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 69.3, "category": "core5", "mcap": 1620, "rev": 143.0, "opi": 6.7, "prices": [4.49, 4.41, 4.83, 5.04, 4.81], "daily_returns": [0.0, -1.78, 7.57, 12.25, 7.13], "return_pct": 7.13}, {"ticker": "CPIX", "name": "Cumberland Pharmaceuticals Inc. - Common Stock", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 69.0, "category": "path1", "mcap": 68, "rev": 41.9, "opi": -14.4, "prices": [4.36, 4.53, 4.55, 4.37, 4.29], "daily_returns": [0.0, 3.9, 4.36, 0.23, -1.61], "return_pct": -1.61}, {"ticker": "ANGX", "name": "Angel Studios, Inc. Class A Common Stock", "sector": "Communication Services", "industry": "Entertainment", "v8": 68.2, "category": "path1", "mcap": 562, "rev": 389.2, "opi": -9.0, "prices": [3.15, 3.03, 3.15, 3.04, 2.99], "daily_returns": [0.0, -3.81, 0.0, -3.49, -5.08], "return_pct": -5.08}, {"ticker": "ELVA", "name": "Electrovaya Inc. - Common Shares", "sector": "Industrials", "industry": "Electrical Equipment & Parts", "v8": 67.85, "category": "path1", "mcap": 471, "rev": 63.8, "opi": 7.4, "prices": [9.5, 9.45, 10.23, 10.48, 9.78], "daily_returns": [0.0, -0.53, 7.68, 10.32, 2.95], "return_pct": 2.95}, {"ticker": "NRGV", "name": "Energy Vault Holdings, Inc. Common Stock", "sector": "Utilities", "industry": "Utilities - Renewable", "v8": 67.1, "category": "core5", "mcap": 854, "rev": 217.0, "opi": -240.0, "prices": [4.38, 4.44, 5.03, 4.21, 4.15], "daily_returns": [0.0, 1.37, 14.84, -3.88, -5.25], "return_pct": -5.25}, {"ticker": "VRCA", "name": "Verrica Pharmaceuticals Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 65.55, "category": "path1", "mcap": 114, "rev": 35.6, "opi": -48.5, "prices": [6.27, 6.36, 7.16, 8.43, 8.24], "daily_returns": [0.0, 1.44, 14.19, 34.45, 31.42], "return_pct": 31.42}, {"ticker": "BKV", "name": "BKV Corp", "sector": "Energy", "industry": "Oil & Gas E&P", "v8": 65.0, "category": "path1", "mcap": 3380, "rev": 893.8, "opi": 397.1, "prices": [31.32, 32.1, 32.16, 29.85, 28.95], "daily_returns": [0.0, 2.49, 2.68, -4.69, -7.57], "return_pct": -7.57}, {"ticker": "LPTH", "name": "LightPath Technologies, Inc. - Class A Common Stoc", "sector": "Technology", "industry": "Electronic Components", "v8": 64.9, "category": "path1", "mcap": 695, "rev": 52.8, "opi": -3.4, "prices": [13.7, 12.33, 12.1, 12.87, 12.03], "daily_returns": [0.0, -10.0, -11.68, -6.06, -12.19], "return_pct": -12.19}, {"ticker": "BBNX", "name": "Beta Bionics, Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 63.25, "category": "path1", "mcap": 449, "rev": 110.2, "opi": -96.9, "prices": [10.29, 10.22, 10.01, 10.57, 10.5], "daily_returns": [0.0, -0.68, -2.72, 2.72, 2.04], "return_pct": 2.04}, {"ticker": "VOXR", "name": "Vox Royalty Corp. - common stock", "sector": "Basic Materials", "industry": "Other Precious Metals & Mining", "v8": 63.25, "category": "path1", "mcap": 371, "rev": 16.6, "opi": 1.9, "prices": [5.34, 5.31, 5.34, 5.83, 5.83], "daily_returns": [0.0, -0.56, 0.0, 9.18, 9.08], "return_pct": 9.08}, {"ticker": "CDNA", "name": "CareDx, Inc. - Common Stock", "sector": "Healthcare", "industry": "Diagnostics & Research", "v8": 62.7, "category": "path1", "mcap": 1070, "rev": 412.8, "opi": 6.3, "prices": [21.5, 20.96, 20.7, 20.95, 21.44], "daily_returns": [0.0, -2.51, -3.72, -2.56, -0.28], "return_pct": -0.28}, {"ticker": "GROY", "name": "Gold Royalty Corp. Common Shares", "sector": "Basic Materials", "industry": "Gold", "v8": 62.7, "category": "path1", "mcap": 798, "rev": 15.6, "opi": 0.4, "prices": [3.44, 3.44, 3.44, 3.52, 3.6], "daily_returns": [0.0, 0.0, 0.0, 2.33, 4.65], "return_pct": 4.65}, {"ticker": "AAOI", "name": "Applied Optoelectronics Inc", "sector": "Technology", "industry": "Communication Equipment", "v8": 62.0, "category": "path1", "mcap": 14490, "rev": 455.7, "opi": -39.0, "prices": [183.51, 172.98, 180.57, 178.54, 157.55], "daily_returns": [0.0, -5.74, -1.6, -2.71, -14.15], "return_pct": -14.15}, {"ticker": "AUGO", "name": "Aura Minerals Inc", "sector": "Basic Materials", "industry": "Gold", "v8": 62.0, "category": "path1", "mcap": 6880, "rev": 921.7, "opi": 519.7, "prices": [82.16, 81.7, 80.7, 89.7, 81.07], "daily_returns": [0.0, -0.56, -1.78, 9.18, -1.33], "return_pct": -1.33}, {"ticker": "GENI", "name": "Genius Sports Limited Ordinary Shares", "sector": "Communication Services", "industry": "Internet Content & Information", "v8": 61.6, "category": "path1", "mcap": 1120, "rev": 669.5, "opi": -121.4, "prices": [4.35, 4.5, 4.33, 4.4, 4.78], "daily_returns": [0.0, 3.45, -0.46, 1.15, 9.89], "return_pct": 9.89}, {"ticker": "NTRA", "name": "Natera Inc", "sector": "Healthcare", "industry": "Diagnostics & Research", "v8": 61.0, "category": "path1", "mcap": 29380, "rev": 2306.1, "opi": -79.0, "prices": [207.28, 211.56, 206.77, 215.09, 219.82], "daily_returns": [0.0, 2.06, -0.25, 3.77, 6.05], "return_pct": 6.05}, {"ticker": "CARL", "name": "Carlsmed, Inc. - Common Stock", "sector": "Healthcare", "industry": "Health Information Services", "v8": 60.95, "category": "path1", "mcap": 243, "rev": 56.4, "opi": -32.5, "prices": [9.48, 9.09, 8.92, 9.84, 9.75], "daily_returns": [0.0, -4.11, -5.91, 3.8, 2.85], "return_pct": 2.85}, {"ticker": "IDR", "name": "Idaho Strategic Resources, Inc. Common Stock", "sector": "Basic Materials", "industry": "Gold", "v8": 60.5, "category": "path1", "mcap": 704, "rev": 42.4, "opi": 26.6, "prices": [43.73, 42.71, 43.91, 48.66, 47.54], "daily_returns": [0.0, -2.33, 0.41, 11.27, 8.71], "return_pct": 8.71}, {"ticker": "AISP", "name": "Airship AI Holdings, Inc - Class A Common Stock", "sector": "Technology", "industry": "Software - Infrastructure", "v8": 59.8, "category": "path1", "mcap": 84, "rev": 15.3, "opi": -1.4, "prices": [2.44, 2.5, 2.39, 2.56, 2.52], "daily_returns": [0.0, 2.46, -2.05, 4.92, 3.28], "return_pct": 3.28}, {"ticker": "ALTI", "name": "AlTi Global, Inc. - Class A Common Stock", "sector": "Financial", "industry": "Asset Management", "v8": 59.4, "category": "path1", "mcap": 542, "rev": 255.0, "opi": -20.1, "prices": [3.6, 3.51, 3.61, 3.76, 3.82], "daily_returns": [0.0, -2.5, 0.28, 4.44, 6.11], "return_pct": 6.11}, {"ticker": "AXSM", "name": "Axsome Therapeutics Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 59.0, "category": "path1", "mcap": 10560, "rev": 708.2, "opi": -232.5, "prices": [206.53, 223.7, 223.06, 222.63, 220.22], "daily_returns": [0.0, 8.31, 8.0, 7.8, 6.63], "return_pct": 6.63}, {"ticker": "PGEN", "name": "Precigen, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 58.3, "category": "path1", "mcap": 1540, "rev": 9.7, "opi": -46.0, "prices": [4.08, 4.14, 4.33, 4.4, 4.15], "daily_returns": [0.0, 1.47, 6.13, 7.84, 1.72], "return_pct": 1.72}, {"ticker": "LNZA", "name": "LanzaTech Global, Inc. - Common Stock", "sector": "Industrials", "industry": "Waste Management", "v8": 57.5, "category": "path1", "mcap": 218, "rev": 55.8, "opi": -0.4, "prices": [24.78, 22.97, 22.31, 22.18, 22.65], "daily_returns": [0.0, -7.3, -9.97, -10.49, -8.6], "return_pct": -8.6}, {"ticker": "AAUC", "name": "Allied Gold Corp", "sector": "Basic Materials", "industry": "Gold", "v8": 57.0, "category": "path1", "mcap": 3630, "rev": 1331.8, "opi": 485.6, "prices": [29.14, 28.29, 29.46, 29.97, 29.16], "daily_returns": [0.0, -2.92, 1.1, 2.85, 0.07], "return_pct": 0.07}, {"ticker": "APLD", "name": "Applied Digital Corp", "sector": "Technology", "industry": "Information Technology Service", "v8": 56.0, "category": "path1", "mcap": 9590, "rev": 319.3, "opi": -65.3, "prices": [33.55, 35.63, 39.88, 44.24, 41.53], "daily_returns": [0.0, 6.2, 18.87, 31.86, 23.79], "return_pct": 23.79}, {"ticker": "B", "name": "Barrick Mining Corp", "sector": "Basic Materials", "industry": "Gold", "v8": 56.0, "category": "path1", "mcap": 65040, "rev": 16956.0, "opi": 8914.8, "prices": [38.82, 38.34, 38.72, 41.58, 41.84], "daily_returns": [0.0, -1.24, -0.26, 7.11, 7.78], "return_pct": 7.78}, {"ticker": "ENLT", "name": "Enlight Renewable Energy Ltd", "sector": "Utilities", "industry": "Utilities - Renewable", "v8": 56.0, "category": "path1", "mcap": 12720, "rev": 535.3, "opi": 293.6, "prices": [91.35, 88.8, 90.7, 93.6, 85.09], "daily_returns": [0.0, -2.79, -0.71, 2.46, -6.85], "return_pct": -6.85}, {"ticker": "DCTH", "name": "Delcath Systems, Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 55.2, "category": "path1", "mcap": 394, "rev": 85.2, "opi": -9.0, "prices": [10.8, 11.02, 11.53, 11.26, 11.24], "daily_returns": [0.0, 2.04, 6.76, 4.26, 4.07], "return_pct": 4.07}, {"ticker": "OZ", "name": "Belpointe PREP, LLC Class A Units", "sector": "Real Estate", "industry": "Real Estate - Development", "v8": 55.2, "category": "path1", "mcap": 206, "rev": 9.2, "opi": -19.6, "prices": [50.48, 51.05, 50.82, 50.83, 50.91], "daily_returns": [0.0, 1.14, 0.69, 0.69, 0.86], "return_pct": 0.86}, {"ticker": "EXK", "name": "Endeavour Silver Corp", "sector": "Basic Materials", "industry": "Silver", "v8": 55.0, "category": "path1", "mcap": 2720, "rev": 467.5, "opi": 90.6, "prices": [9.2, 9.09, 8.59, 9.31, 10.15], "daily_returns": [0.0, -1.2, -6.63, 1.2, 10.33], "return_pct": 10.33}, {"ticker": "GH", "name": "Guardant Health Inc", "sector": "Healthcare", "industry": "Diagnostics & Research", "v8": 55.0, "category": "path1", "mcap": 11490, "rev": 982.0, "opi": -421.4, "prices": [87.6, 91.17, 89.52, 92.25, 92.26], "daily_returns": [0.0, 4.08, 2.19, 5.31, 5.32], "return_pct": 5.32}, {"ticker": "HL", "name": "Hecla Mining Co", "sector": "Basic Materials", "industry": "Other Precious Metals & Mining", "v8": 55.0, "category": "path1", "mcap": 12110, "rev": 1573.1, "opi": 870.4, "prices": [18.06, 17.58, 17.05, 18.15, 18.07], "daily_returns": [0.0, -2.66, -5.59, 0.5, 0.06], "return_pct": 0.06}, {"ticker": "KGC", "name": "Kinross Gold Corp", "sector": "Basic Materials", "industry": "Gold", "v8": 55.0, "category": "path1", "mcap": 35390, "rev": 7961.3, "opi": 4385.6, "prices": [29.55, 28.89, 28.81, 30.78, 30.42], "daily_returns": [0.0, -2.23, -2.5, 4.16, 2.94], "return_pct": 2.94}, {"ticker": "COYA", "name": "Coya Therapeutics, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 54.05, "category": "path1", "mcap": 98, "rev": 7.9, "opi": -8.5, "prices": [4.17, 4.26, 4.25, 4.24, 4.2], "daily_returns": [0.0, 2.16, 1.92, 1.68, 0.72], "return_pct": 0.72}, {"ticker": "TLSI", "name": "TriSalus Life Sciences, Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 54.05, "category": "path1", "mcap": 282, "rev": 45.2, "opi": -11.2, "prices": [4.39, 4.45, 4.61, 4.55, 4.46], "daily_returns": [0.0, 1.37, 5.01, 3.64, 1.59], "return_pct": 1.59}, {"ticker": "MU", "name": "Micron Technology Inc", "sector": "Technology", "industry": "Semiconductors", "v8": 54.0, "category": "path1", "mcap": 611470, "rev": 58119.0, "opi": 39302.4, "prices": [542.21, 576.45, 640.2, 666.59, 646.63], "daily_returns": [0.0, 6.31, 18.07, 22.94, 19.26], "return_pct": 19.26}, {"ticker": "SSII", "name": "SS Innovations International Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 53.9, "category": "path1", "mcap": 811, "rev": 42.5, "opi": -2.1, "prices": [3.99, 4.05, 3.9, 4.07, 3.93], "daily_returns": [0.0, 1.5, -2.26, 2.01, -1.5], "return_pct": -1.5}, {"ticker": "INSM", "name": "Insmed Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 53.0, "category": "path1", "mcap": 28760, "rev": 606.4, "opi": -573.9, "prices": [133.26, 140.01, 139.44, 137.09, 105.0], "daily_returns": [0.0, 5.07, 4.64, 2.87, -21.21], "return_pct": -21.21}, {"ticker": "SVM", "name": "Silvercorp Metals Inc", "sector": "Basic Materials", "industry": "Silver", "v8": 53.0, "category": "path1", "mcap": 2700, "rev": 365.9, "opi": 199.4, "prices": [12.26, 12.17, 12.04, 13.01, 13.45], "daily_returns": [0.0, -0.73, -1.79, 6.12, 9.71], "return_pct": 9.71}, {"ticker": "NSPR", "name": "InspireMD Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 52.9, "category": "path1", "mcap": 52, "rev": 9.0, "opi": -34.5, "prices": [1.15, 1.17, 1.1, 1.16, 1.16], "daily_returns": [0.0, 1.74, -4.35, 0.87, 0.87], "return_pct": 0.87}, {"ticker": "SI", "name": "Shoulder Innovations, Inc. Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 52.9, "category": "path1", "mcap": 265, "rev": null, "opi": null, "prices": [13.51, 13.03, 12.92, 12.89, 12.77], "daily_returns": [0.0, -3.55, -4.37, -4.59, -5.48], "return_pct": -5.48}, {"ticker": "AU", "name": "AngloGold Ashanti Plc", "sector": "Basic Materials", "industry": "Gold", "v8": 52.0, "category": "path1", "mcap": 46840, "rev": 9893.0, "opi": 4753.0, "prices": [92.76, 90.69, 90.9, 98.6, 100.23], "daily_returns": [0.0, -2.23, -2.01, 6.3, 8.05], "return_pct": 8.05}, {"ticker": "RKLB", "name": "Rocket Lab Corp", "sector": "Industrials", "industry": "Aerospace & Defense", "v8": 52.0, "category": "path1", "mcap": 45380, "rev": 601.8, "opi": -171.0, "prices": [78.81, 80.31, 78.76, 84.65, 78.58], "daily_returns": [0.0, 1.9, -0.06, 7.41, -0.29], "return_pct": -0.29}, {"ticker": "WDC", "name": "Western Digital Corp", "sector": "Technology", "industry": "Computer Hardware", "v8": 52.0, "category": "path1", "mcap": 146300, "rev": 11777.0, "opi": 4358.5, "prices": [431.52, 442.36, 465.26, 483.15, 463.91], "daily_returns": [0.0, 2.51, 7.82, 11.96, 7.51], "return_pct": 7.51}, {"ticker": "AKBA", "name": "Akebia Therapeutics, Inc. - Common Stock", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 51.75, "category": "path1", "mcap": 398, "rev": 236.2, "opi": -24.8, "prices": [1.4, 1.5, 1.45, 1.48, 1.18], "daily_returns": [0.0, 7.14, 3.57, 5.71, -15.71], "return_pct": -15.71}, {"ticker": "SKLZ", "name": "Skillz Inc. Class A Common Stock", "sector": "Communication Services", "industry": "Electronic Gaming & Multimedia", "v8": 51.75, "category": "path1", "mcap": 111, "rev": 104.5, "opi": -56.4, "prices": [7.66, 6.8, 6.67, 6.35, 6.92], "daily_returns": [0.0, -11.23, -12.92, -17.1, -9.66], "return_pct": -9.66}, {"ticker": "HSHP", "name": "Himalaya Shipping Ltd. Common Shares", "sector": "Industrials", "industry": "Marine Shipping", "v8": 51.7, "category": "path1", "mcap": 714, "rev": 131.9, "opi": 81.5, "prices": [13.86, 14.17, 15.42, 14.95, 15.79], "daily_returns": [0.0, 2.24, 11.26, 7.86, 13.92], "return_pct": 13.92}, {"ticker": "TSHA", "name": "Taysha Gene Therapies, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 51.7, "category": "path1", "mcap": 1900, "rev": 7.5, "opi": -132.6, "prices": [6.33, 6.64, 6.94, 6.98, 6.67], "daily_returns": [0.0, 4.9, 9.64, 10.27, 5.37], "return_pct": 5.37}, {"ticker": "ARQT", "name": "Arcutis Biotherapeutics Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 51.0, "category": "path1", "mcap": 2920, "rev": 376.1, "opi": 53.4, "prices": [23.35, 23.49, 23.42, 24.17, 20.66], "daily_returns": [0.0, 0.6, 0.3, 3.51, -11.52], "return_pct": -11.52}, {"ticker": "MRP", "name": "Millrose Properties Inc", "sector": "Real Estate", "industry": "REIT - Residential", "v8": 51.0, "category": "path1", "mcap": 4680, "rev": 712.7, "opi": 607.2, "prices": [30.37, 29.55, 30.09, 28.19, 26.9], "daily_returns": [0.0, -2.7, -0.92, -7.18, -11.43], "return_pct": -11.43}, {"ticker": "AIP", "name": "Arteris, Inc.  - Common Stock", "sector": "Technology", "industry": "Semiconductors", "v8": 50.6, "category": "path1", "mcap": 1380, "rev": 70.6, "opi": -29.7, "prices": [28.95, 28.85, 30.13, 31.41, 29.75], "daily_returns": [0.0, -0.35, 4.08, 8.5, 2.76], "return_pct": 2.76}, {"ticker": "FTCI", "name": "FTC Solar, Inc. - Common Stock", "sector": "Technology", "industry": "Solar", "v8": 50.6, "category": "path1", "mcap": 58, "rev": 99.7, "opi": -16.6, "prices": [4.93, 5.17, 3.45, 4.0, 4.27], "daily_returns": [0.0, 4.77, -30.02, -18.86, -13.39], "return_pct": -13.39}, {"ticker": "WVE", "name": "Wave Life Sciences Ltd. - Ordinary Shares", "sector": "Healthcare", "industry": "Biotechnology", "v8": 50.6, "category": "path1", "mcap": 1400, "rev": 71.8, "opi": -58.8, "prices": [7.32, 7.47, 7.18, 7.29, 7.24], "daily_returns": [0.0, 2.05, -1.91, -0.41, -1.09], "return_pct": -1.09}, {"ticker": "AMD", "name": "Advanced Micro Devices Inc", "sector": "Technology", "industry": "Semiconductors", "v8": 50.0, "category": "path1", "mcap": 587800, "rev": 37454.0, "opi": 5391.9, "prices": [360.54, 341.54, 355.26, 421.39, 408.46], "daily_returns": [0.0, -5.27, -1.46, 16.88, 13.29], "return_pct": 13.29}, {"ticker": "BBIO", "name": "BridgeBio Pharma Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 50.0, "category": "path1", "mcap": 13420, "rev": 502.1, "opi": -418.2, "prices": [68.56, 68.99, 68.78, 68.09, 67.45], "daily_returns": [0.0, 0.63, 0.32, -0.69, -1.62], "return_pct": -1.62}, {"ticker": "POET", "name": "POET Technologies Inc. - Common Shares", "sector": "Technology", "industry": "Semiconductors", "v8": 49.5, "category": "path1", "mcap": 1420, "rev": 1.1, "opi": -44.9, "prices": [7.31, 7.11, 9.21, 9.72, 9.58], "daily_returns": [0.0, -2.74, 25.99, 32.97, 31.05], "return_pct": 31.05}, {"ticker": "VRDN", "name": "Viridian Therapeutics, Inc.  - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 49.5, "category": "path1", "mcap": 1800, "rev": 70.9, "opi": -58428.9, "prices": [13.42, 14.06, 18.75, 17.53, 17.0], "daily_returns": [0.0, 4.77, 39.72, 30.63, 26.68], "return_pct": 26.68}, {"ticker": "WGS", "name": "GeneDx Holdings Corp. - Class A Common Stock", "sector": "Healthcare", "industry": "Diagnostics & Research", "v8": 49.5, "category": "path1", "mcap": 1020, "rev": 442.7, "opi": -113.4, "prices": [65.38, 67.93, 34.51, 34.71, 40.5], "daily_returns": [0.0, 3.9, -47.22, -46.91, -38.05], "return_pct": -38.05}, {"ticker": "AMPG", "name": "Amplitech Group, Inc. - Common Stock", "sector": "Technology", "industry": "Communication Equipment", "v8": 49.45, "category": "path1", "mcap": 54, "rev": 25.2, "opi": -18.5, "prices": [2.05, 2.2, 2.27, 2.3, 2.14], "daily_returns": [0.0, 7.32, 10.73, 12.2, 4.39], "return_pct": 4.39}, {"ticker": "ANVS", "name": "Annovis Bio, Inc. Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 49.45, "category": "path1", "mcap": 81, "rev": null, "opi": null, "prices": [2.0, 2.28, 2.27, 2.4, 2.26], "daily_returns": [0.0, 14.0, 13.5, 20.0, 13.0], "return_pct": 13.0}, {"ticker": "CCCC", "name": "C4 Therapeutics, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 49.45, "category": "path1", "mcap": 287, "rev": 35.9, "opi": -75.5, "prices": [2.92, 3.04, 2.97, 2.93, 2.98], "daily_returns": [0.0, 3.94, 1.71, 0.34, 2.05], "return_pct": 2.05}, {"ticker": "OWLT", "name": "Owlet, Inc. Class A Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 49.45, "category": "path1", "mcap": 140, "rev": 105.7, "opi": -19.5, "prices": [4.84, 4.8, 4.96, 5.2, 4.86], "daily_returns": [0.0, -0.83, 2.48, 7.44, 0.41], "return_pct": 0.41}, {"ticker": "SCYX", "name": "SCYNEXIS, Inc. - Common Stock", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 49.45, "category": "path1", "mcap": 79, "rev": 20.6, "opi": 11.6, "prices": [0.99, 0.98, 0.94, 0.98, 0.96], "daily_returns": [0.0, -0.61, -4.75, -0.81, -3.3], "return_pct": -3.3}, {"ticker": "CGAU", "name": "Centerra Gold Inc", "sector": "Basic Materials", "industry": "Gold", "v8": 49.0, "category": "path1", "mcap": 3450, "rev": null, "opi": null, "prices": [17.27, 16.69, 16.83, 18.01, 17.79], "daily_returns": [0.0, -3.36, -2.55, 4.28, 3.01], "return_pct": 3.01}, {"ticker": "IAG", "name": "Iamgold Corp", "sector": "Basic Materials", "industry": "Gold", "v8": 49.0, "category": "path1", "mcap": 9770, "rev": 3405.8, "opi": 1799.9, "prices": [16.59, 16.31, 16.31, 18.5, 18.34], "daily_returns": [0.0, -1.69, -1.69, 11.51, 10.55], "return_pct": 10.55}, {"ticker": "CRDF", "name": "Cardiff Oncology, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 48.3, "category": "path1", "mcap": 113, "rev": 0.6, "opi": -19.1, "prices": [1.71, 1.65, 1.61, 1.68, 1.6], "daily_returns": [0.0, -3.51, -5.85, -1.75, -6.43], "return_pct": -6.43}, {"ticker": "LCTX", "name": "Lineage Cell Therapeutics, Inc. Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 48.3, "category": "path1", "mcap": 372, "rev": 14.6, "opi": -14.4, "prices": [1.53, 1.42, 1.46, 1.43, 1.37], "daily_returns": [0.0, -7.19, -4.58, -6.54, -10.46], "return_pct": -10.46}, {"ticker": "PRE", "name": "Prenetics Global Limited - Class A Ordinary Share", "sector": "Healthcare", "industry": "Diagnostics & Research", "v8": 48.3, "category": "path1", "mcap": 277, "rev": 92.4, "opi": -30.7, "prices": [17.02, 16.5, 16.73, 15.9, 15.87], "daily_returns": [0.0, -3.06, -1.7, -6.58, -6.76], "return_pct": -6.76}, {"ticker": "SANG", "name": "Sangoma Technologies Corporation - Common Shares", "sector": "Technology", "industry": "Software - Infrastructure", "v8": 48.3, "category": "path1", "mcap": 144, "rev": 219.7, "opi": -7.3, "prices": [4.31, 4.31, 4.15, 4.26, 4.26], "daily_returns": [0.0, 0.0, -3.71, -1.16, -1.16], "return_pct": -1.16}, {"ticker": "MNTN", "name": "MNTN, Inc. Class A Common Stock", "sector": "Technology", "industry": "Software - Application", "v8": 47.3, "category": "path1", "mcap": 793, "rev": 299.3, "opi": 38.9, "prices": [10.14, 10.58, 11.36, 8.77, 9.18], "daily_returns": [0.0, 4.34, 12.03, -13.51, -9.47], "return_pct": -9.47}, {"ticker": "RSKD", "name": "Riskified Ltd. Class A Ordinary Shares", "sector": "Technology", "industry": "Software - Application", "v8": 47.3, "category": "path1", "mcap": 718, "rev": 344.6, "opi": 2.0, "prices": [4.75, 4.84, 4.82, 4.75, 4.83], "daily_returns": [0.0, 1.89, 1.47, 0.0, 1.68], "return_pct": 1.68}, {"ticker": "SATL", "name": "Satellogic Inc. - Class A Common Stock", "sector": "Industrials", "industry": "Aerospace & Defense", "v8": 47.3, "category": "path1", "mcap": 1000, "rev": 17.7, "opi": -20.2, "prices": [7.18, 7.06, 7.0, 7.14, 6.62], "daily_returns": [0.0, -1.67, -2.51, -0.56, -7.8], "return_pct": -7.8}, {"ticker": "APYX", "name": "Apyx Medical Corporation - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 47.15, "category": "path1", "mcap": 118, "rev": 52.8, "opi": 0.0, "prices": [3.06, 2.85, 2.79, 2.92, 3.56], "daily_returns": [0.0, -6.86, -8.82, -4.58, 16.34], "return_pct": 16.34}, {"ticker": "PYXS", "name": "Pyxis Oncology, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 47.15, "category": "path1", "mcap": 121, "rev": 13.9, "opi": -22.1, "prices": [1.72, 1.76, 1.83, 2.3, 2.26], "daily_returns": [0.0, 2.33, 6.4, 33.72, 31.4], "return_pct": 31.4}, {"ticker": "STRW", "name": "Strawberry Fields REIT, Inc. Common Stock", "sector": "Real Estate", "industry": "REIT - Healthcare Facilities", "v8": 47.15, "category": "path1", "mcap": 172, "rev": 155.0, "opi": 81.2, "prices": [13.16, 12.83, 12.95, 12.75, 12.95], "daily_returns": [0.0, -2.51, -1.6, -3.12, -1.6], "return_pct": -1.6}, {"ticker": "TG", "name": "Tredegar Corporation Common Stock", "sector": "Industrials", "industry": "Metal Fabrication", "v8": 47.15, "category": "path1", "mcap": 340, "rev": 722.8, "opi": 52.1, "prices": [10.0, 9.51, 9.77, 10.09, 10.2], "daily_returns": [0.0, -4.9, -2.3, 0.9, 2.0], "return_pct": 2.0}, {"ticker": "AUPH", "name": "Aurinia Pharmaceuticals Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 47.0, "category": "path1", "mcap": 2040, "rev": 283.1, "opi": 157.6, "prices": [15.35, 15.77, 16.04, 16.25, 15.14], "daily_returns": [0.0, 2.74, 4.5, 5.83, -1.37], "return_pct": -1.37}, {"ticker": "COCO", "name": "Vita Coco Company Inc", "sector": "Consumer Defensive", "industry": "Beverages - Non-Alcoholic", "v8": 47.0, "category": "path1", "mcap": 3810, "rev": 658.6, "opi": 123.0, "prices": [66.75, 67.25, 67.79, 68.64, 68.2], "daily_returns": [0.0, 0.75, 1.56, 2.83, 2.18], "return_pct": 2.18}, {"ticker": "EOSE", "name": "Eos Energy Enterprises Inc", "sector": "Industrials", "industry": "Electrical Equipment & Parts", "v8": 47.0, "category": "path1", "mcap": 2190, "rev": 114.2, "opi": -166.9, "prices": [6.45, 6.38, 6.23, 6.54, 6.36], "daily_returns": [0.0, -1.09, -3.41, 1.4, -1.4], "return_pct": -1.4}, {"ticker": "ERO", "name": "Ero Copper Corp", "sector": "Basic Materials", "industry": "Copper", "v8": 47.0, "category": "path1", "mcap": 2630, "rev": 923.9, "opi": 321.0, "prices": [25.21, 24.46, 25.82, 27.07, 27.1], "daily_returns": [0.0, -2.98, 2.42, 7.38, 7.5], "return_pct": 7.5}, {"ticker": "GSIT", "name": "GSI Technology, Inc. - Common Stock", "sector": "Technology", "industry": "Semiconductors", "v8": 46.0, "category": "path1", "mcap": 275, "rev": 24.7, "opi": -28.1, "prices": [8.18, 7.81, 8.0, 8.8, 8.14], "daily_returns": [0.0, -4.52, -2.2, 7.58, -0.49], "return_pct": -0.49}, {"ticker": "HTFL", "name": "Heartflow Inc", "sector": "Healthcare", "industry": "Health Information Services", "v8": 46.0, "category": "path1", "mcap": 2460, "rev": 176.0, "opi": -63.6, "prices": [28.67, 28.95, 29.96, 30.29, 29.98], "daily_returns": [0.0, 0.98, 4.5, 5.65, 4.57], "return_pct": 4.57}, {"ticker": "HYPR", "name": "Hyperfine, Inc.  - Class A Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 46.0, "category": "path1", "mcap": 172, "rev": 13.6, "opi": -19.6, "prices": [1.87, 1.81, 1.71, 1.73, 1.68], "daily_returns": [0.0, -3.21, -8.56, -7.49, -10.16], "return_pct": -10.16}, {"ticker": "NRXS", "name": "Neuraxis, Inc. Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 46.0, "category": "path1", "mcap": 100, "rev": 3.6, "opi": -6.3, "prices": [8.08, 8.3, 8.69, 8.81, 8.8], "daily_returns": [0.0, 2.72, 7.55, 9.03, 8.91], "return_pct": 8.91}, {"ticker": "STXS", "name": "Stereotaxis, Inc. Common Stock", "sector": "Healthcare", "industry": "Medical Instruments & Supplies", "v8": 46.0, "category": "path1", "mcap": 191, "rev": 32.4, "opi": -19.8, "prices": [1.93, 1.9, 1.92, 1.92, 1.9], "daily_returns": [0.0, -1.55, -0.52, -0.52, -1.55], "return_pct": -1.55}, {"ticker": "TARS", "name": "Tarsus Pharmaceuticals Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 46.0, "category": "path1", "mcap": 2710, "rev": 451.4, "opi": -23.7, "prices": [63.62, 64.57, 65.04, 64.76, 63.96], "daily_returns": [0.0, 1.49, 2.23, 1.79, 0.53], "return_pct": 0.53}, {"ticker": "TVTX", "name": "Travere Therapeutics Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 46.0, "category": "path1", "mcap": 4080, "rev": 536.2, "opi": -155.6, "prices": [44.12, 44.91, 44.8, 44.76, 42.66], "daily_returns": [0.0, 1.79, 1.54, 1.45, -3.31], "return_pct": -3.31}, {"ticker": "SEPN", "name": "Septerna, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 45.1, "category": "path1", "mcap": 1110, "rev": 46.0, "opi": -30.5, "prices": [23.61, 24.82, 24.13, 24.71, 23.98], "daily_returns": [0.0, 5.12, 2.2, 4.66, 1.57], "return_pct": 1.57}, {"ticker": "CNTX", "name": "Context Therapeutics Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 44.85, "category": "path1", "mcap": 216, "rev": null, "opi": null, "prices": [2.27, 2.3, 2.44, 2.41, 2.33], "daily_returns": [0.0, 1.32, 7.49, 6.17, 2.64], "return_pct": 2.64}, {"ticker": "CURI", "name": "CuriosityStream Inc.  - Class A Common Stock", "sector": "Communication Services", "industry": "Broadcasting", "v8": 44.85, "category": "path1", "mcap": 185, "rev": 71.7, "opi": -12.6, "prices": [3.17, 3.17, 3.04, 3.09, 3.14], "daily_returns": [0.0, 0.0, -4.1, -2.52, -0.95], "return_pct": -0.95}, {"ticker": "TYGO", "name": "Tigo Energy, Inc. - Common Stock", "sector": "Technology", "industry": "Solar", "v8": 44.85, "category": "path1", "mcap": 363, "rev": 109.9, "opi": -10.5, "prices": [4.81, 4.66, 5.16, 4.47, 4.35], "daily_returns": [0.0, -3.12, 7.28, -7.07, -9.56], "return_pct": -9.56}, {"ticker": "ATAT", "name": "Atour Lifestyle Holdings Ltd ADR", "sector": "Consumer Cyclical", "industry": "Lodging", "v8": 44.0, "category": "path1", "mcap": 4290, "rev": 9790.2, "opi": 2666.2, "prices": [37.97, 37.4, 37.97, 38.86, 38.23], "daily_returns": [0.0, -1.5, 0.0, 2.34, 0.68], "return_pct": 0.68}, {"ticker": "AXGN", "name": "Axogen Inc", "sector": "Healthcare", "industry": "Medical Devices", "v8": 44.0, "category": "path1", "mcap": 2300, "rev": 238.1, "opi": -11.0, "prices": [43.28, 42.63, 43.74, 43.48, 43.41], "daily_returns": [0.0, -1.5, 1.06, 0.46, 0.3], "return_pct": 0.3}, {"ticker": "CRON", "name": "Cronos Group Inc. - Common Share", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 44.0, "category": "path1", "mcap": 1000, "rev": 146.6, "opi": -14.8, "prices": [2.64, 2.65, 2.63, 2.62, 2.57], "daily_returns": [0.0, 0.38, -0.38, -0.76, -2.65], "return_pct": -2.65}, {"ticker": "EVEX", "name": "Eve Holding, Inc. Common Stock", "sector": "Industrials", "industry": "Aerospace & Defense", "v8": 44.0, "category": "top10", "mcap": 984, "rev": null, "opi": null, "prices": [2.9, 2.85, 2.69, 3.24, 3.21], "daily_returns": [0.0, -1.72, -7.24, 11.72, 10.69], "return_pct": 10.69}, {"ticker": "NPCE", "name": "Neuropace, Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 44.0, "category": "path1", "mcap": 584, "rev": 100.0, "opi": -6.6, "prices": [17.07, 16.9, 17.04, 18.12, 19.29], "daily_returns": [0.0, -1.0, -0.18, 6.15, 13.01], "return_pct": 13.01}, {"ticker": "SNDX", "name": "Syndax Pharmaceuticals, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 44.0, "category": "path1", "mcap": 1730, "rev": 217.2, "opi": -114.5, "prices": [19.11, 19.96, 20.1, 20.65, 20.54], "daily_returns": [0.0, 4.45, 5.18, 8.06, 7.48], "return_pct": 7.48}, {"ticker": "AVTX", "name": "Avalo Therapeutics, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 43.7, "category": "path1", "mcap": 392, "rev": 0.1, "opi": -19.7, "prices": [13.71, 13.78, 16.26, 21.81, 22.87], "daily_returns": [0.0, 0.51, 18.6, 59.08, 66.81], "return_pct": 66.81}, {"ticker": "CLYM", "name": "Climb Bio, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 43.7, "category": "path1", "mcap": 490, "rev": null, "opi": null, "prices": [8.91, 9.69, 11.45, 12.22, 11.91], "daily_returns": [0.0, 8.75, 28.51, 37.15, 33.67], "return_pct": 33.67}, {"ticker": "CV", "name": "CapsoVision, Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 43.7, "category": "path1", "mcap": 349, "rev": 13.6, "opi": -25.3, "prices": [7.5, 7.07, 7.06, 7.01, 7.19], "daily_returns": [0.0, -5.73, -5.87, -6.53, -4.13], "return_pct": -4.13}, {"ticker": "FORA", "name": "Forian Inc. - Common Stock", "sector": "Healthcare", "industry": "Health Information Services", "v8": 43.7, "category": "path1", "mcap": 67, "rev": 30.3, "opi": -7.4, "prices": [2.15, 2.15, 2.15, 2.15, 2.15], "daily_returns": [0.0, -0.23, -0.23, -0.23, -0.23], "return_pct": -0.23}, {"ticker": "HIT", "name": "Health In Tech, Inc. - Class A Common Stock", "sector": "Technology", "industry": "Software - Application", "v8": 43.7, "category": "path1", "mcap": 87, "rev": 33.3, "opi": -0.8, "prices": [1.55, 1.52, 1.54, 1.52, 1.57], "daily_returns": [0.0, -1.94, -0.65, -1.94, 1.29], "return_pct": 1.29}, {"ticker": "ORGO", "name": "Organogenesis Holdings Inc.  - Class A", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 43.7, "category": "path1", "mcap": 339, "rev": 564.2, "opi": 176.1, "prices": [2.57, 2.56, 2.59, 2.56, 2.53], "daily_returns": [0.0, -0.39, 0.78, -0.39, -1.56], "return_pct": -1.56}, {"ticker": "QTI", "name": "QT Imaging Holdings, Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 43.7, "category": "path1", "mcap": 77, "rev": 18.9, "opi": -1.6, "prices": [6.62, 6.53, 6.79, 7.12, 7.0], "daily_returns": [0.0, -1.36, 2.57, 7.55, 5.74], "return_pct": 5.74}, {"ticker": "TTEC", "name": "TTEC Holdings, Inc. - Common Stock", "sector": "Technology", "industry": "Information Technology Service", "v8": 43.7, "category": "path1", "mcap": 138, "rev": 2136.9, "opi": 134.2, "prices": [2.99, 2.78, 2.97, 2.98, 3.06], "daily_returns": [0.0, -7.02, -0.67, -0.33, 2.34], "return_pct": 2.34}, {"ticker": "FROG", "name": "JFrog Ltd", "sector": "Technology", "industry": "Software - Application", "v8": 43.0, "category": "path1", "mcap": 6040, "rev": 531.8, "opi": -72.7, "prices": [49.89, 52.58, 54.41, 53.81, 57.02], "daily_returns": [0.0, 5.39, 9.06, 7.86, 14.29], "return_pct": 14.29}, {"ticker": "NTSK", "name": "Netskope Inc", "sector": "Technology", "industry": "Software - Infrastructure", "v8": 43.0, "category": "path1", "mcap": 4210, "rev": 709.0, "opi": -412.7, "prices": [10.52, 10.32, 10.77, 10.55, 11.4], "daily_returns": [0.0, -1.9, 2.38, 0.29, 8.37], "return_pct": 8.37}, {"ticker": "ABX", "name": "Abacus Global Management, Inc. Class A Common Stoc", "sector": "Financial", "industry": "Insurance - Life", "v8": 42.9, "category": "path1", "mcap": 901, "rev": 235.2, "opi": 113.2, "prices": [9.44, 9.19, 9.26, 9.44, 9.38], "daily_returns": [0.0, -2.65, -1.91, 0.0, -0.64], "return_pct": -0.64}, {"ticker": "AEBI", "name": "Aebi Schmidt Holding AG - Common Stock", "sector": "Industrials", "industry": "Farm & Heavy Construction Mach", "v8": 42.9, "category": "path1", "mcap": 888, "rev": 1526.6, "opi": 68.5, "prices": [11.67, 10.93, 11.49, 11.5, 11.72], "daily_returns": [0.0, -6.34, -1.54, -1.46, 0.43], "return_pct": 0.43}, {"ticker": "AMBQ", "name": "Ambiq Micro, Inc. Common Stock", "sector": "Technology", "industry": "Semiconductors", "v8": 42.9, "category": "path1", "mcap": 872, "rev": 72.5, "opi": -41.8, "prices": [40.39, 39.36, 40.49, 41.35, 38.0], "daily_returns": [0.0, -2.55, 0.25, 2.38, -5.92], "return_pct": -5.92}, {"ticker": "MNKD", "name": "MannKind Corporation - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 42.9, "category": "path1", "mcap": 883, "rev": 349.0, "opi": -24.0, "prices": [2.84, 2.81, 2.86, 3.56, 3.55], "daily_returns": [0.0, -1.06, 0.7, 25.35, 25.0], "return_pct": 25.0}, {"ticker": "SNDA", "name": "Sonida Senior Living, Inc. Common Stock", "sector": "Healthcare", "industry": "Medical Care Facilities", "v8": 42.9, "category": "path1", "mcap": 1780, "rev": 336.4, "opi": 9.3, "prices": [37.47, 37.41, 37.27, 37.15, 36.55], "daily_returns": [0.0, -0.16, -0.53, -0.85, -2.46], "return_pct": -2.46}, {"ticker": "XERS", "name": "Xeris Biopharma Holdings, Inc. - Common Stock", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 42.9, "category": "path1", "mcap": 1100, "rev": 291.8, "opi": 57.0, "prices": [6.28, 6.34, 6.23, 6.37, 6.63], "daily_returns": [0.0, 0.96, -0.8, 1.43, 5.57], "return_pct": 5.57}, {"ticker": "GORO", "name": "Gold Resource Corporation Common Stock", "sector": "Basic Materials", "industry": "Other Precious Metals & Mining", "v8": 42.55, "category": "path1", "mcap": 219, "rev": 99.8, "opi": -20.5, "prices": [1.41, 1.32, 1.38, 1.41, 1.43], "daily_returns": [0.0, -6.38, -2.13, 0.0, 1.42], "return_pct": 1.42}, {"ticker": "III", "name": "Information Services Group, Inc. - Common Stock", "sector": "Technology", "industry": "Information Technology Service", "v8": 42.55, "category": "path1", "mcap": 196, "rev": 244.7, "opi": 20.3, "prices": [4.11, 4.12, 4.16, 4.14, 4.17], "daily_returns": [0.0, 0.24, 1.22, 0.73, 1.46], "return_pct": 1.46}, {"ticker": "SPRO", "name": "Spero Therapeutics, Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 42.55, "category": "path1", "mcap": 146, "rev": 66.8, "opi": 50.8, "prices": [2.48, 2.5, 2.42, 2.53, 2.51], "daily_returns": [0.0, 0.81, -2.42, 2.02, 1.21], "return_pct": 1.21}, {"ticker": "IBRX", "name": "ImmunityBio Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 42.0, "category": "path1", "mcap": 7310, "rev": 113.3, "opi": -191.4, "prices": [7.11, 7.43, 7.58, 8.38, 7.76], "daily_returns": [0.0, 4.5, 6.61, 17.86, 9.14], "return_pct": 9.14}, {"ticker": "LASR", "name": "nLIGHT Inc", "sector": "Technology", "industry": "Semiconductors", "v8": 42.0, "category": "path1", "mcap": 3960, "rev": 261.3, "opi": -15.4, "prices": [70.98, 69.41, 66.95, 71.29, 66.19], "daily_returns": [0.0, -2.21, -5.68, 0.44, -6.75], "return_pct": -6.75}, {"ticker": "LWLG", "name": "Lightwave Logic Inc", "sector": "Basic Materials", "industry": "Specialty Chemicals", "v8": 42.0, "category": "path1", "mcap": 2450, "rev": 0.2, "opi": -7.6, "prices": [16.27, 15.79, 16.72, 15.41, 14.82], "daily_returns": [0.0, -2.95, 2.77, -5.29, -8.88], "return_pct": -8.88}, {"ticker": "TGB", "name": "Taseko Mines Ltd", "sector": "Basic Materials", "industry": "Copper", "v8": 42.0, "category": "path1", "mcap": 2610, "rev": 672.9, "opi": 74.3, "prices": [7.15, 6.85, 6.84, 7.52, 7.25], "daily_returns": [0.0, -4.2, -4.34, 5.17, 1.4], "return_pct": 1.4}, {"ticker": "TGTX", "name": "TG Therapeutics Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 42.0, "category": "path1", "mcap": 5410, "rev": 700.3, "opi": 118.9, "prices": [33.85, 35.7, 36.1, 41.97, 43.02], "daily_returns": [0.0, 5.48, 6.65, 23.99, 27.1], "return_pct": 27.1}, {"ticker": "ABSI", "name": "Absci Corporation - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 41.8, "category": "path1", "mcap": 867, "rev": 2.8, "opi": -152.7, "prices": [4.92, 5.62, 5.61, 5.95, 5.75], "daily_returns": [0.0, 14.23, 14.02, 20.93, 16.87], "return_pct": 16.87}, {"ticker": "AQST", "name": "Aquestive Therapeutics, Inc. - Common Stock", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 41.8, "category": "path1", "mcap": 523, "rev": 44.5, "opi": -98.7, "prices": [4.2, 4.22, 4.18, 4.23, 4.23], "daily_returns": [0.0, 0.48, -0.48, 0.71, 0.71], "return_pct": 0.71}, {"ticker": "ECPG", "name": "Encore Capital Group Inc - Common Stock", "sector": "Financial", "industry": "Credit Services", "v8": 41.8, "category": "path1", "mcap": 1830, "rev": 1768.8, "opi": 647.6, "prices": [83.3, 83.19, 84.41, 84.24, 82.22], "daily_returns": [0.0, -0.13, 1.33, 1.13, -1.3], "return_pct": -1.3}, {"ticker": "GOLD", "name": "Gold.com, Inc. Common Stock", "sector": "Financial", "industry": "Capital Markets", "v8": 41.8, "category": "path1", "mcap": 1060, "rev": 15678.8, "opi": 63.0, "prices": [42.63, 42.64, 42.93, 43.1, 43.51], "daily_returns": [0.0, 0.02, 0.7, 1.1, 2.06], "return_pct": 2.06}, {"ticker": "INTA", "name": "Intapp, Inc. - Common Stock", "sector": "Technology", "industry": "Software - Application", "v8": 41.8, "category": "path1", "mcap": 1930, "rev": 560.3, "opi": -54.7, "prices": [23.5, 23.67, 24.08, 23.07, 23.98], "daily_returns": [0.0, 0.72, 2.47, -1.83, 2.04], "return_pct": 2.04}, {"ticker": "HYFT", "name": "MindWalk Holdings Corp. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 41.4, "category": "path1", "mcap": 58, "rev": 28.1, "opi": -24.8, "prices": [1.21, 1.24, 1.25, 1.27, 1.2], "daily_returns": [0.0, 2.48, 3.31, 4.96, -0.83], "return_pct": -0.83}, {"ticker": "INTG", "name": "The Intergroup Corporation - Common Stock", "sector": "Consumer Cyclical", "industry": "Lodging", "v8": 41.4, "category": "path1", "mcap": 87, "rev": 68.2, "opi": 7.9, "prices": [39.46, 39.33, 40.46, 39.32, 37.58], "daily_returns": [0.0, -0.33, 2.53, -0.35, -4.76], "return_pct": -4.76}, {"ticker": "SPRU", "name": "Spruce Power Holding Corporation Class A Common St", "sector": "Technology", "industry": "Solar", "v8": 41.4, "category": "path1", "mcap": 60, "rev": 111.8, "opi": 9.8, "prices": [3.32, 3.27, 3.36, 3.52, 3.48], "daily_returns": [0.0, -1.51, 1.2, 6.02, 4.82], "return_pct": 4.82}, {"ticker": "STRT", "name": "STRATTEC SECURITY CORPORATION - Common Stock", "sector": "Consumer Cyclical", "industry": "Auto Parts", "v8": 41.4, "category": "path1", "mcap": 304, "rev": 586.0, "opi": 34.2, "prices": [72.6, 70.36, 73.94, 75.85, 74.56], "daily_returns": [0.0, -3.09, 1.85, 4.48, 2.7], "return_pct": 2.7}, {"ticker": "TATT", "name": "TAT Technologies Ltd. - Ordinary Shares", "sector": "Industrials", "industry": "Aerospace & Defense", "v8": 41.4, "category": "path1", "mcap": 466, "rev": 178.0, "opi": 17.4, "prices": [36.59, 34.96, 35.86, 36.23, 35.62], "daily_returns": [0.0, -4.45, -2.0, -0.98, -2.65], "return_pct": -2.65}, {"ticker": "WRAP", "name": "Wrap Technologies, Inc. - Common Stock", "sector": "Technology", "industry": "Scientific & Technical Instrum", "v8": 41.4, "category": "path1", "mcap": 80, "rev": 4.7, "opi": -11.2, "prices": [1.58, 1.49, 1.46, 1.49, 1.44], "daily_returns": [0.0, -5.7, -7.59, -5.7, -8.86], "return_pct": -8.86}, {"ticker": "CRK", "name": "Comstock Resources Inc", "sector": "Energy", "industry": "Oil & Gas E&P", "v8": 41.0, "category": "path1", "mcap": 5100, "rev": 2001.0, "opi": 591.5, "prices": [17.36, 17.77, 17.33, 14.99, 14.8], "daily_returns": [0.0, 2.36, -0.17, -13.65, -14.75], "return_pct": -14.75}, {"ticker": "GBTG", "name": "Global Business Travel Group Inc", "sector": "Consumer Cyclical", "industry": "Travel Services", "v8": 41.0, "category": "path1", "mcap": 3100, "rev": 2937.0, "opi": 157.3, "prices": [5.93, 9.34, 9.48, 9.43, 9.44], "daily_returns": [0.0, 57.5, 59.87, 59.02, 59.19], "return_pct": 59.19}, {"ticker": "HCC", "name": "Warrior Met Coal Inc", "sector": "Basic Materials", "industry": "Coking Coal", "v8": 41.0, "category": "path1", "mcap": 4550, "rev": 1472.5, "opi": 254.8, "prices": [86.2, 84.02, 86.6, 87.54, 87.84], "daily_returns": [0.0, -2.53, 0.46, 1.55, 1.9], "return_pct": 1.9}, {"ticker": "BCAX", "name": "Bicara Therapeutics Inc. - Common Stock", "sector": "Healthcare", "industry": "Biotechnology", "v8": 40.7, "category": "path1", "mcap": 1480, "rev": null, "opi": null, "prices": [21.67, 22.72, 23.16, 23.78, 23.09], "daily_returns": [0.0, 4.85, 6.88, 9.74, 6.55], "return_pct": 6.55}, {"ticker": "CBLL", "name": "CeriBell, Inc. - Common Stock", "sector": "Healthcare", "industry": "Medical Devices", "v8": 40.7, "category": "path1", "mcap": 762, "rev": 89.1, "opi": -52.5, "prices": [20.5, 20.27, 20.37, 20.15, 20.38], "daily_returns": [0.0, -1.12, -0.63, -1.71, -0.59], "return_pct": -0.59}, {"ticker": "EVGO", "name": "EVgo Inc. - Common Stock", "sector": "Consumer Cyclical", "industry": "Specialty Retail", "v8": 40.7, "category": "path1", "mcap": 676, "rev": 418.3, "opi": -124.8, "prices": [2.17, 2.17, 2.1, 1.94, 1.9], "daily_returns": [0.0, 0.0, -3.23, -10.6, -12.44], "return_pct": -12.44}, {"ticker": "GAU", "name": "Galiano Gold Inc.", "sector": "Basic Materials", "industry": "Gold", "v8": 40.7, "category": "path1", "mcap": 607, "rev": 328.4, "opi": -347.2, "prices": [2.32, 2.28, 2.28, 2.42, 2.53], "daily_returns": [0.0, -1.72, -1.72, 4.31, 9.05], "return_pct": 9.05}, {"ticker": "GEVO", "name": "Gevo, Inc. - Common Stock", "sector": "Basic Materials", "industry": "Specialty Chemicals", "v8": 40.7, "category": "path1", "mcap": 516, "rev": 160.6, "opi": -19.0, "prices": [2.03, 2.07, 2.09, 2.05, 2.03], "daily_returns": [0.0, 1.97, 2.96, 0.99, 0.0], "return_pct": 0.0}, {"ticker": "TBLA", "name": "Taboola.com Ltd. - Ordinary Shares", "sector": "Communication Services", "industry": "Internet Content & Information", "v8": 40.7, "category": "path1", "mcap": 1060, "rev": 1912.0, "opi": 160.2, "prices": [3.79, 3.79, 3.81, 4.75, 5.21], "daily_returns": [0.0, 0.0, 0.53, 25.33, 37.47], "return_pct": 37.47}, {"ticker": "AIRO", "name": "AIRO Group Holdings, Inc. - Common Stock", "sector": "Industrials", "industry": "Aerospace & Defense", "v8": 40.25, "category": "core5", "mcap": 224, "rev": 90.9, "opi": 11.3, "prices": [7.42, 7.24, 7.15, 7.43, 7.22], "daily_returns": [0.0, -2.43, -3.64, 0.13, -2.7], "return_pct": -2.7}, {"ticker": "CPSH", "name": "CPS Technologies Corp. - Common Stock", "sector": "Technology", "industry": "Electronic Components", "v8": 40.25, "category": "path1", "mcap": 65, "rev": 32.1, "opi": -2.4, "prices": [4.97, 4.94, 3.65, 3.62, 3.75], "daily_returns": [0.0, -0.6, -26.56, -27.16, -24.55], "return_pct": -24.55}, {"ticker": "PODC", "name": "PodcastOne, Inc. - Common Stock", "sector": "Communication Services", "industry": "Internet Content & Information", "v8": 40.25, "category": "path1", "mcap": 102, "rev": 60.1, "opi": -0.6, "prices": [3.32, 3.47, 3.43, 3.8, 3.53], "daily_returns": [0.0, 4.52, 3.31, 14.46, 6.33], "return_pct": 6.33}, {"ticker": "SLP", "name": "Simulations Plus, Inc. - Common Stock", "sector": "Healthcare", "industry": "Health Information Services", "v8": 40.25, "category": "path1", "mcap": 306, "rev": 80.5, "opi": 18.7, "prices": [14.91, 15.15, 15.71, 15.88, 16.06], "daily_returns": [0.0, 1.61, 5.37, 6.51, 7.71], "return_pct": 7.71}, {"ticker": "AG", "name": "First Majestic Silver Corp", "sector": "Basic Materials", "industry": "Silver", "v8": 40.0, "category": "path1", "mcap": 9800, "rev": 1257.2, "opi": 615.5, "prices": [19.85, 19.38, 19.1, 21.18, 21.37], "daily_returns": [0.0, -2.37, -3.78, 6.7, 7.66], "return_pct": 7.66}, {"ticker": "CEPU", "name": "Central Puerto ADR", "sector": "Utilities", "industry": "Utilities - Regulated Electric", "v8": 40.0, "category": "path1", "mcap": 2100, "rev": 1097422.2, "opi": 245756.7, "prices": [14.0, 14.29, 14.27, 15.33, 14.59], "daily_returns": [0.0, 2.07, 1.93, 9.5, 4.21], "return_pct": 4.21}, {"ticker": "FLOC", "name": "Flowco Holdings Inc", "sector": "Energy", "industry": "Oil & Gas Equipment & Services", "v8": 40.0, "category": "path1", "mcap": 2290, "rev": 776.9, "opi": 135.7, "prices": [25.38, 25.08, 25.18, 24.25, 24.56], "daily_returns": [0.0, -1.18, -0.79, -4.45, -3.23], "return_pct": -3.23}, {"ticker": "KYMR", "name": "Kymera Therapeutics Inc", "sector": "Healthcare", "industry": "Biotechnology", "v8": 40.0, "category": "path1", "mcap": 6590, "rev": 51.5, "opi": -126.1, "prices": [80.71, 83.59, 82.71, 86.26, 84.63], "daily_returns": [0.0, 3.57, 2.48, 6.88, 4.86], "return_pct": 4.86}, {"ticker": "LQDA", "name": "Liquidia Corp", "sector": "Healthcare", "industry": "Drug Manufacturers - Specialty", "v8": 40.0, "category": "path1", "mcap": 3360, "rev": 158.3, "opi": 34.0, "prices": [38.14, 38.48, 40.13, 42.14, 42.28], "daily_returns": [0.0, 0.89, 5.22, 10.49, 10.85], "return_pct": 10.85}, {"ticker": "BRZE", "name": "Braze Inc", "sector": "Technology", "industry": "Software - Application", "v8": 39.0, "category": "path1", "mcap": 2670, "rev": 738.2, "opi": -101.2, "prices": [23.56, 24.17, 24.33, 21.94, 22.6], "daily_returns": [0.0, 2.59, 3.27, -6.88, -4.07], "return_pct": -4.07}, {"ticker": "FLY", "name": "Firefly Aerospace Inc", "sector": "Industrials", "industry": "Aerospace & Defense", "v8": 39.0, "category": "core5", "mcap": 5410, "rev": 184.9, "opi": -214.3, "prices": [33.8, 33.37, 31.52, 34.55, 32.36], "daily_returns": [0.0, -1.27, -6.75, 2.22, -4.26], "return_pct": -4.26}, {"ticker": "LOAR", "name": "Loar Holdings Inc", "sector": "Industrials", "industry": "Aerospace & Defense", "v8": 39.0, "category": "path1", "mcap": 5180, "rev": 496.3, "opi": 122.0, "prices": [55.37, 55.59, 57.72, 61.83, 60.1], "daily_returns": [0.0, 0.4, 4.24, 11.67, 8.54], "return_pct": 8.54}, {"ticker": "SEZL", "name": "Sezzle Inc", "sector": "Financial", "industry": "Credit Services", "v8": 39.0, "category": "path1", "mcap": 2890, "rev": 450.3, "opi": 273.9, "prices": [85.46, 85.96, 85.19, 86.02, 99.82], "daily_returns": [0.0, 0.59, -0.32, 0.66, 16.8], "return_pct": 16.8}, {"ticker": "BSM", "name": "Black Stone Minerals LP", "sector": "Energy", "industry": "Oil & Gas E&P", "v8": 38.0, "category": "path1", "mcap": 3020, "rev": 401.0, "opi": 331.7, "prices": [14.24, 14.24, 13.69, 13.57, 13.37], "daily_returns": [0.0, 0.0, -3.86, -4.71, -6.11], "return_pct": -6.11}, {"ticker": "MXL", "name": "MaxLinear Inc", "sector": "Technology", "industry": "Semiconductors", "v8": 38.0, "category": "path1", "mcap": 6910, "rev": 508.9, "opi": -62.1, "prices": [77.18, 78.12, 81.68, 81.23, 82.37], "daily_returns": [0.0, 1.22, 5.83, 5.25, 6.72], "return_pct": 6.72}, {"ticker": "BLTE", "name": "Belite Bio Inc ADR", "sector": "Healthcare", "industry": "Biotechnology", "v8": 37.0, "category": "path1", "mcap": 6190, "rev": null, "opi": null, "prices": [154.85, 154.51, 154.38, 156.21, 156.0], "daily_returns": [0.0, -0.22, -0.3, 0.88, 0.74], "return_pct": 0.74}, {"ticker": "FLNC", "name": "Fluence Energy Inc", "sector": "Utilities", "industry": "Utilities - Renewable", "v8": 37.0, "category": "top10", "mcap": 2240, "rev": 2551.3, "opi": -322.9, "prices": [12.19, 12.33, 12.69, 13.56, 18.97], "daily_returns": [0.0, 1.15, 4.1, 11.24, 55.62], "return_pct": 55.62}, {"ticker": "HRI", "name": "Herc Holdings Inc", "sector": "Industrials", "industry": "Rental & Leasing Services", "v8": 37.0, "category": "path1", "mcap": 4450, "rev": 4654.0, "opi": 437.2, "prices": [133.13, 123.91, 130.81, 136.01, 131.89], "daily_returns": [0.0, -6.93, -1.74, 2.16, -0.93], "return_pct": -0.93}, {"ticker": "WRD", "name": "WeRide Inc ADR", "sector": "Technology", "industry": "Software - Application", "v8": 37.0, "category": "path1", "mcap": 2430, "rev": 684.6, "opi": -1250.9, "prices": [7.64, 7.84, 7.63, 7.71, 7.39], "daily_returns": [0.0, 2.62, -0.13, 0.92, -3.27], "return_pct": -3.27}, {"ticker": "BULL", "name": "Webull Corp", "sector": "Technology", "industry": "Software - Application", "v8": 36.0, "category": "path1", "mcap": 3740, "rev": 564.3, "opi": 13.7, "prices": [7.03, 7.17, 7.33, 7.32, 7.21], "daily_returns": [0.0, 1.99, 4.27, 4.13, 2.56], "return_pct": 2.56}, {"ticker": "JOBY", "name": "Joby Aviation Inc", "sector": "Industrials", "industry": "Airports & Air Services", "v8": 36.0, "category": "path1", "mcap": 9090, "rev": 77.7, "opi": -748.3, "prices": [9.25, 8.86, 8.68, 10.52, 10.01], "daily_returns": [0.0, -4.22, -6.16, 13.73, 8.22], "return_pct": 8.22}, {"ticker": "LB", "name": "Landbridge Company LLC", "sector": "Energy", "industry": "Oil & Gas Equipment & Services", "v8": 36.0, "category": "path1", "mcap": 5090, "rev": 199.1, "opi": 119.5, "prices": [66.07, 65.07, 66.14, 66.0, 63.97], "daily_returns": [0.0, -1.51, 0.11, -0.11, -3.18], "return_pct": -3.18}, {"ticker": "TMDX", "name": "Transmedics Group Inc", "sector": "Healthcare", "industry": "Medical Devices", "v8": 36.0, "category": "path1", "mcap": 3450, "rev": 635.9, "opi": 48.6, "prices": [100.01, 97.08, 94.93, 72.92, 72.9], "daily_returns": [0.0, -2.93, -5.08, -27.09, -27.11], "return_pct": -27.11}, {"ticker": "ALHC", "name": "Alignment Healthcare Inc", "sector": "Healthcare", "industry": "Healthcare Plans", "v8": 35.0, "category": "path1", "mcap": 4140, "rev": 4257.0, "opi": 55.0, "prices": [20.26, 19.26, 18.3, 18.14, 18.25], "daily_returns": [0.0, -4.94, -9.67, -10.46, -9.92], "return_pct": -9.92}, {"ticker": "GPCR", "name": "Structure Therapeutics Inc ADR", "sector": "Healthcare", "industry": "Biotechnology", "v8": 35.0, "category": "top10", "mcap": 2990, "rev": null, "opi": null, "prices": [42.21, 43.04, 41.1, 40.84, 39.15], "daily_returns": [0.0, 1.97, -2.63, -3.25, -7.25], "return_pct": -7.25}, {"ticker": "KALU", "name": "Kaiser Aluminum Corp", "sector": "Basic Materials", "industry": "Aluminum", "v8": 35.0, "category": "path1", "mcap": 2840, "rev": 3702.4, "opi": 323.8, "prices": [173.72, 169.42, 175.92, 180.42, 176.16], "daily_returns": [0.0, -2.48, 1.27, 3.86, 1.4], "return_pct": 1.4}, {"ticker": "LCII", "name": "LCI Industries", "sector": "Consumer Cyclical", "industry": "Recreational Vehicles", "v8": 35.0, "category": "path1", "mcap": 2840, "rev": 4166.9, "opi": 363.6, "prices": [116.79, 106.79, 112.03, 116.95, 116.43], "daily_returns": [0.0, -8.56, -4.08, 0.14, -0.31], "return_pct": -0.31}, {"ticker": "LGN", "name": "Legence Corp", "sector": "Industrials", "industry": "Engineering & Construction", "v8": 35.0, "category": "path1", "mcap": 9730, "rev": 2550.5, "opi": 30.2, "prices": [90.09, 91.41, 99.38, 102.27, 97.44], "daily_returns": [0.0, 1.46, 10.31, 13.51, 8.15], "return_pct": 8.15}, {"ticker": "SIMO", "name": "Silicon Motion Technology Corp ADR", "sector": "Technology", "industry": "Semiconductors", "v8": 35.0, "category": "path1", "mcap": 7970, "rev": 1061.2, "opi": 161.9, "prices": [234.52, 227.16, 238.41, 244.95, 242.71], "daily_returns": [0.0, -3.14, 1.66, 4.45, 3.49], "return_pct": 3.49}];
const MONITORING = {"NUVB": {"earnings_date": "2026-05-19", "days_to_earnings": 12, "rating": "Strong Buy", "target_price": 12.3, "target_upside": 144, "analyst_count": 8, "news": [{"date": "2026-05-04", "title": "Q1 2026 실적: IBTROZI 매출 $18.5M, Eisai 선급금 $58.7M로 흑자전환", "source": "PRNewswire"}, {"date": "2026-04-28", "title": "TD Cowen 컨퍼런스 발표 — Phase 3 SIGMA Trial 진행 상황", "source": "Seeking Alpha"}, {"date": "2026-04-15", "title": "EMA, Taletrectinib MAA 접수 검증 완료", "source": "Business Wire"}]}, "FLY": {"earnings_date": "2026-05-14", "days_to_earnings": 7, "rating": "Buy", "target_price": 46.0, "target_upside": 35, "analyst_count": 9, "news": [{"date": "2026-05-06", "title": "Q2 Earnings 5/14 발표 예정 — 컨센서스 $97M (+73% YoY)", "source": "BusinessWire"}, {"date": "2026-05-02", "title": "SciTec, Space Force FORGE 추가 Task Order $109M 수주", "source": "Defense News"}, {"date": "2026-04-22", "title": "Blue Ghost Mission 2 통합 시험 단계 진입", "source": "NASA"}]}, "NRGV": {"earnings_date": "2026-08-06", "days_to_earnings": 91, "rating": "Buy", "target_price": 5.01, "target_upside": 19, "analyst_count": 6, "news": [{"date": "2026-05-05", "title": "Q1 매출 $217M (+340% YoY) 컨센 상회 — 백로그 $1.3B 사상 최고", "source": "Reuters"}, {"date": "2026-04-30", "title": "Phase 1 Own & Operate 자산 건설 일정대로 — 2026년 7월 가동", "source": "Press Release"}, {"date": "2026-04-18", "title": "Texas McMurtre 175MW BESS 사이트 변전소 연결 완료", "source": "Energy Storage News"}]}, "AIRO": {"earnings_date": "2026-05-21", "days_to_earnings": 14, "rating": "Buy", "target_price": 21.33, "target_upside": 142, "analyst_count": 4, "news": [{"date": "2026-05-07", "title": "BlueUAS 인증 절차 H1 2026 완료 단계 진입 — 미 국방부 조달 자격 임박", "source": "Defense News"}, {"date": "2026-04-25", "title": "Q1 매출 $24M, 2026 가이던스 $110~114M 재확인", "source": "Press Release"}, {"date": "2026-04-12", "title": "Nord Drone JV 우크라이나 생산 능력 월 4,000대 도달", "source": "Janes Defence"}]}, "ABAT": {"earnings_date": "2026-05-13", "days_to_earnings": 6, "rating": "Hold", "target_price": 6.0, "target_upside": 76, "analyst_count": 3, "news": [{"date": "2026-05-06", "title": "EPA Monterey 배터리 처리 Phase 2 시작 — Q3 매출 인식 진행", "source": "Press Release"}, {"date": "2026-04-29", "title": "DOE $144M 보조금 정상 집행 중 — 정치적 불확실성 해소", "source": "DOE Announcement"}, {"date": "2026-04-20", "title": "Tonopah Flats 광산 허가 절차 진척 — FS 업데이트 Q3 예정", "source": "Mining Weekly"}]}};
const BENCH_DAILY = {"SPY": {"name": "S&P 500", "full_name": "SPDR S&P 500 ETF Trust", "prices": [720.65, 718.01, 723.77, 733.83, 731.58], "daily_returns": [0.0, -0.37, 0.43, 1.83, 1.52], "is_synthetic": false}, "QQQ": {"name": "NASDAQ 100", "full_name": "Invesco QQQ Trust", "prices": [674.15, 672.88, 681.61, 695.77, 694.94], "daily_returns": [0.0, -0.19, 1.11, 3.21, 3.08], "is_synthetic": false}, "IWM": {"name": "Russell 2000", "full_name": "iShares Russell 2000 ETF", "prices": [279.28, 277.88, 282.56, 286.8, 282.26], "daily_returns": [0.0, -0.5, 1.17, 2.69, 1.07], "is_synthetic": false}};
const PORT_DAILY = [0.0, -1.13, 2.04, 3.03, -2.12];
const SECTOR_AVG = [{"sector": "Utilities", "avg": 11.93, "count": 4}, {"sector": "Consumer Cyclical", "avg": 7.51, "count": 6}, {"sector": "Communication Services", "avg": 5.6, "count": 7}, {"sector": "Financial", "avg": 4.61, "count": 5}, {"sector": "Basic Materials", "avg": 4.48, "count": 23}, {"sector": "Healthcare", "avg": 3.18, "count": 72}, {"sector": "Consumer Defensive", "avg": 2.18, "count": 1}, {"sector": "Technology", "avg": 1.25, "count": 33}, {"sector": "Industrials", "avg": 1.22, "count": 17}, {"sector": "Real Estate", "avg": -4.06, "count": 3}, {"sector": "Energy", "avg": -6.97, "count": 5}];
const HIST = [{"t": "VUZI", "c": "path1", "w": [0.0, -14.03, -17.92, -22.6, -31.69, -34.81, -34.29, -28.31, -24.94, -33.77, -43.12, -41.3, -43.64, -38.7, -37.66, -32.21, -35.84]}, {"t": "ABAT", "c": "core5", "w": [0.0, 29.73, 30.54, 27.03, 9.19, 12.43, 2.7, -4.05, -0.27, -8.92, -10.27, -21.62, -28.11, -24.86, -22.97, -8.11, -11.35]}, {"t": "ESPR", "c": "path1", "w": [0.0, 4.58, -18.06, -15.36, -8.63, -8.36, -7.55, -6.2, -9.7, -26.68, -34.23, -31.27, -26.15, -29.65, -41.51, -45.01, -48.52]}, {"t": "TRX", "c": "top10", "w": [0.0, 0.0, 6.67, 26.67, 81.11, 76.67, 92.22, 98.89, 101.11, 83.33, 77.78, 42.22, 46.67, 66.67, 71.11, 61.11, 37.78]}, {"t": "KMTS", "c": "top10", "w": [0.0, 0.16, -6.31, 0.86, 1.15, 4.43, 10.37, 8.9, -4.55, -5.54, -21.77, -21.69, -20.21, -18.66, -26.73, -6.48, -7.95]}, {"t": "TEO", "c": "path1", "w": [0.0, -2.43, -5.29, 10.57, 16.98, 4.07, -1.04, -0.69, 1.21, -4.77, -1.04, -2.95, -3.29, 1.82, -0.43, 3.47, -1.82]}, {"t": "NUVB", "c": "core5", "w": [0.0, -6.29, -31.82, -34.85, -38.93, -33.57, -32.75, -36.6, -31.12, -46.5, -48.25, -50.82, -50.47, -48.6, -46.39, -40.79, -43.01]}, {"t": "CPIX", "c": "path1", "w": [0.0, 24.37, 16.83, -1.26, -5.78, -1.76, -2.51, -2.01, 23.62, -12.06, -23.62, -28.89, -22.86, -20.35, -22.36, -18.84, 2.01]}, {"t": "ANGX", "c": "path1", "w": [0.0, -12.84, -12.42, -10.56, -18.43, -29.81, -32.3, -27.33, -18.84, -8.07, -23.4, -34.58, -35.2, -38.1, -54.87, -45.76, -47.83]}, {"t": "ELVA", "c": "path1", "w": [0.0, 11.74, 23.99, 39.14, 36.74, 11.74, -2.15, -3.16, -4.55, -1.64, 0.76, -8.59, -6.57, 1.64, 4.29, 21.59, 22.98]}, {"t": "NRGV", "c": "core5", "w": [0.0, 8.18, 16.97, 11.25, -3.89, -13.91, -34.76, -37.42, -38.65, -38.24, -32.52, -31.7, -28.02, -34.56, -33.33, -26.38, -8.79]}, {"t": "VRCA", "c": "path1", "w": [0.0, -4.22, -12.53, -10.6, -15.3, -16.75, -31.45, -30.24, -34.1, -36.02, -26.39, -34.34, -47.23, -34.1, -38.43, -23.86, -15.9]}, {"t": "BKV", "c": "path1", "w": [0.0, -5.98, -4.34, 2.66, 8.42, 10.46, 11.33, 14.5, 14.18, 12.03, 4.77, 6.05, 9.11, 0.69, 2.7, 1.13, 5.98]}, {"t": "LPTH", "c": "path1", "w": [0.0, 5.29, 7.25, 6.14, -11.09, -9.9, -1.71, 2.39, -11.01, -5.55, -10.32, -10.15, -19.03, -6.31, 9.47, 20.82, 37.29]}, {"t": "BBNX", "c": "path1", "w": [0.0, -31.15, -36.75, -45.44, -52.72, -55.28, -52.34, -53.16, -56.82, -63.73, -64.48, -63.42, -63.21, -66.05, -69.71, -55.62, -61.81]}, {"t": "VOXR", "c": "path1", "w": [0.0, 0.86, 6.0, 18.2, 12.42, 10.49, 13.28, 18.42, 37.26, 31.26, 19.06, 4.07, 3.21, 12.63, 20.77, 20.99, 15.85]}, {"t": "CDNA", "c": "path1", "w": [0.0, -10.5, 4.55, 6.69, 7.37, 1.72, 2.56, -1.78, -1.99, -6.53, -11.13, -10.4, -12.33, -4.34, -16.14, 11.91, 10.92]}, {"t": "GROY", "c": "path1", "w": [0.0, 8.33, 21.32, 17.4, 4.9, 3.43, 5.15, 9.56, 14.46, 5.39, -3.19, -22.79, -18.63, -9.8, -10.54, -6.37, -14.71]}, {"t": "AAOI", "c": "path1", "w": [0.0, -14.04, -6.46, -9.8, 10.13, 11.87, 12.27, 30.51, 112.7, 141.36, 144.47, 121.06, 148.01, 162.4, 280.3, 302.58, 309.52]}, {"t": "AUGO", "c": "path1", "w": [0.0, 5.5, 20.44, 36.61, 27.39, 31.99, 44.73, 49.18, 68.9, 61.2, 51.97, 23.1, 41.24, 76.76, 105.54, 120.0, 82.04]}, {"t": "GENI", "c": "path1", "w": [0.0, -0.74, -8.26, -10.3, -19.29, -43.51, -46.29, -43.32, -42.39, -50.0, -50.56, -57.98, -59.83, -57.7, -63.64, -54.64, -58.53]}, {"t": "NTRA", "c": "path1", "w": [0.0, 2.39, 1.05, 5.57, 1.01, -11.27, -9.88, -7.31, -9.09, -13.42, -17.91, -14.67, -20.18, -9.12, -15.65, -8.93, -10.96]}, {"t": "CARL", "c": "path1", "w": [0.0, 9.11, 8.08, 13.76, 6.79, 0.34, -5.85, 9.8, 25.28, 3.18, -1.98, -14.1, -16.94, -16.34, -23.13, -5.59, -12.21]}, {"t": "IDR", "c": "path1", "w": [0.0, 18.84, 7.85, 13.49, -12.33, -9.65, -5.54, -6.61, 4.72, -8.1, -14.93, -35.01, -33.43, -14.3, -9.92, 5.32, 4.77]}, {"t": "AISP", "c": "path1", "w": [0.0, -0.32, 38.91, 14.15, 0.0, -12.22, -21.86, -20.58, -12.22, -14.79, -15.43, -26.69, -31.83, -27.65, -33.44, -20.58, -18.97]}, {"t": "ALTI", "c": "path1", "w": [0.0, -12.95, -11.89, -6.58, -0.42, -3.18, -7.01, -1.7, -5.94, -12.1, -22.29, -30.36, -30.36, -18.9, -18.26, -20.17, -18.9]}, {"t": "AXSM", "c": "path1", "w": [0.0, -5.21, -0.79, 4.07, 3.11, 2.16, 1.41, 2.81, -8.28, -9.16, -12.65, -12.18, -12.5, -5.7, -0.32, 5.76, 4.07]}, {"t": "PGEN", "c": "path1", "w": [0.0, 7.24, 3.04, 11.21, 4.91, 0.23, 15.19, 2.34, -11.45, -22.43, -17.99, -23.36, -14.25, -7.94, -2.8, -7.01, -3.5]}, {"t": "LNZA", "c": "path1", "w": [0.0, -2.14, 3.64, -6.29, -14.29, -24.71, -33.71, -27.21, -38.79, -33.0, -21.5, 61.0, 26.0, 31.71, 93.93, 61.21, 78.43]}, {"t": "AAUC", "c": "path1", "w": [0.0, 8.7, 19.52, 31.54, 36.09, 34.96, 36.17, 35.57, 36.91, 35.74, 34.49, 32.41, 34.31, 34.96, 36.43, 37.91, 38.12]}, {"t": "APLD", "c": "path1", "w": [0.0, 34.04, 33.05, 34.08, 20.53, 24.33, 25.51, 3.31, -2.99, -10.57, -3.77, -7.76, -15.47, -12.63, -6.58, 12.17, 24.44]}, {"t": "B", "c": "path1", "w": [0.0, 8.46, 10.55, 15.88, 3.89, 2.45, 8.69, 8.81, 16.08, 3.91, -3.13, -15.03, -11.71, -4.74, -0.37, -0.94, -5.99]}, {"t": "ENLT", "c": "path1", "w": [0.0, 8.56, 7.36, 17.26, 16.52, 25.83, 36.0, 46.89, 40.99, 62.11, 47.16, 49.86, 38.37, 46.51, 56.41, 71.67, 83.62]}, {"t": "DCTH", "c": "path1", "w": [0.0, 3.92, 4.22, 5.83, -0.4, -5.83, -6.43, -1.71, -10.55, -8.74, -5.03, -8.84, -9.85, -3.22, 0.9, 9.15, 8.94]}, {"t": "OZ", "c": "path1", "w": [0.0, -2.67, -3.4, -6.87, -5.75, -10.65, -10.61, -12.25, -11.18, -8.89, -5.29, -8.1, -7.39, -0.28, -6.36, -9.7, -10.77]}, {"t": "EXK", "c": "path1", "w": [0.0, 17.74, 29.93, 56.54, 21.18, 25.94, 30.27, 42.9, 54.1, 23.95, 10.53, -8.65, -1.33, 5.88, 4.43, 12.86, 6.98]}, {"t": "GH", "c": "path1", "w": [0.0, 8.29, 10.22, 12.79, 12.09, 0.11, 3.06, 1.34, -7.71, -10.36, -15.97, -16.28, -16.84, -7.77, -22.74, -11.19, -12.61]}, {"t": "HL", "c": "path1", "w": [0.0, 18.97, 40.59, 68.52, 19.34, 20.67, 19.77, 27.29, 32.01, 8.06, 3.92, -8.64, -4.98, 1.64, 3.13, 3.55, -0.37]}, {"t": "KGC", "c": "path1", "w": [0.0, 10.36, 18.92, 31.27, 11.5, 13.37, 21.54, 18.18, 30.67, 15.0, 8.14, -6.12, 1.66, 11.46, 19.46, 23.59, 15.99]}, {"t": "COYA", "c": "path1", "w": [0.0, -14.16, -24.25, -16.46, -17.7, -14.34, -16.64, -18.41, -12.21, -15.22, -19.82, -25.49, -29.91, -29.03, -26.19, -15.4, -23.54]}, {"t": "TLSI", "c": "path1", "w": [0.0, -4.92, -9.34, -10.82, -18.52, -22.13, -20.16, -10.66, -17.05, -26.72, -33.11, -35.57, -36.89, -30.49, -30.82, -23.77, -23.93]}, {"t": "MU", "c": "path1", "w": [0.0, 9.41, 15.01, 26.7, 31.53, 25.13, 30.51, 35.74, 30.74, 17.4, 35.1, 34.07, 13.25, 16.16, 33.4, 44.33, 57.54]}, {"t": "SSII", "c": "path1", "w": [0.0, -2.3, 4.96, -5.13, -25.13, -32.92, -23.72, -14.51, -15.75, -21.42, -21.06, -12.57, -13.1, -11.5, -23.89, -13.45, -22.83]}, {"t": "INSM", "c": "path1", "w": [0.0, -0.65, -8.86, -11.81, -11.43, -15.39, -16.02, -6.89, -15.69, -20.88, -21.24, -23.22, -17.97, -8.29, -12.6, -18.43, -23.68]}, {"t": "SVM", "c": "path1", "w": [0.0, 10.31, 35.61, 55.16, 20.74, 24.82, 31.65, 40.05, 67.03, 41.85, 29.5, 9.47, 22.66, 31.77, 37.89, 53.96, 50.0]}, {"t": "NSPR", "c": "path1", "w": [0.0, -7.53, -14.52, -12.9, -15.05, -6.45, -5.91, -2.69, -4.3, -11.83, -11.29, -2.69, -14.52, -17.2, -30.65, -27.42, -32.8]}, {"t": "SI", "c": "path1", "w": [0.0, 0.14, -2.85, 3.62, -1.46, -11.34, -9.12, -7.65, -5.64, -9.46, 3.13, -0.49, -3.55, 1.6, 4.11, 4.38, -9.74]}, {"t": "AU", "c": "path1", "w": [0.0, 7.77, 15.68, 24.12, 8.49, 21.43, 28.29, 33.46, 49.26, 24.46, 12.71, -4.99, 5.92, 20.23, 29.77, 29.65, 17.95]}, {"t": "RKLB", "c": "path1", "w": [0.0, 11.66, 26.73, 16.99, 5.37, -4.83, -11.25, -6.75, -9.07, -7.74, -9.97, -11.53, -19.82, -10.87, -10.45, 11.59, 4.86]}, {"t": "WDC", "c": "path1", "w": [0.0, 6.8, 18.01, 25.94, 33.31, 50.55, 50.02, 52.11, 49.02, 30.72, 45.14, 56.23, 46.76, 57.23, 83.06, 98.56, 115.34]}, {"t": "AKBA", "c": "path1", "w": [0.0, -1.94, -12.26, -12.26, -9.03, -10.32, -21.94, -23.87, -15.48, -18.06, -5.81, -8.39, -13.55, -10.97, -9.68, -9.68, -7.74]}, {"t": "SKLZ", "c": "path1", "w": [0.0, -0.68, 2.49, -3.85, -16.1, -11.56, -14.06, -23.58, -23.81, -23.36, -26.3, -39.23, -45.8, -43.31, -44.22, -12.24, 79.37]}, {"t": "HSHP", "c": "path1", "w": [0.0, 4.47, 1.72, 7.11, 22.82, 18.58, 36.01, 60.09, 67.2, 51.03, 41.74, 41.17, 43.0, 60.55, 54.01, 63.3, 54.47]}, {"t": "TSHA", "c": "path1", "w": [0.0, -5.14, -13.14, -11.24, -14.1, -12.19, -13.33, -10.48, -13.71, -12.95, -14.48, -16.19, -22.48, -16.76, -14.48, 22.48, 21.9]}, {"t": "ARQT", "c": "path1", "w": [0.0, -2.69, -10.86, -9.66, -12.52, -5.79, -10.83, -12.34, -7.0, -17.24, -21.55, -23.41, -26.83, -18.52, -16.52, -15.41, -19.79]}, {"t": "MRP", "c": "path1", "w": [0.0, 6.04, 6.68, 3.85, 2.51, 9.01, 9.96, 6.78, 7.84, 2.4, -2.65, -2.83, -2.72, -2.37, 8.02, 9.65, 8.59]}, {"t": "AIP", "c": "path1", "w": [0.0, 10.59, 12.77, 3.66, -3.66, -4.17, -6.16, -5.46, 9.05, -6.8, -6.1, -2.82, 5.97, 16.82, 24.13, 42.04, 71.5]}, {"t": "FTCI", "c": "path1", "w": [0.0, -2.7, 0.82, -6.7, -15.13, -22.32, -22.4, -33.03, -40.8, -65.99, -63.53, -62.14, -66.97, -70.32, -71.05, -62.06, -58.79]}, {"t": "WVE", "c": "path1", "w": [0.0, -13.23, -14.42, -15.55, -18.87, -15.67, -20.5, -15.42, -12.66, -17.74, -18.37, -26.27, -60.06, -54.36, -54.98, -53.04, -54.98]}, {"t": "AMD", "c": "path1", "w": [0.0, -9.08, 3.74, 16.2, 5.93, -6.73, -7.23, -10.44, -10.41, -13.89, -13.46, -9.91, -9.61, -2.67, 9.65, 24.58, 55.64]}, {"t": "BBIO", "c": "path1", "w": [0.0, -1.27, -2.53, -0.47, -1.24, -13.02, -3.82, -12.91, -15.03, -16.46, -11.29, -12.4, -10.92, -6.51, -4.67, -1.9, -6.34]}, {"t": "POET", "c": "path1", "w": [0.0, 3.21, 15.92, -3.49, -18.99, -18.02, -22.07, -20.53, -16.2, -12.29, -4.61, -17.18, -27.51, -14.66, -1.68, 1.4, 110.89]}, {"t": "VRDN", "c": "path1", "w": [0.0, 3.49, 8.41, 7.33, 7.56, -4.66, -9.06, -10.56, -4.24, -7.63, -6.52, -12.06, -10.72, -38.59, -51.27, -51.76, -55.25]}, {"t": "WGS", "c": "path1", "w": [0.0, 2.33, -18.31, -23.39, -27.24, -36.29, -31.86, -37.97, -39.75, -33.4, -41.21, -47.21, -56.85, -49.96, -54.94, -50.14, -48.2]}, {"t": "AMPG", "c": "path1", "w": [0.0, 0.0, 10.98, 26.22, -7.32, -9.76, -17.68, -19.21, -18.29, -22.56, -21.95, -19.82, -45.12, -41.16, -43.9, -37.8, -40.55]}, {"t": "ANVS", "c": "path1", "w": [0.0, 0.55, -20.82, -17.53, -26.03, -31.78, -35.07, -32.05, -26.58, -31.78, -30.96, -28.77, -44.38, -37.53, -56.44, -48.77, -52.33]}, {"t": "CCCC", "c": "path1", "w": [0.0, 10.88, 15.54, 11.4, -1.55, -5.7, -2.07, 11.92, 39.9, 57.51, 40.93, 39.9, 24.87, 46.11, 31.61, 51.3, 49.22]}, {"t": "OWLT", "c": "path1", "w": [0.0, -2.1, -15.03, -19.79, -25.36, -29.25, -32.41, -29.99, -28.57, -55.1, -65.55, -68.21, -70.75, -68.46, -69.02, -64.07, -67.66]}, {"t": "SCYX", "c": "path1", "w": [0.0, 4.69, 1.56, 28.12, 10.94, 18.75, 17.19, 21.88, 17.19, 25.0, 34.37, 45.31, 26.56, 39.06, 56.25, 73.44, 59.38]}, {"t": "CGAU", "c": "path1", "w": [0.0, 8.65, 14.11, 29.86, 18.51, 22.55, 33.33, 34.75, 48.72, 32.41, 25.11, 12.13, 18.94, 29.79, 38.01, 42.06, 34.54]}, {"t": "IAG", "c": "path1", "w": [0.0, 6.1, 5.86, 29.16, 12.08, 17.88, 33.35, 36.87, 51.48, 34.16, 22.26, -0.92, 9.37, 17.69, 23.43, 18.68, 6.23]}, {"t": "CRDF", "c": "path1", "w": [0.0, 15.79, 8.27, 9.02, -34.21, -39.85, -39.85, -39.47, -27.07, -29.32, -30.08, -32.33, -41.73, -40.6, -40.6, -32.33, -35.34]}, {"t": "LCTX", "c": "path1", "w": [0.0, 4.27, 3.66, -1.83, -9.76, 3.66, 1.22, 10.37, 17.07, 12.8, -1.83, -11.59, -9.15, -4.27, -9.76, 4.27, -5.49]}, {"t": "PRE", "c": "path1", "w": [0.0, -1.58, -0.38, 16.73, 20.98, 21.93, 39.23, 8.05, 7.16, 12.8, 31.31, 24.33, 29.91, 24.71, 12.36, 12.99, 16.16]}, {"t": "SANG", "c": "path1", "w": [0.0, -3.61, -1.61, -3.61, -6.22, -5.82, -8.63, -7.23, -7.23, -6.63, -10.04, -13.25, -19.88, -20.68, -24.7, -15.66, -13.45]}, {"t": "MNTN", "c": "path1", "w": [0.0, -0.82, -8.45, -17.56, -24.53, -34.04, -15.75, -17.97, -19.93, -13.29, -21.49, -26.09, -30.35, -26.58, -31.09, -17.47, -18.05]}, {"t": "RSKD", "c": "path1", "w": [0.0, 0.83, -3.53, -6.24, -11.43, -10.81, -6.65, -6.65, -7.48, -6.86, -13.1, -14.55, -21.21, -16.22, -16.84, -7.28, -7.28]}, {"t": "SATL", "c": "path1", "w": [0.0, 53.57, 81.63, 167.86, 134.69, 83.67, 60.2, 81.63, 53.06, 57.65, 51.53, 83.16, 202.55, 245.41, 273.98, 253.57, 214.8]}, {"t": "APYX", "c": "path1", "w": [0.0, -0.29, 14.0, 13.43, 14.86, 10.86, 6.29, 8.0, -6.57, -10.86, 3.71, -0.57, 4.0, 5.14, 13.14, 13.71, 6.29]}, {"t": "PYXS", "c": "path1", "w": [0.0, 53.04, 53.04, 41.74, 26.09, 31.3, 13.04, 23.48, 27.83, 19.13, 33.91, 27.83, 13.91, 28.7, 47.83, 44.35, 65.22]}, {"t": "STRW", "c": "path1", "w": [0.0, 3.59, 1.87, 2.26, 1.09, 0.55, -0.31, 0.39, -1.4, -0.94, -0.78, -2.5, -7.1, 0.55, 2.81, -0.08, -3.51]}, {"t": "TG", "c": "path1", "w": [0.0, 2.04, 12.77, 16.3, 16.17, 25.82, 18.07, 19.57, 24.73, 19.57, 5.98, -1.09, 2.45, 10.46, 20.11, 22.01, 27.99]}, {"t": "AUPH", "c": "path1", "w": [0.0, -1.3, -3.26, -5.34, -5.34, -5.93, -7.3, -6.19, -7.69, -6.71, -9.12, -8.66, -7.04, 1.69, 2.67, 4.56, 4.1]}, {"t": "COCO", "c": "path1", "w": [0.0, 2.82, 0.15, -2.17, -0.21, 10.29, 5.84, 0.94, 8.6, -3.25, 9.15, -1.08, -12.14, -9.76, -4.6, -9.61, -5.74]}, {"t": "EOSE", "c": "path1", "w": [0.0, 17.81, 34.54, 31.92, 12.88, -5.09, -14.42, -17.5, -56.05, -52.74, -55.98, -59.98, -62.53, -61.68, -56.67, -44.8, -40.86]}, {"t": "ERO", "c": "path1", "w": [0.0, 0.76, 1.62, 13.05, 15.35, 5.37, 5.75, 3.79, 17.66, -4.44, -10.09, -18.8, -13.77, -3.27, 7.23, -0.34, -5.99]}, {"t": "GSIT", "c": "path1", "w": [0.0, 16.64, 19.61, 23.92, 7.28, -2.08, -8.77, -2.08, 21.25, 17.98, 26.45, -13.37, -21.69, -19.17, -16.79, -3.71, 16.34]}, {"t": "HTFL", "c": "path1", "w": [0.0, 14.39, 28.27, 11.01, 3.11, -4.25, -28.68, -13.36, -20.06, -20.68, -29.27, -10.18, -14.77, -14.29, -6.97, 8.18, 5.07]}, {"t": "HYPR", "c": "path1", "w": [0.0, 4.12, 23.71, 27.84, 15.46, 13.4, 14.43, 18.56, 10.31, 10.31, 17.53, 27.84, 14.43, 16.49, 24.74, 35.05, 32.99]}, {"t": "NRXS", "c": "path1", "w": [0.0, 8.97, 2.47, 8.97, -5.16, -2.47, 10.09, 23.99, 34.53, 28.03, 53.81, 70.85, 54.71, 62.56, 53.36, 61.88, 76.23]}, {"t": "STXS", "c": "path1", "w": [0.0, 8.19, 15.52, 15.09, -5.6, -12.5, -14.22, -10.78, -6.9, -11.64, -18.53, -22.84, -21.55, -19.4, -19.4, -12.5, -16.81]}, {"t": "TARS", "c": "path1", "w": [0.0, -4.83, -11.92, -15.36, -20.09, -20.0, -24.75, -17.53, -6.5, -9.3, -15.86, -20.13, -17.98, -13.19, -10.16, -16.75, -23.92]}, {"t": "TVTX", "c": "path1", "w": [0.0, -12.5, -29.48, -25.51, -21.33, -24.82, -29.61, -23.1, -24.62, -31.07, -29.66, -32.09, -31.05, -22.98, -26.72, 3.16, 2.48]}, {"t": "SEPN", "c": "path1", "w": [0.0, -9.58, -6.83, -7.93, -16.58, -9.19, -1.72, -2.5, 3.72, 2.86, -10.15, -13.58, -14.69, -10.01, -17.48, -6.61, -11.83]}, {"t": "CNTX", "c": "path1", "w": [0.0, 3.87, -7.1, 16.77, 68.39, 47.1, 48.39, 44.52, 45.16, 101.29, 116.77, 85.81, 67.1, 75.48, 60.65, 56.77, 45.81]}, {"t": "CURI", "c": "path1", "w": [0.0, -5.72, -1.63, -3.81, -1.09, -12.26, -13.62, -13.62, -10.08, -9.54, -9.81, -14.99, -22.34, -17.44, -13.9, -4.9, -8.45]}, {"t": "TYGO", "c": "path1", "w": [0.0, 5.96, 95.36, 134.44, 100.66, 166.23, 127.81, 123.84, 145.03, 123.18, 127.15, 152.98, 164.9, 148.34, 139.74, 162.91, 231.79]}, {"t": "ATAT", "c": "path1", "w": [0.0, -0.58, -7.47, -5.99, -10.36, -6.65, -1.76, -2.28, -1.5, -8.55, -11.61, -7.5, -12.42, -8.5, -9.38, -5.24, -2.13]}, {"t": "AXGN", "c": "path1", "w": [0.0, 8.1, 0.06, 5.9, 12.42, 12.68, 7.19, 13.87, 2.35, -7.9, 4.32, -0.71, 0.9, 11.1, 3.1, 24.19, 26.61]}, {"t": "CRON", "c": "path1", "w": [0.0, -0.74, -6.3, 2.96, -7.04, -2.22, -3.7, 0.0, -1.11, -4.81, -7.41, -11.48, -7.41, -6.3, -4.44, -0.37, -0.74]}, {"t": "EVEX", "c": "top10", "w": [0.0, 8.35, 7.88, 6.92, -5.97, -20.76, -28.16, -26.01, -28.4, -30.31, -34.13, -42.72, -42.0, -36.99, -35.56, -29.83, -33.89]}, {"t": "NPCE", "c": "path1", "w": [0.0, 10.28, 11.67, 10.15, -0.26, 3.3, -0.79, -5.47, -3.89, -7.51, -7.12, -14.3, -12.13, -3.43, -6.0, 6.72, 10.74]}, {"t": "SNDX", "c": "path1", "w": [0.0, -1.41, -3.66, -4.93, -4.65, -1.36, -3.85, -7.56, 1.92, 3.62, 10.33, 13.76, 10.28, 18.08, 14.74, 13.76, 0.42]}, {"t": "AVTX", "c": "path1", "w": [0.0, -0.41, -11.52, -7.46, -11.22, -16.63, -16.22, -16.51, 2.82, 1.7, -7.17, -21.15, -18.39, 4.35, -19.74, -15.22, -18.21]}, {"t": "CLYM", "c": "path1", "w": [0.0, 34.13, 12.53, 33.87, 19.2, 45.07, 51.2, 50.13, 90.67, 91.47, 87.47, 62.93, 87.2, 74.93, 124.27, 144.27, 143.73]}, {"t": "CV", "c": "path1", "w": [0.0, -40.43, -39.16, -41.41, -50.98, -51.56, -52.83, -54.3, -46.39, -50.0, -46.09, -32.91, -26.66, -27.34, -38.96, -41.31, -40.72]}, {"t": "FORA", "c": "path1", "w": [0.0, -1.89, -1.42, 0.0, -0.94, -1.42, -0.94, -1.89, -1.89, -1.89, -3.3, -1.89, -2.83, -0.94, 0.94, 1.42, 1.42]}, {"t": "HIT", "c": "path1", "w": [0.0, -5.71, -18.29, -17.14, -33.71, -40.0, -37.71, -32.0, -19.43, 6.29, 2.86, 2.86, -20.57, -17.71, -23.43, -14.29, -13.71]}, {"t": "ORGO", "c": "path1", "w": [0.0, -9.27, -18.32, -15.52, -13.79, -18.75, -19.61, -14.01, -30.82, -39.87, -43.1, -48.49, -50.65, -51.72, -48.71, -46.12, -49.35]}, {"t": "QTI", "c": "path1", "w": [0.0, -7.39, -3.36, -1.18, -4.87, -15.97, -5.71, -7.39, 0.84, 0.84, 0.67, 16.81, 4.37, 10.08, 16.13, 16.47, 8.74]}, {"t": "TTEC", "c": "path1", "w": [0.0, -1.4, -7.56, -3.08, -10.64, -15.13, -33.89, -36.13, -29.97, -23.81, -15.97, -24.93, -37.82, -28.29, -35.57, -5.04, -13.17]}, {"t": "FROG", "c": "path1", "w": [0.0, -0.5, -4.5, -1.91, -8.01, -19.44, -13.24, -36.63, -32.6, -31.86, -31.06, -29.04, -27.26, -15.04, -27.45, -25.94, -24.04]}, {"t": "NTSK", "c": "path1", "w": [0.0, -1.6, -12.66, -9.53, -12.13, -28.93, -29.64, -37.69, -36.09, -33.2, -42.37, -43.61, -54.26, -46.33, -48.7, -41.6, -43.02]}, {"t": "ABX", "c": "path1", "w": [0.0, 8.84, 8.21, 3.91, -5.93, -6.31, 6.06, 10.1, 15.28, 24.12, 23.74, 13.38, 5.3, 2.15, 2.53, 16.92, 16.29]}, {"t": "AEBI", "c": "path1", "w": [0.0, 15.12, 18.3, 13.52, 16.31, 23.95, 23.15, 24.18, 14.72, 6.21, 6.28, -21.16, -25.14, -23.79, -9.39, -5.73, -8.67]}, {"t": "AMBQ", "c": "path1", "w": [0.0, 9.85, 14.14, 9.59, 0.13, -1.35, -2.5, -2.01, 1.15, -6.46, -16.44, -20.13, -21.68, -6.0, -5.04, 14.53, 16.9]}, {"t": "MNKD", "c": "path1", "w": [0.0, 4.46, -6.96, -2.5, 3.21, 3.21, 1.07, -1.07, -41.43, -53.39, -50.54, -55.89, -59.29, -55.36, -54.11, -49.29, -51.79]}, {"t": "SNDA", "c": "path1", "w": [0.0, 1.13, -0.81, -1.22, -0.25, 7.08, 6.89, 8.46, 12.4, 14.75, 9.83, -0.47, -0.88, 0.78, 2.04, 8.58, 12.84]}, {"t": "XERS", "c": "path1", "w": [0.0, 7.89, 2.31, 1.22, 0.14, -4.63, -7.21, -10.07, -16.73, -20.95, -25.71, -25.99, -26.53, -17.82, -20.41, -13.33, -17.69]}, {"t": "GORO", "c": "path1", "w": [0.0, 15.48, 42.86, 91.67, 59.52, 89.29, 100.0, 95.24, 84.52, 60.71, 55.95, 17.86, 38.1, 48.81, 76.19, 88.1, 101.19]}, {"t": "III", "c": "path1", "w": [0.0, 5.81, 5.63, 0.73, -0.18, -5.99, -15.06, -14.7, -13.79, -18.69, -27.95, -30.67, -31.76, -28.13, -28.49, -22.32, -25.23]}, {"t": "SPRO", "c": "path1", "w": [0.0, 8.51, 2.55, 3.83, -6.81, 2.98, 1.7, -2.13, -7.66, -2.13, 9.79, 0.85, -0.85, 3.4, 13.62, 17.02, 16.6]}, {"t": "IBRX", "c": "path1", "w": [0.0, 15.35, 173.27, 219.31, 209.41, 199.5, 194.55, 330.69, 384.16, 329.21, 315.35, 319.31, 265.35, 261.39, 260.4, 281.19, 268.32]}, {"t": "LASR", "c": "path1", "w": [0.0, 4.3, 14.52, 14.49, 18.87, 33.23, 36.25, 45.97, 46.44, 52.83, 63.15, 71.38, 67.63, 56.68, 70.37, 83.55, 97.52]}, {"t": "LWLG", "c": "path1", "w": [0.0, 13.39, 25.41, 6.83, -9.84, -10.11, -4.64, -5.46, 20.49, 14.75, 107.92, 84.97, 97.81, 109.29, 189.62, 242.62, 246.17]}, {"t": "TGB", "c": "path1", "w": [0.0, 5.89, 25.89, 36.25, 36.07, 40.18, 48.04, 41.96, 58.57, 28.57, 17.86, 2.32, 6.79, 18.75, 30.18, 38.04, 28.57]}, {"t": "TGTX", "c": "path1", "w": [0.0, -2.77, 4.41, 6.56, 0.51, -1.43, -2.66, 0.85, 2.77, -0.03, -4.51, 2.7, 8.44, 14.52, 15.2, 20.66, 25.07]}, {"t": "ABSI", "c": "path1", "w": [0.0, -7.48, -16.34, -19.39, -17.17, -25.48, -29.36, -26.59, -24.1, -34.07, -33.8, -18.01, -22.99, -15.24, -17.45, -0.83, 9.14]}, {"t": "AQST", "c": "path1", "w": [0.0, -39.38, -48.68, -49.77, -54.26, -36.28, -43.41, -38.76, -37.98, -34.57, -37.67, -38.29, -37.67, -35.97, -36.74, -33.02, -36.74]}, {"t": "ECPG", "c": "path1", "w": [0.0, 0.11, 0.55, -1.66, -1.27, 3.29, 2.79, 4.47, 22.14, 26.42, 19.32, 21.66, 23.18, 27.24, 34.91, 44.43, 49.76]}, {"t": "GOLD", "c": "path1", "w": [0.0, 12.18, 20.55, 23.98, 49.12, 59.11, 75.18, 69.75, 65.86, 51.28, 37.0, 21.96, 13.77, 19.11, 26.93, 39.05, 35.67]}, {"t": "INTA", "c": "path1", "w": [0.0, -0.78, -12.72, -11.88, -22.61, -45.48, -47.05, -50.24, -48.87, -36.61, -41.53, -41.35, -43.74, -43.51, -53.57, -47.98, -49.28]}, {"t": "HYFT", "c": "path1", "w": [0.0, 34.65, 2.48, 12.38, -19.8, -22.28, -31.19, -35.15, -44.06, -45.05, -38.61, -42.57, -47.03, -43.56, -47.03, -34.16, -39.6]}, {"t": "INTG", "c": "path1", "w": [0.0, 5.97, 8.9, 13.66, 17.01, 15.49, 5.63, 5.59, 14.27, 38.7, 38.89, 45.13, 40.72, 44.86, 30.52, 26.71, 39.19]}, {"t": "SPRU", "c": "path1", "w": [0.0, -4.53, 5.85, 8.87, 7.17, -7.36, -16.6, -21.32, -23.96, -34.72, -22.83, -16.6, -24.91, -23.58, -24.34, -23.96, -32.64]}, {"t": "STRT", "c": "path1", "w": [0.0, 2.28, 8.19, 4.67, 4.06, 18.99, 18.91, 18.11, 15.74, 5.81, -2.67, -3.8, 1.92, 2.74, 8.06, 6.14, 0.54]}, {"t": "TATT", "c": "path1", "w": [0.0, 7.69, 10.13, 10.42, 6.94, 0.63, 3.38, 11.08, 16.37, 21.31, 15.2, -9.6, -11.31, -15.66, -6.03, -14.63, -24.42]}, {"t": "WRAP", "c": "path1", "w": [0.0, 4.26, 8.14, -5.81, -15.5, -27.52, -30.62, -33.72, -33.33, -38.76, -39.92, -43.41, -41.86, -40.7, -41.86, -43.41, -37.98]}, {"t": "CRK", "c": "path1", "w": [0.0, -9.92, -10.18, 2.71, 3.27, -8.52, -19.34, -15.31, -16.84, -9.33, -11.75, -8.02, -0.64, -17.13, -25.53, -28.5, -28.16]}, {"t": "GBTG", "c": "path1", "w": [0.0, 8.38, 1.2, -3.46, -8.91, -25.4, -32.98, -27.79, -27.26, -23.67, -26.06, -27.39, -29.12, -26.06, -25.53, -19.15, -23.8]}, {"t": "HCC", "c": "path1", "w": [0.0, 8.28, 11.75, 9.84, -0.28, -0.56, -3.66, -5.08, -6.96, -13.54, -4.87, -1.04, 10.83, 6.06, -1.25, -3.47, -3.14]}, {"t": "BCAX", "c": "path1", "w": [0.0, 9.58, 2.26, 2.2, 2.56, -6.23, -13.25, -5.49, 2.44, 12.76, 17.16, 12.39, 12.15, 31.07, 28.94, 46.58, 38.28]}, {"t": "CBLL", "c": "path1", "w": [0.0, 9.53, 3.0, 4.74, -3.24, -5.4, -7.18, -5.07, -12.35, -16.29, -13.19, -13.15, -16.57, -12.82, -14.79, -0.52, -0.56]}, {"t": "EVGO", "c": "path1", "w": [0.0, -0.65, -0.32, 0.32, -2.27, 4.87, -5.19, -9.09, -11.04, -28.25, -32.47, -37.01, -44.16, -44.48, -37.01, -28.25, -26.3]}, {"t": "GAU", "c": "path1", "w": [0.0, 3.91, 8.59, 20.7, 3.91, 2.34, 17.97, 19.92, 37.5, 23.44, 0.0, -14.84, -10.94, 0.0, 5.47, 1.17, -5.08]}, {"t": "GEVO", "c": "path1", "w": [0.0, -3.4, -2.43, 6.31, -4.85, -7.28, -9.71, -9.71, -11.65, 3.88, 15.53, 10.19, 22.33, 11.65, -6.31, -17.48, -12.62]}, {"t": "TBLA", "c": "path1", "w": [0.0, -3.84, -5.64, -6.32, -9.71, -18.74, -24.15, -23.25, -28.44, -25.51, -30.02, -30.02, -32.28, -27.31, -24.38, -15.35, -14.22]}, {"t": "AIRO", "c": "core5", "w": [0.0, 35.17, 44.7, 31.93, 11.36, 4.33, -0.43, 0.76, 6.06, 9.09, 5.95, -0.65, -7.14, -5.74, -14.72, -12.66, -14.18]}, {"t": "CPSH", "c": "path1", "w": [0.0, 17.5, 69.69, 73.12, 66.87, 59.37, 46.88, 41.56, 40.0, 19.06, 18.12, 16.88, 12.5, 25.62, 47.5, 63.12, 65.0]}, {"t": "PODC", "c": "path1", "w": [0.0, 11.49, 7.23, 15.74, 22.98, 20.43, 21.7, 5.96, 10.64, -0.85, -2.55, 3.4, -7.23, -8.09, -4.26, -3.83, 36.17]}, {"t": "SLP", "c": "path1", "w": [0.0, 8.23, 12.26, 15.07, -6.74, -19.55, -32.14, -35.62, -32.47, -32.52, -31.31, -35.56, -36.94, -33.79, -28.0, -20.65, -19.6]}, {"t": "AG", "c": "path1", "w": [0.0, 17.75, 33.81, 58.34, 29.7, 36.86, 42.9, 71.48, 99.32, 60.83, 40.47, 13.76, 28.77, 35.99, 28.14, 33.81, 28.02]}, {"t": "CEPU", "c": "path1", "w": [0.0, -2.31, -11.87, -5.19, -4.78, -10.03, -10.37, -5.59, -9.57, -17.18, -12.68, -12.68, -14.7, -1.67, -3.69, -11.12, -16.54]}, {"t": "FLOC", "c": "path1", "w": [0.0, 1.64, 7.28, 7.86, 9.87, 20.11, 15.15, 23.01, 19.05, 22.96, 20.32, 14.46, 10.82, 8.81, 20.26, 24.91, 26.97]}, {"t": "KYMR", "c": "path1", "w": [0.0, 2.76, -4.43, -3.89, -0.1, 9.39, 13.17, 20.12, 25.55, 14.75, 8.62, 7.08, 7.42, 17.37, 16.89, 20.55, 16.7]}, {"t": "LQDA", "c": "path1", "w": [0.0, 14.2, 20.8, 29.27, 35.0, 37.07, 21.66, 6.97, -1.21, 14.75, 16.75, 15.96, 11.56, 20.0, 22.77, 25.7, 18.82]}, {"t": "BRZE", "c": "path1", "w": [0.0, -7.62, -29.25, -22.83, -36.04, -45.35, -45.93, -47.28, -41.66, -38.13, -42.33, -43.69, -29.34, -27.25, -41.72, -30.38, -28.51]}, {"t": "FLY", "c": "core5", "w": [0.0, 26.73, 40.61, 22.6, 6.06, 0.51, -18.77, -15.91, -18.9, -16.96, -1.22, -2.27, -0.25, 38.59, 58.0, 84.01, 47.85]}, {"t": "LOAR", "c": "path1", "w": [0.0, 4.14, 6.59, 3.7, -2.35, -6.66, -8.22, -4.4, 0.8, -1.1, -7.92, -15.66, -20.45, -18.78, -8.42, -3.92, -18.38]}, {"t": "SEZL", "c": "path1", "w": [0.0, 18.45, 5.14, 3.76, -2.93, 3.93, -1.67, -3.68, 11.97, 12.77, 1.78, 1.53, -5.48, -2.13, -8.35, 23.88, 20.8]}, {"t": "BSM", "c": "path1", "w": [0.0, 1.74, 4.31, 8.23, 9.37, 11.03, 12.54, 13.82, 14.05, 14.73, 16.24, 15.48, 14.43, 10.65, 6.34, 3.25, 7.18]}, {"t": "MXL", "c": "path1", "w": [0.0, 2.65, 4.27, -0.54, -6.27, 1.13, 5.51, -0.22, -5.83, -15.07, -8.75, -10.53, -8.16, -2.86, 11.78, 41.92, 225.88]}, {"t": "BLTE", "c": "path1", "w": [0.0, -0.57, -2.61, 3.33, 6.11, 17.95, 10.04, 13.61, 19.48, 8.81, 3.04, -2.94, -4.52, 6.64, 8.47, 3.88, 1.25]}, {"t": "FLNC", "c": "top10", "w": [0.0, 0.83, 17.69, 17.08, 33.72, -15.51, -19.77, -28.07, -32.46, -35.77, -28.81, -34.25, -38.5, -42.2, -40.11, -41.2, -41.85]}, {"t": "HRI", "c": "path1", "w": [0.0, 10.27, 3.67, 4.83, -5.92, 18.35, 13.63, 1.2, -7.81, -20.78, -28.18, -33.78, -33.83, -39.96, -32.1, -27.34, -19.25]}, {"t": "WRD", "c": "path1", "w": [0.0, 2.66, -5.75, -6.07, -14.7, -16.83, -19.38, -24.49, -25.56, -32.16, -29.18, -32.37, -25.99, -16.83, -20.13, -12.57, -15.23]}, {"t": "BULL", "c": "path1", "w": [0.0, 3.3, -0.37, -4.27, -14.16, -19.66, -26.62, -27.84, -29.06, -33.46, -35.65, -37.36, -41.15, -41.15, -39.8, -17.95, -15.75]}, {"t": "JOBY", "c": "path1", "w": [0.0, 7.17, 7.45, -2.99, -26.39, -26.74, -31.06, -31.27, -29.94, -33.5, -32.45, -35.72, -43.59, -40.81, -41.92, -35.79, -40.81]}, {"t": "LB", "c": "path1", "w": [0.0, 4.18, 25.26, 24.82, 18.58, 17.05, 34.64, 41.4, 53.74, 49.63, 54.59, 46.65, 48.86, 43.1, 40.57, 38.96, 41.15]}, {"t": "TMDX", "c": "path1", "w": [0.0, 11.72, 16.86, 10.28, 9.2, 10.08, 5.83, 9.42, 18.4, 5.64, 0.64, -7.16, -19.27, -17.93, -7.08, -5.56, -9.59]}, {"t": "ALHC", "c": "path1", "w": [0.0, 2.77, 11.28, 17.75, 11.42, 7.57, -0.15, 1.88, -4.95, -8.8, -15.97, -14.24, -17.8, -7.22, 1.38, 4.95, 4.5]}, {"t": "GPCR", "c": "top10", "w": [0.0, 0.72, 30.12, 32.66, 29.84, 9.98, 2.86, -2.3, -7.55, -15.25, -21.1, -28.67, -32.59, -21.49, -19.98, -25.5, -33.22]}, {"t": "KALU", "c": "path1", "w": [0.0, 2.3, 6.59, 6.53, 2.53, 15.81, 17.4, 7.88, 8.81, 2.59, -1.7, -10.5, -4.22, 10.06, 19.29, 24.04, 49.41]}, {"t": "LCII", "c": "path1", "w": [0.0, 5.39, 10.53, 18.4, 18.0, 24.41, 26.4, 18.72, 7.15, 4.33, 0.16, -4.6, -1.46, -0.37, 2.54, 0.23, -2.55]}, {"t": "LGN", "c": "path1", "w": [0.0, -0.4, 10.99, 11.39, 4.99, 9.38, 6.98, 23.63, 29.92, 12.82, 13.92, 9.29, 22.54, 31.33, 41.45, 65.11, 79.95]}, {"t": "SIMO", "c": "path1", "w": [0.0, 20.65, 20.38, 20.45, 26.85, 36.58, 45.91, 44.41, 38.36, 26.71, 31.97, 32.51, 17.84, 21.95, 35.66, 49.58, 64.31]}];
const HIST_BENCH = {"SPY": {"n": "S&P 500", "w": [0.0, 1.6, 1.24, 0.89, 1.29, 1.09, -0.21, 0.92, 0.41, -1.58, -3.06, -4.81, -6.93, -3.74, -0.27, 4.23, 4.79]}, "QQQ": {"n": "NASDAQ 100", "w": [0.0, 2.21, 1.33, 1.57, 1.43, -0.57, -1.83, -0.7, -0.95, -2.18, -3.16, -5.07, -8.13, -4.47, -0.21, 5.96, 8.42]}, "IWM": {"n": "Russell 2000", "w": [0.0, 4.6, 6.83, 6.44, 4.37, 6.53, 5.7, 6.36, 5.08, 0.85, -0.88, -2.46, -2.11, 1.19, 5.22, 11.05, 11.4]}};
const HIST_PORT = [0.0, 18.7, 20.2, 11.59, -3.24, -6.04, -16.8, -18.64, -16.58, -20.31, -17.26, -21.41, -22.8, -15.03, -11.88, -0.79, -5.9];
const WEEK_LABELS = ["1/2", "1/9", "1/16", "1/23", "1/30", "2/6", "2/13", "2/20", "2/27", "3/6", "3/13", "3/20", "3/27", "4/3", "4/10", "4/17", "4/24"];
const DATE_LABELS = ['5/1','5/4','5/5','5/6','5/7'];
import React, { useState, useMemo } from 'react';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, ReferenceLine, BarChart, Bar, Cell } from 'recharts';
import { Search, ExternalLink, X, Calendar, TrendingUp, Newspaper, AlertTriangle } from 'lucide-react';

const COLOR = {
  bg:'#1a1d27',bgCard:'#252934',bgCardAlt:'#2a2e3a',
  border:'#3a3f4d',borderSoft:'#2e323d',
  text:'#e8ecf1',textMuted:'#9ba3b3',textDim:'#6b7280',
  positive:'#ff3b30',negative:'#3b82f6',
  core5:'#fbbf24',top10:'#c084fc',portfolio:'#22d3ee',
  benchSpy:'#94a3b8',benchQqq:'#cbd5e1',benchIwm:'#e2e8f0',
  avgLine:'#ffffff',neutral:'#9ba3b3',
};
const SECTOR_COLORS = {
  'Healthcare':'#14b8a6','Industrials':'#818cf8','Basic Materials':'#fb923c',
  'Energy':'#84cc16','Technology':'#f472b6','Financial':'#06b6d4',
  'Communication Services':'#facc15','Consumer Cyclical':'#d946ef',
  'Real Estate':'#fb7185','Consumer Defensive':'#34d399','Utilities':'#38bdf8',
};
function getColor(s) {
  if (s.category==='core5') return COLOR.core5;
  if (s.category==='top10') return COLOR.top10;
  return SECTOR_COLORS[s.sector]||COLOR.neutral;
}
function sw(s) {
  if (s.category==='core5') return 2.6;
  if (s.category==='top10') return 1.8;
  return 0.9;
}
function tvUrl(t) { return `https://www.tradingview.com/symbols/${t}/`; }
function fmtM(m) {
  if (m==null) return '\u2014';
  if (m>=1000) return `$${(m/1000).toFixed(2)}B`;
  return `$${m}M`;
}
function fmtV(v) {
  if (v==null) return '\u2014';
  if (Math.abs(v)>=1000) return `${v<0?'-':''}$${(Math.abs(v)/1000).toFixed(2)}B`;
  return `${v<0?'-':''}$${Math.abs(v).toFixed(1)}M`;
}
function rc(v) {
  if (v>0) return COLOR.positive;
  if (v<0) return COLOR.negative;
  return COLOR.textMuted;
}
function Btn({label, active, onClick, dot}) {
  return (
    <button onClick={onClick} style={{
      padding:'6px 12px',fontSize:'11px',fontWeight:500,
      border:`1px solid ${active?COLOR.text:COLOR.border}`,
      background:active?COLOR.text:'transparent',
      color:active?COLOR.bg:COLOR.textMuted,
      cursor:'pointer',transition:'all .15s',borderRadius:'4px'
    }}>
      {dot&&<span style={{display:'inline-block',width:6,height:6,borderRadius:'50%',background:dot,marginRight:5,verticalAlign:'middle'}}/>}
      {label}
    </button>
  );
}

export default function Dashboard() {
  const [filter,setFilter]=useState('all');
  const [secF,setSecF]=useState('all');
  const [search,setSearch]=useState('');
  const [sort,setSort]=useState('return_desc');
  const [hov,setHov]=useState(null);
  const [tab,setTab]=useState('chart');
  const [showB,setShowB]=useState({SPY:true,QQQ:true,IWM:false});
  const [showP,setShowP]=useState(true);
  const [histFilter,setHistFilter]=useState('all');
  const [showHB,setShowHB]=useState({SPY:true,QQQ:false,IWM:false});
  const [showHP,setShowHP]=useState(true);

  const sectors=useMemo(()=>[...new Set(STOCKS.map(s=>s.sector))].sort(),[]);
  const filtered=useMemo(()=>STOCKS.filter(s=>{
    if(filter==='core5'&&s.category!=='core5') return false;
    if(filter==='top10'&&!['core5','top10'].includes(s.category)) return false;
    if(filter==='path1'&&s.category!=='path1') return false;
    if(secF!=='all'&&s.sector!==secF) return false;
    if(search){const q=search.toLowerCase();if(!s.ticker.toLowerCase().includes(q)&&!s.name.toLowerCase().includes(q)) return false;}
    return true;
  }),[filter,secF,search]);
  const sorted=useMemo(()=>{
    const arr=[...filtered];
    const cmp={
      return_desc:(a,b)=>b.return_pct-a.return_pct,return_asc:(a,b)=>a.return_pct-b.return_pct,
      v8_desc:(a,b)=>b.v8-a.v8,mcap_desc:(a,b)=>(b.mcap||0)-(a.mcap||0),
      rev_desc:(a,b)=>(b.rev||0)-(a.rev||0),opi_desc:(a,b)=>(b.opi||0)-(a.opi||0),
      ticker:(a,b)=>a.ticker.localeCompare(b.ticker),
    };
    arr.sort(cmp[sort]||cmp.return_desc);
    return arr;
  },[filtered,sort]);
  const stats=useMemo(()=>{
    if(!filtered.length) return{avg:0,pos:0,neg:0,max:null,min:null};
    const avg=filtered.reduce((a,s)=>a+s.return_pct,0)/filtered.length;
    return{avg,pos:filtered.filter(s=>s.return_pct>0).length,neg:filtered.filter(s=>s.return_pct<0).length,
      max:filtered.reduce((a,s)=>a.return_pct>s.return_pct?a:s),
      min:filtered.reduce((a,s)=>a.return_pct<s.return_pct?a:s)};
  },[filtered]);
  const c5f=PORT_DAILY[PORT_DAILY.length-1];
  const allF=STOCKS.reduce((a,s)=>a+s.return_pct,0)/STOCKS.length;
  const alphas=useMemo(()=>{
    const r={};
    Object.keys(BENCH_DAILY).forEach(k=>{
      const b=BENCH_DAILY[k].daily_returns[BENCH_DAILY[k].daily_returns.length-1];
      r[k]={bench:b,c5:c5f-b,all:allF-b};
    });
    return r;
  },[c5f,allF]);
  const chartData=useMemo(()=>DATE_LABELS.map((date,i)=>{
    const pt={date};
    filtered.forEach(s=>{pt[s.ticker]=s.daily_returns[i];});
    if(filtered.length) pt._avg=filtered.reduce((a,s)=>a+s.daily_returns[i],0)/filtered.length;
    Object.keys(BENCH_DAILY).forEach(k=>{if(showB[k]) pt[`_${k}`]=BENCH_DAILY[k].daily_returns[i];});
    if(showP) pt._port=PORT_DAILY[i];
    return pt;
  }),[filtered,showB,showP]);
  const histFiltered=useMemo(()=>histFilter==='all'?HIST:HIST.filter(s=>s.c===histFilter),[histFilter]);
  const histChartData=useMemo(()=>WEEK_LABELS.map((label,i)=>{
    const pt={date:label};
    histFiltered.forEach(s=>{pt[s.t]=s.w[i];});
    if(histFiltered.length) pt._avg=histFiltered.reduce((a,s)=>a+(s.w[i]||0),0)/histFiltered.length;
    Object.keys(HIST_BENCH).forEach(k=>{if(showHB[k]) pt[`_${k}`]=HIST_BENCH[k].w[i];});
    if(showHP) pt._port=HIST_PORT[i];
    return pt;
  }),[histFiltered,showHB,showHP]);
  const c5Stocks=STOCKS.filter(s=>s.category==='core5');
  const topN=useMemo(()=>[...filtered].sort((a,b)=>b.return_pct-a.return_pct).slice(0,5),[filtered]);
  const botN=useMemo(()=>[...filtered].sort((a,b)=>a.return_pct-b.return_pct).slice(0,5),[filtered]);
  const histFinal=useMemo(()=>{
    const all=HIST.map(s=>s.w[s.w.length-1]).filter(v=>v!=null);
    const c5=HIST.filter(s=>s.c==='core5').map(s=>s.w[s.w.length-1]).filter(v=>v!=null);
    return{allAvg:all.reduce((a,v)=>a+v,0)/all.length,c5Avg:c5.reduce((a,v)=>a+v,0)/c5.length};
  },[]);

  const Tip=({active,payload,label})=>{
    if(!active||!payload||!payload.length) return null;
    const ov=payload.filter(p=>p.dataKey.startsWith('_'));
    const sp=[...payload.filter(p=>!p.dataKey.startsWith('_'))].sort((a,b)=>(b.value||0)-(a.value||0));
    return(
      <div style={{background:COLOR.bg,border:`1px solid ${COLOR.border}`,padding:'10px 12px',fontSize:'11px',maxHeight:'300px',overflowY:'auto',maxWidth:'240px',borderRadius:'4px'}}>
        <div style={{color:COLOR.textMuted,fontSize:'10px',marginBottom:'6px'}}>{label}</div>
        {ov.length>0&&<div style={{marginBottom:'6px',paddingBottom:'6px',borderBottom:`1px solid ${COLOR.borderSoft}`}}>
          {ov.map(p=><div key={p.dataKey} style={{display:'flex',justifyContent:'space-between',gap:'12px',padding:'2px 0'}}>
            <span style={{color:p.color,fontWeight:700,fontSize:'10px'}}>{p.dataKey==='_avg'?'필터평균':p.dataKey==='_port'?'5종포트':p.dataKey.slice(1)}</span>
            <span style={{color:rc(p.value||0),fontWeight:700}}>{(p.value||0)>=0?'+':''}{(p.value||0).toFixed(2)}%</span>
          </div>)}
        </div>}
        {sp.slice(0,12).map(p=><div key={p.dataKey} style={{display:'flex',justifyContent:'space-between',gap:'12px',padding:'2px 0'}}>
          <span style={{color:p.color,fontWeight:600}}>{p.dataKey}</span>
          <span style={{color:rc(p.value||0),fontWeight:600}}>{(p.value||0)>=0?'+':''}{(p.value||0).toFixed(2)}%</span>
        </div>)}
        {sp.length>12&&<div style={{fontSize:'9px',color:COLOR.textDim,marginTop:'4px'}}>\uc678 {sp.length-12}\uc885...</div>}
      </div>
    );
  };

  const tabStyle=(k)=>({padding:'8px 16px',fontSize:'12px',fontWeight:600,border:'none',background:'transparent',color:tab===k?COLOR.text:COLOR.textMuted,cursor:'pointer',borderBottom:tab===k?`2px solid ${COLOR.core5}`:'2px solid transparent',transition:'all .15s'});

  return(
    <div style={{backgroundColor:COLOR.bg,minHeight:'100vh',color:COLOR.text,padding:'20px 16px'}}>
      <style>{`
        @import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable.css');
        body{background-color:#1a1d27;margin:0;}
        body,*{font-family:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-variant-numeric:tabular-nums;}
        .tr:hover{background:rgba(255,255,255,0.04);}
        .tr.core5{border-left:3px solid #fbbf24;background:rgba(251,191,36,0.04);}
        .tr.top10{border-left:3px solid #c084fc;}
        .sx::-webkit-scrollbar{height:6px;}
        .sx::-webkit-scrollbar-track{background:#252934;}
        .sx::-webkit-scrollbar-thumb{background:#3a3f4d;border-radius:3px;}
      `}</style>
      <div style={{maxWidth:'1400px',margin:'0 auto'}}>

        {/* HEADER */}
        <header style={{marginBottom:'20px',borderBottom:`1px solid ${COLOR.border}`,paddingBottom:'20px'}}>
          <div style={{display:'flex',justifyContent:'space-between',alignItems:'flex-start',flexWrap:'wrap',gap:'12px',marginBottom:'14px'}}>
            <div>
              <div style={{fontSize:'10px',color:COLOR.textDim,letterSpacing:'0.15em',marginBottom:'6px',fontWeight:500}}>V8 v4 &middot; TENBAGGER FORWARD TRACKING &middot; v0.6</div>
              <h1 style={{fontSize:'clamp(24px,4vw,36px)',fontWeight:800,margin:0,color:COLOR.text,lineHeight:1.15,letterSpacing:'-0.025em'}}>
                \ud150\ubc30\uac70 \ud6c4\ubcf4 <span style={{color:COLOR.core5}}>{filtered.length}</span>\uc885 &middot; \ubca4\uce58 \ube44\uad50
              </h1>
              <div style={{marginTop:'6px',fontSize:'11px',color:COLOR.textMuted}}>
                \uc77c\ubcc4 <span style={{color:COLOR.text}}>2026-05-01 ~ 2026-05-07</span>
                <span style={{margin:'0 8px',color:COLOR.borderSoft}}>|</span>
                \uc8fc\ubd09 <span style={{color:COLOR.text}}>2026-01-02 ~ 2026-04-24 (A\uc548)</span>
              </div>
            </div>
            <div style={{textAlign:'right'}}>
              <div style={{fontSize:'10px',color:COLOR.textDim,letterSpacing:'0.1em',fontWeight:500}}>\uc804\uccb4 \ud3c9\uade0</div>
              <div style={{fontSize:'32px',fontWeight:800,color:rc(stats.avg),marginTop:'2px',letterSpacing:'-0.02em'}}>
                {stats.avg>=0?'+':''}{stats.avg.toFixed(2)}%
              </div>
              <div style={{fontSize:'10px',color:COLOR.textMuted,marginTop:'2px'}}>
                <span style={{color:COLOR.positive}}>&uarr; {stats.pos}</span>
                <span style={{margin:'0 6px',color:COLOR.borderSoft}}>&middot;</span>
                <span style={{color:COLOR.negative}}>&darr; {stats.neg}</span>
              </div>
            </div>
          </div>
          {/* Alpha cards */}
          <div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(180px,1fr))',gap:'8px'}}>
            <div style={{padding:'6px 10px',background:COLOR.bgCardAlt,borderRadius:'4px'}}>
              <div style={{fontSize:'9px',color:COLOR.textDim,letterSpacing:'0.1em',marginBottom:'4px'}}>5\uc885 \ud3ec\ud2b8\ud3f4\ub9ac\uc624</div>
              <div style={{fontSize:'18px',fontWeight:800,color:rc(c5f)}}>{c5f>=0?'+':''}{c5f.toFixed(2)}%</div>
            </div>
            {Object.entries(alphas).map(([k,a])=>(
              <div key={k} style={{padding:'6px 10px',background:COLOR.bgCardAlt,borderRadius:'4px'}}>
                <div style={{fontSize:'9px',color:COLOR.textDim,letterSpacing:'0.1em',marginBottom:'4px'}}>
                  vs {BENCH_DAILY[k].name} ({a.bench>=0?'+':''}{a.bench.toFixed(2)}%)
                </div>
                <div style={{display:'flex',justifyContent:'space-between',gap:'8px'}}>
                  <div><span style={{fontSize:'9px',color:COLOR.textMuted}}>5\uc885</span>
                    <div style={{fontSize:'14px',fontWeight:700,color:rc(a.c5)}}>{a.c5>=0?'+':''}{a.c5.toFixed(2)}pp</div>
                  </div>
                  <div style={{textAlign:'right'}}><span style={{fontSize:'9px',color:COLOR.textMuted}}>\uc804\uccb4</span>
                    <div style={{fontSize:'14px',fontWeight:700,color:rc(a.all)}}>{a.all>=0?'+':''}{a.all.toFixed(2)}pp</div>
                  </div>
                </div>
              </div>
            ))}
          </div>
          <div style={{marginTop:'14px',padding:'8px 12px',background:'rgba(20,184,166,0.06)',border:'1px solid rgba(20,184,166,0.2)',borderRadius:'4px',fontSize:'10px',color:'#5eead4'}}>
            &#10003; \uc885\ubaa9 + \ubca4\uce58\ub9c8\ud06c \ubaa8\ub450 \uc2e4\ub370\uc774\ud130 (yfinance) &middot; 5\uac70\ub798\uc77c (5/1~5/7) + 17\uc8fc\ubd09 A\uc548 (1/2~4/24)
          </div>
        </header>

        {/* TABS */}
        <div style={{display:'flex',gap:'4px',borderBottom:`1px solid ${COLOR.border}`,marginBottom:'20px'}}>
          <button style={tabStyle('chart')} onClick={()=>setTab('chart')}>\uc218\uc775\ub960 \ucd94\uc801</button>
          <button style={tabStyle('history')} onClick={()=>setTab('history')}>\ud788\uc2a4\ud1a0\ub9ac (A\uc548)</button>
          <button style={tabStyle('sector')} onClick={()=>setTab('sector')}>\uc139\ud130 \ubd84\uc11d</button>
          <button style={tabStyle('monitoring')} onClick={()=>setTab('monitoring')}>5\uc885 \ubaa8\ub2c8\ud130\ub9c1</button>
        </div>

        {/* TAB: 수익률 추적 */}
        {tab==='chart'&&(<>
          <div style={{marginBottom:'20px'}}>
            <div style={{display:'flex',gap:'6px',flexWrap:'wrap',marginBottom:'10px',alignItems:'center'}}>
              <span style={{fontSize:'10px',color:COLOR.textDim,letterSpacing:'0.1em',marginRight:'4px'}}>\uce74\ud14c\uace0\ub9ac</span>
              <Btn label={`\uc804\uccb4 ${STOCKS.length}`} active={filter==='all'} onClick={()=>setFilter('all')}/>
              <Btn label="\ud655\uc815 5\uc885" active={filter==='core5'} onClick={()=>setFilter('core5')} dot={COLOR.core5}/>
              <Btn label="\ub525\ub9ac\uc11c\uce58 10\uc885" active={filter==='top10'} onClick={()=>setFilter('top10')} dot={COLOR.top10}/>
              <Btn label="path1" active={filter==='path1'} onClick={()=>setFilter('path1')}/>
            </div>
            <div style={{display:'flex',gap:'6px',flexWrap:'wrap',alignItems:'center',marginBottom:'10px'}}>
              <span style={{fontSize:'10px',color:COLOR.textDim,letterSpacing:'0.1em'}}>\uc139\ud130</span>
              <Btn label="ALL" active={secF==='all'} onClick={()=>setSecF('all')}/>
              {sectors.map(s=><Btn key={s} label={s} active={secF===s} onClick={()=>setSecF(s)} dot={SECTOR_COLORS[s]||COLOR.neutral}/>)}
              <div style={{marginLeft:'auto',position:'relative',display:'flex',alignItems:'center'}}>
                <Search size={11} style={{position:'absolute',left:8,color:COLOR.textDim}}/>
                <input value={search} onChange={e=>setSearch(e.target.value)} placeholder="\ud2f0\ucee4 / \ud68c\uc0ac\uba85 \uac80\uc0c9"
                  style={{background:'transparent',border:`1px solid ${COLOR.border}`,padding:'6px 24px 6px 24px',fontSize:'11px',color:COLOR.text,outline:'none',width:'180px',borderRadius:'4px'}}/>
                {search&&<X size={11} style={{position:'absolute',right:8,color:COLOR.textDim,cursor:'pointer'}} onClick={()=>setSearch('')}/>}
              </div>
            </div>
            <div style={{display:'flex',gap:'6px',flexWrap:'wrap',alignItems:'center'}}>
              <span style={{fontSize:'10px',color:COLOR.textDim,letterSpacing:'0.1em'}}>\uc624\ubc84\ub808\uc774</span>
              <Btn label="5\uc885 \ud3ec\ud2b8 \ud3c9\uade0" active={showP} onClick={()=>setShowP(!showP)}/>
              {Object.keys(BENCH_DAILY).map(k=><Btn key={k} label={k} active={showB[k]} onClick={()=>setShowB({...showB,[k]:!showB[k]})}/>)}
            </div>
          </div>
          <div style={{background:COLOR.bgCard,border:`1px solid ${COLOR.border}`,padding:'20px',marginBottom:'20px',borderRadius:'6px'}}>
            <ResponsiveContainer width="100%" height={440}>
              <LineChart data={chartData} margin={{top:30,right:16,left:0,bottom:8}}>
                <CartesianGrid strokeDasharray="2 4" stroke={COLOR.borderSoft} vertical={false}/>
                <XAxis dataKey="date" stroke={COLOR.textDim} fontSize={11} tickLine={false} axisLine={{stroke:COLOR.border}} tick={{fill:COLOR.textMuted}}/>
                <YAxis stroke={COLOR.textDim} fontSize={10} tickLine={false} axisLine={false} tick={{fill:COLOR.textMuted}} tickFormatter={v=>`${v>0?'+':''}${v.toFixed(0)}%`}/>
                <ReferenceLine y={0} stroke={COLOR.textMuted} strokeDasharray="3 3"/>
                <Tooltip content={<Tip/>}/>
                {filtered.map(s=>(<Line key={s.ticker} type="linear" dataKey={s.ticker} stroke={getColor(s)}
                  strokeWidth={hov===s.ticker?4:sw(s)} strokeOpacity={hov&&hov!==s.ticker?0.1:(s.category==='path1'?0.5:0.95)}
                  dot={false} activeDot={{r:4,strokeWidth:0}} isAnimationActive={false}/>))}
                <Line type="linear" dataKey="_avg" stroke={COLOR.avgLine} strokeWidth={1.5} strokeDasharray="4 3" dot={false} isAnimationActive={false}/>
                {showP&&<Line type="linear" dataKey="_port" stroke={COLOR.portfolio} strokeWidth={3} dot={{r:3.5,fill:COLOR.portfolio,strokeWidth:0}} isAnimationActive={false}/>}
                {Object.keys(BENCH_DAILY).map(k=>showB[k]&&(<Line key={k} type="linear" dataKey={`_${k}`} stroke={COLOR[`bench${k[0]}${k.slice(1).toLowerCase()}`]||COLOR.neutral} strokeWidth={2} strokeDasharray="6 3" dot={{r:2.5}} isAnimationActive={false}/>))}
              </LineChart>
            </ResponsiveContainer>
          </div>
          <div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(280px,1fr))',gap:'12px',marginBottom:'20px'}}>
            <RankList title="TOP 5 (\uc218\uc775\ub960)" items={topN} pos/>
            <RankList title="BOTTOM 5 (\uc218\uc775\ub960)" items={botN}/>
          </div>
          <StockTable sorted={sorted} hov={hov} setHov={setHov} sort={sort} setSort={setSort}/>
        </>)}

        {/* TAB: 히스토리 A안 */}
        {tab==='history'&&(
          <div>
            <div style={{marginBottom:'16px',padding:'12px 14px',background:'rgba(251,191,36,0.06)',border:'1px solid rgba(251,191,36,0.2)',borderRadius:'6px',display:'flex',gap:'10px',alignItems:'flex-start'}}>
              <AlertTriangle size={14} style={{color:COLOR.core5,flexShrink:0,marginTop:1}}/>
              <div style={{fontSize:'11px',color:COLOR.top10,lineHeight:1.6}}>
                <strong style={{color:COLOR.core5}}>A\uc548 (\ucc38\uace0\uc6a9) &mdash; \uc815\ud655\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc74c</strong><br/>
                \ud604\uc7ac 176\uc885\uc744 1\uc6d4\ubd80\ud130 \ubcf4\uc720\ud588\ub2e4\ub294 \uac00\uc815 (Look-ahead bias \uc788\uc74c). \uc7ac\ubb34\ub370\uc774\ud130(TTM)\ub294 \ud604\uc7ac \uc2dc\uc810 \uae30\uc900\uc774\ubbc0\ub85c \ub2f9\uc2dc \uc2e4\uc81c V8 \uc2a4\ud06c\ub9ac\ub2dd \uacb0\uacfc\uc640 \ucd5c\ub300 1\ubd84\uae30 \uc624\ucc28 \uc788\uc74c. B\uc548 \ub370\uc774\ud130\ub294 2026-05-01\ubd80\ud130 \uc2e4\uc81c \ub204\uc801 \uc911.
              </div>
            </div>
            <div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(160px,1fr))',gap:'8px',marginBottom:'16px'}}>
              {[{l:'\uc804\uccb4 176\uc885 17\uc8fc',v:histFinal.allAvg},{l:'5\uc885 \ud3ec\ud2b8 17\uc8fc',v:histFinal.c5Avg},...Object.entries(HIST_BENCH).map(([k,b])=>({l:`${b.n} 17\uc8fc`,v:b.w[b.w.length-1]||0}))].map((c,i)=>(
                <div key={i} style={{padding:'6px 10px',background:COLOR.bgCardAlt,borderRadius:'4px'}}>
                  <div style={{fontSize:'9px',color:COLOR.textDim,letterSpacing:'0.1em',marginBottom:'4px'}}>{c.l}</div>
                  <div style={{fontSize:'20px',fontWeight:800,color:rc(c.v)}}>{c.v>=0?'+':''}{c.v.toFixed(2)}%</div>
                </div>
              ))}
            </div>
            <div style={{display:'flex',gap:'6px',flexWrap:'wrap',alignItems:'center',marginBottom:'12px'}}>
              <span style={{fontSize:'10px',color:COLOR.textDim,letterSpacing:'0.1em'}}>\uce74\ud14c\uace0\ub9ac</span>
              <Btn label="\uc804\uccb4" active={histFilter==='all'} onClick={()=>setHistFilter('all')}/>
              <Btn label="\ud655\uc815 5\uc885" active={histFilter==='core5'} onClick={()=>setHistFilter('core5')} dot={COLOR.core5}/>
              <Btn label="\ub525\ub9ac\uc11c\uce58 10\uc885" active={histFilter==='top10'} onClick={()=>setHistFilter('top10')} dot={COLOR.top10}/>
              <Btn label="path1" active={histFilter==='path1'} onClick={()=>setHistFilter('path1')}/>
              <span style={{margin:'0 4px',color:COLOR.borderSoft}}>|</span>
              <Btn label="5\uc885 \ud3ec\ud2b8" active={showHP} onClick={()=>setShowHP(!showHP)}/>
              {Object.keys(HIST_BENCH).map(k=><Btn key={k} label={k} active={showHB[k]} onClick={()=>setShowHB({...showHB,[k]:!showHB[k]})}/>)}
            </div>
            <div style={{background:COLOR.bgCard,border:`1px solid ${COLOR.border}`,padding:'20px',marginBottom:'16px',borderRadius:'6px'}}>
              <ResponsiveContainer width="100%" height={440}>
                <LineChart data={histChartData} margin={{top:20,right:16,left:0,bottom:8}}>
                  <CartesianGrid strokeDasharray="2 4" stroke={COLOR.borderSoft} vertical={false}/>
                  <XAxis dataKey="date" stroke={COLOR.textDim} fontSize={10} tickLine={false} axisLine={{stroke:COLOR.border}} tick={{fill:COLOR.textMuted}}/>
                  <YAxis stroke={COLOR.textDim} fontSize={10} tickLine={false} axisLine={false} tick={{fill:COLOR.textMuted}} tickFormatter={v=>`${v>0?'+':''}${v.toFixed(0)}%`}/>
                  <ReferenceLine y={0} stroke={COLOR.textMuted} strokeDasharray="3 3"/>
                  <Tooltip content={<Tip/>}/>
                  {histFiltered.map(s=>(<Line key={s.t} type="linear" dataKey={s.t}
                    stroke={s.c==='core5'?COLOR.core5:s.c==='top10'?COLOR.top10:COLOR.neutral}
                    strokeWidth={s.c==='core5'?2.6:s.c==='top10'?1.8:0.8} strokeOpacity={s.c==='path1'?0.4:0.9}
                    dot={false} activeDot={{r:4,strokeWidth:0}} isAnimationActive={false}/>))}
                  <Line type="linear" dataKey="_avg" stroke={COLOR.avgLine} strokeWidth={1.5} strokeDasharray="4 3" dot={false} isAnimationActive={false}/>
                  {showHP&&<Line type="linear" dataKey="_port" stroke={COLOR.portfolio} strokeWidth={3} dot={{r:3,fill:COLOR.portfolio,strokeWidth:0}} isAnimationActive={false}/>}
                  {Object.keys(HIST_BENCH).map(k=>showHB[k]&&(<Line key={k} type="linear" dataKey={`_${k}`} stroke={COLOR[`bench${k[0]}${k.slice(1).toLowerCase()}`]||COLOR.neutral} strokeWidth={2} strokeDasharray="6 3" dot={{r:2}} isAnimationActive={false}/>))}
                </LineChart>
              </ResponsiveContainer>
            </div>
          </div>
        )}

        {/* TAB: 섹터 */}
        {tab==='sector'&&(
          <div>
            <div style={{marginBottom:'16px'}}>
              <div style={{fontSize:'16px',fontWeight:700,color:COLOR.text,marginBottom:'4px'}}>\uc139\ud130\ubcc4 \ud3c9\uade0 \uc218\uc775\ub960</div>
              <div style={{fontSize:'11px',color:COLOR.textMuted}}>176\uc885 \uc139\ud130\ubcc4 \ud3c9\uade0 (5/1~5/7)</div>
            </div>
            <div style={{background:COLOR.bgCard,border:`1px solid ${COLOR.border}`,padding:'20px',borderRadius:'6px',marginBottom:'16px'}}>
              <ResponsiveContainer width="100%" height={400}>
                <BarChart data={SECTOR_AVG} layout="vertical" margin={{top:10,right:40,left:120,bottom:10}}>
                  <CartesianGrid strokeDasharray="2 4" stroke={COLOR.borderSoft} horizontal={false}/>
                  <XAxis type="number" stroke={COLOR.textDim} fontSize={11} tickLine={false} axisLine={{stroke:COLOR.border}} tick={{fill:COLOR.textMuted}} tickFormatter={v=>`${v>0?'+':''}${v.toFixed(0)}%`}/>
                  <YAxis type="category" dataKey="sector" stroke={COLOR.textDim} fontSize={11} tickLine={false} axisLine={false} tick={{fill:COLOR.text}} width={150}/>
                  <ReferenceLine x={0} stroke={COLOR.textMuted}/>
                  <Tooltip content={({active,payload})=>{
                    if(!active||!payload||!payload.length) return null;
                    const d=payload[0].payload;
                    return(<div style={{background:COLOR.bg,border:`1px solid ${COLOR.border}`,padding:'8px 12px',fontSize:'11px',borderRadius:'4px'}}>
                      <div style={{color:SECTOR_COLORS[d.sector]||COLOR.neutral,fontWeight:700}}>{d.sector}</div>
                      <div style={{color:rc(d.avg),fontWeight:700,fontSize:'14px',marginTop:'2px'}}>{d.avg>=0?'+':''}{d.avg.toFixed(2)}%</div>
                      <div style={{color:COLOR.textMuted,fontSize:'10px',marginTop:'2px'}}>{d.count}\uc885</div>
                    </div>);
                  }}/>
                  <Bar dataKey="avg" radius={[0,3,3,0]}>
                    {SECTOR_AVG.map((e,i)=><Cell key={i} fill={rc(e.avg)}/>)}
                  </Bar>
                </BarChart>
              </ResponsiveContainer>
            </div>
            <div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(180px,1fr))',gap:'8px'}}>
              {SECTOR_AVG.map(s=>(<div key={s.sector} style={{background:COLOR.bgCardAlt,padding:'10px 12px',borderRadius:'4px',borderLeft:`3px solid ${SECTOR_COLORS[s.sector]||COLOR.neutral}`}}>
                <div style={{fontSize:'11px',color:COLOR.text,fontWeight:600}}>{s.sector}</div>
                <div style={{display:'flex',justifyContent:'space-between',alignItems:'baseline',marginTop:'4px'}}>
                  <span style={{fontSize:'16px',fontWeight:700,color:rc(s.avg)}}>{s.avg>=0?'+':''}{s.avg.toFixed(2)}%</span>
                  <span style={{fontSize:'10px',color:COLOR.textMuted}}>{s.count}\uc885</span>
                </div>
              </div>))}
            </div>
          </div>
        )}

        {/* TAB: 5종 모니터링 */}
        {tab==='monitoring'&&(
          <div>
            <div style={{marginBottom:'16px'}}>
              <div style={{fontSize:'16px',fontWeight:700,color:COLOR.text,marginBottom:'4px'}}>5\uc885 \ud3ec\ud2b8\ud3f4\ub9ac\uc624 \ubaa8\ub2c8\ud130\ub9c1</div>
              <div style={{fontSize:'11px',color:COLOR.textMuted}}>\uc2e4\uc801 \ubc1c\ud45c \uc77c\uc815 &middot; \uc560\ub110\ub9ac\uc2a4\ud2b8 \ucf58\uc13c\uc11c\uc2a4 &middot; \ucd5c\uadfc \ub274\uc2a4</div>
            </div>
            <div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(320px,1fr))',gap:'14px'}}>
              {c5Stocks.map(s=>{
                const m=MONITORING[s.ticker];
                if(!m) return null;
                const bw=m.days_to_earnings<=15;
                return(<div key={s.ticker} style={{background:COLOR.bgCard,border:`1px solid ${COLOR.border}`,borderLeft:`3px solid ${COLOR.core5}`,padding:'16px',borderRadius:'6px'}}>
                  <div style={{display:'flex',justifyContent:'space-between',alignItems:'flex-start',marginBottom:'12px'}}>
                    <div>
                      <a href={tvUrl(s.ticker)} target="_blank" rel="noopener noreferrer"
                        style={{color:COLOR.core5,fontWeight:800,fontSize:'20px',display:'inline-flex',alignItems:'center',gap:'4px',textDecoration:'none'}}>
                        {s.ticker}<ExternalLink size={11} style={{opacity:.5}}/>
                      </a>
                      <div style={{fontSize:'11px',color:COLOR.textMuted,marginTop:'2px'}}>{s.name}</div>
                      <div style={{fontSize:'10px',color:COLOR.textDim,marginTop:'1px'}}>
                        <span style={{color:SECTOR_COLORS[s.sector]}}>&#9679; </span>{s.sector} &middot; {s.industry}
                      </div>
                    </div>
                    <div style={{fontSize:'22px',fontWeight:800,letterSpacing:'-0.02em',color:rc(s.return_pct)}}>{s.return_pct>=0?'+':''}{s.return_pct.toFixed(2)}%</div>
                  </div>
                  <div style={{display:'grid',gridTemplateColumns:'1fr 1fr',gap:'8px',marginBottom:'12px'}}>
                    <div style={{background:COLOR.bgCardAlt,padding:'8px 10px',borderRadius:'4px'}}>
                      <div style={{fontSize:'9px',color:COLOR.textDim,letterSpacing:'0.1em',marginBottom:'3px',display:'flex',alignItems:'center',gap:'4px'}}><Calendar size={9}/>\ub2e4\uc74c \uc2e4\uc801</div>
                      <div style={{fontSize:'13px',color:COLOR.text,fontWeight:600}}>{m.earnings_date}</div>
                      <div style={{fontSize:'10px',marginTop:'2px'}}>
                        {bw?<span style={{display:'inline-block',padding:'2px 7px',borderRadius:'3px',fontSize:'9px',fontWeight:700,background:'rgba(255,59,48,0.15)',color:COLOR.positive,border:'1px solid rgba(255,59,48,0.4)'}}>D-{m.days_to_earnings} &#9888; blackout</span>:<span style={{color:COLOR.textMuted}}>D-{m.days_to_earnings}</span>}
                      </div>
                    </div>
                    <div style={{background:COLOR.bgCardAlt,padding:'8px 10px',borderRadius:'4px'}}>
                      <div style={{fontSize:'9px',color:COLOR.textDim,letterSpacing:'0.1em',marginBottom:'3px',display:'flex',alignItems:'center',gap:'4px'}}><TrendingUp size={9}/>\uc560\ub110 \uc758\uacac</div>
                      <div style={{fontSize:'12px',color:m.rating==='Strong Buy'?COLOR.positive:m.rating==='Buy'?COLOR.text:COLOR.textMuted,fontWeight:600}}>{m.rating}</div>
                      <div style={{fontSize:'10px',color:COLOR.textMuted,marginTop:'2px'}}>${m.target_price.toFixed(2)} &middot; <span style={{color:COLOR.positive}}>+{m.target_upside}%</span></div>
                    </div>
                  </div>
                  <div>
                    <div style={{fontSize:'9px',color:COLOR.textDim,letterSpacing:'0.1em',marginBottom:'6px',display:'flex',alignItems:'center',gap:'4px'}}><Newspaper size={9}/>\ucd5c\uadfc \ub274\uc2a4</div>
                    <div style={{display:'flex',flexDirection:'column',gap:'8px'}}>
                      {m.news.map((n,i)=>(<div key={i} style={{borderLeft:`2px solid ${COLOR.borderSoft}`,paddingLeft:'8px'}}>
                        <div style={{fontSize:'9px',color:COLOR.textDim,marginBottom:'2px'}}>{n.date} &middot; <span style={{color:COLOR.textMuted}}>{n.source}</span></div>
                        <div style={{fontSize:'11px',color:COLOR.text,lineHeight:1.4}}>{n.title}</div>
                      </div>))}
                    </div>
                  </div>
                </div>);
              })}
            </div>
          </div>
        )}

        <footer style={{marginTop:'32px',paddingTop:'16px',borderTop:`1px solid ${COLOR.border}`,fontSize:'10px',color:COLOR.textDim}}>
          <div style={{display:'flex',justifyContent:'space-between',flexWrap:'wrap',gap:'8px'}}>
            <span>V8 v4 &middot; v0.6 &middot; {filtered.length}/{STOCKS.length} &middot; 5\uac70\ub798\uc77c + 17\uc8fc\ubd09</span>
            <span>+ \ube68\ub2f9 / &minus; \ud30c\ub791 &middot; \ud2f0\ucee4 \ud074\ub9ad &rarr; TradingView</span>
          </div>
        </footer>
      </div>
    </div>
  );
}

function RankList({title,items,pos}) {
  return(
    <div style={{background:COLOR.bgCard,border:`1px solid ${COLOR.border}`,borderRadius:'6px',overflow:'hidden'}}>
      <div style={{padding:'10px 14px',borderBottom:`1px solid ${COLOR.borderSoft}`,fontSize:'11px',fontWeight:700,color:pos?COLOR.positive:COLOR.negative,letterSpacing:'0.05em'}}>{title}</div>
      {items.map((s,i)=>(
        <div key={s.ticker} style={{display:'flex',justifyContent:'space-between',alignItems:'center',padding:'8px 14px',borderBottom:i<items.length-1?`1px solid ${COLOR.borderSoft}`:'none'}}>
          <div style={{display:'flex',alignItems:'center',gap:'8px',minWidth:0}}>
            <span style={{color:COLOR.textDim,fontSize:'10px',width:16}}>{i+1}</span>
            <a href={tvUrl(s.ticker)} target="_blank" rel="noopener noreferrer" style={{color:getColor(s),fontWeight:700,fontSize:'12px',textDecoration:'none'}}>{s.ticker}</a>
            <span style={{color:COLOR.textMuted,fontSize:'10px',overflow:'hidden',textOverflow:'ellipsis',whiteSpace:'nowrap'}}>{s.name}</span>
          </div>
          <span style={{color:rc(s.return_pct),fontWeight:700,fontSize:'12px',flexShrink:0,marginLeft:'8px'}}>{s.return_pct>=0?'+':''}{s.return_pct.toFixed(2)}%</span>
        </div>
      ))}
    </div>
  );
}

function StockTable({sorted,hov,setHov,sort,setSort}) {
  const sortOpts=[{k:'return_desc',l:'\uc218\uc775\ub960\u2193'},{k:'return_asc',l:'\uc218\uc775\ub960\u2191'},{k:'v8_desc',l:'V8\u2193'},{k:'mcap_desc',l:'\uc2dc\ucd1d\u2193'},{k:'rev_desc',l:'\ub9e4\ucda9\u2193'},{k:'opi_desc',l:'\uc601\uc5c5\uc774\uc775\u2193'},{k:'ticker',l:'A-Z'}];
  return(
    <div>
      <div style={{display:'flex',justifyContent:'space-between',alignItems:'center',marginBottom:'10px',flexWrap:'wrap',gap:'8px'}}>
        <div style={{fontSize:'16px',fontWeight:700,color:COLOR.text}}>\uc885\ubaa9 \ud14c\uc774\ube14 ({sorted.length})</div>
        <div style={{display:'flex',gap:'4px',flexWrap:'wrap'}}>
          {sortOpts.map(o=>(<button key={o.k} onClick={()=>setSort(o.k)}
            style={{padding:'4px 10px',fontSize:'10px',fontWeight:500,border:`1px solid ${sort===o.k?COLOR.text:COLOR.border}`,background:sort===o.k?COLOR.text:'transparent',color:sort===o.k?COLOR.bg:COLOR.textMuted,cursor:'pointer',transition:'all .15s',borderRadius:'4px'}}>{o.l}</button>))}
        </div>
      </div>
      <div className="sx" style={{overflowX:'auto',border:`1px solid ${COLOR.border}`,borderRadius:'6px'}}>
        <table style={{width:'100%',minWidth:'1100px',borderCollapse:'collapse',fontSize:'11px'}}>
          <thead>
            <tr style={{background:COLOR.bgCard,borderBottom:`1px solid ${COLOR.border}`}}>
              {['\ud2f0\ucee4','\ud68c\uc0ac','\uc139\ud130','V8','\uc2dc\uccd1','\ub9e4\ucda9(TTM)','\uc601\uc5c5\uc774\uc775','5/1 \uac00','5/7 \uac00','\uc218\uc775\ub960','\ubd84\ub958'].map((h,i)=>(
                <th key={i} style={{padding:'10px 14px',textAlign:i>=3&&i!==10?'right':'left',color:COLOR.textMuted,fontSize:'10px',fontWeight:600,letterSpacing:'0.08em',textTransform:'uppercase',...(i===10?{textAlign:'center'}:{})}}>{h}</th>
              ))}
            </tr>
          </thead>
          <tbody>
            {sorted.map(s=>(
              <tr key={s.ticker} className={`tr ${s.category}`} onMouseEnter={()=>setHov(s.ticker)} onMouseLeave={()=>setHov(null)}>
                <td style={{padding:'8px 14px',borderBottom:`1px solid ${COLOR.borderSoft}`}}>
                  <a href={tvUrl(s.ticker)} target="_blank" rel="noopener noreferrer"
                    style={{color:getColor(s),fontWeight:700,display:'inline-flex',alignItems:'center',gap:'4px',textDecoration:'none',opacity:hov&&hov!==s.ticker?0.5:1}}>
                    {s.ticker}<ExternalLink size={9} style={{opacity:.5}}/>
                  </a>
                </td>
                <td style={{padding:'8px 14px',borderBottom:`1px solid ${COLOR.borderSoft}`,color:COLOR.text,maxWidth:200,overflow:'hidden',textOverflow:'ellipsis',whiteSpace:'nowrap'}}>{s.name}</td>
                <td style={{padding:'8px 14px',borderBottom:`1px solid ${COLOR.borderSoft}`}}>
                  <span style={{color:SECTOR_COLORS[s.sector]||COLOR.neutral,fontSize:'10px'}}>&#9679; </span>
                  <span style={{marginLeft:4,color:COLOR.textMuted,fontSize:'10px'}}>{s.sector}</span>
                </td>
                <td style={{padding:'8px 14px',textAlign:'right',borderBottom:`1px solid ${COLOR.borderSoft}`,color:s.v8>=65?COLOR.core5:s.v8>=50?COLOR.text:COLOR.textMuted,fontWeight:s.v8>=70?700:500}}>{s.v8.toFixed(1)}</td>
                <td style={{padding:'8px 14px',textAlign:'right',borderBottom:`1px solid ${COLOR.borderSoft}`,color:COLOR.text}}>{fmtM(s.mcap)}</td>
                <td style={{padding:'8px 14px',textAlign:'right',borderBottom:`1px solid ${COLOR.borderSoft}`,color:COLOR.text}}>{fmtV(s.rev)}</td>
                <td style={{padding:'8px 14px',textAlign:'right',borderBottom:`1px solid ${COLOR.borderSoft}`,color:rc(s.opi)}}>{(s.opi||0)>=0?'+':''}{fmtV(s.opi).replace('-','')}</td>
                <td style={{padding:'8px 14px',textAlign:'right',borderBottom:`1px solid ${COLOR.borderSoft}`,color:COLOR.textMuted}}>${s.prices[0].toFixed(2)}</td>
                <td style={{padding:'8px 14px',textAlign:'right',borderBottom:`1px solid ${COLOR.borderSoft}`,color:COLOR.text}}>${s.prices[4].toFixed(2)}</td>
                <td style={{padding:'8px 14px',textAlign:'right',borderBottom:`1px solid ${COLOR.borderSoft}`,color:rc(s.return_pct),fontWeight:700}}>{s.return_pct>=0?'+':''}{s.return_pct.toFixed(2)}%</td>
                <td style={{padding:'8px 14px',textAlign:'center',borderBottom:`1px solid ${COLOR.borderSoft}`}}>
                  {s.category==='core5'&&<span style={{display:'inline-block',padding:'2px 7px',borderRadius:'3px',fontSize:'9px',fontWeight:700,background:'rgba(251,191,36,0.15)',color:COLOR.core5,border:'1px solid rgba(251,191,36,0.4)'}}>CORE 5</span>}
                  {s.category==='top10'&&<span style={{display:'inline-block',padding:'2px 7px',borderRadius:'3px',fontSize:'9px',fontWeight:700,background:'rgba(192,132,252,0.15)',color:COLOR.top10,border:'1px solid rgba(192,132,252,0.4)'}}>TOP 10</span>}
                  {s.category==='path1'&&<span style={{color:COLOR.textDim,fontSize:'9px'}}>path1</span>}
                </td>
              </tr>
            ))}
          </tbody>
        </table>
      </div>
    </div>
  );
}
