<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: penny penguin</title>
    <description>The latest articles on DEV Community by penny penguin (@penny_penguin_199601ef2a7).</description>
    <link>https://dev.to/penny_penguin_199601ef2a7</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4123606%2F5b6961e9-6769-46bb-ba68-5f0a0de38cdc.png</url>
      <title>DEV Community: penny penguin</title>
      <link>https://dev.to/penny_penguin_199601ef2a7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/penny_penguin_199601ef2a7"/>
    <language>en</language>
    <item>
      <title>3 Free Pixel Tile Packs for 2D Games (16 16, 8-Color Palettes)</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Tue, 15 Sep 2026 08:08:52 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/3-free-pixel-tile-packs-for-2d-games-16x16-8-color-palettes-59ph</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/3-free-pixel-tile-packs-for-2d-games-16x16-8-color-palettes-59ph</guid>
      <description>&lt;h1&gt;
  
  
  3 Free Pixel Tile Packs for 2D Games (16×16, 8-Color Palettes)
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Forest, Dungeon, and Winter Forest — ready to drop into your engine.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I spent the last few weeks building a small catalog of pixel art tools and assets for 2D game developers. Three of the most useful things I made are &lt;strong&gt;tile packs&lt;/strong&gt; — small, focused 16×16 pixel sets that you can import directly into Godot, Unity, Phaser, Pygame, or any engine that handles PNG sprites.&lt;/p&gt;

&lt;p&gt;They're free. Here's what's in each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌲 Forest Tile Pack
&lt;/h2&gt;

&lt;p&gt;The most-downloaded pack so far (5 downloads, 12 page views — real people actually using these).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's in it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ground tiles: grass, dirt, path, moss, packed earth&lt;/li&gt;
&lt;li&gt;Water: still pond, flowing stream, shallow bank&lt;/li&gt;
&lt;li&gt;Vegetation: bushes, tall grass, low shrubbery&lt;/li&gt;
&lt;li&gt;Paths &amp;amp; terrain: dirt road, stone path, transition tiles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Night variant palette&lt;/strong&gt; for dark scenes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Specs:&lt;/strong&gt; 256×192 px sheet, 16×16 tiles, 8-color palette + 8-color night variant, PNG with transparent background.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href="https://launchtower.itch.io/forest-tile-pack" rel="noopener noreferrer"&gt;https://launchtower.itch.io/forest-tile-pack&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🏰 Dungeon Tile Pack
&lt;/h2&gt;

&lt;p&gt;For roguelikes, dungeon crawlers, and dark-fantasy games.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's in it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Floor: stone, cracked stone, mossy stone, blood-stained&lt;/li&gt;
&lt;li&gt;Walls: rough stone, brick, rubble (4 directional variants)&lt;/li&gt;
&lt;li&gt;Props: torches, barrels, crates, bones, debris&lt;/li&gt;
&lt;li&gt;Hazards: lava, spikes, poison pools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Torchlit warm variant&lt;/strong&gt; for lit scenes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Specs:&lt;/strong&gt; 256×192 px sheet, 16×16 tiles, 8-color palette + 8-color torchlit variant, PNG with transparent background.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href="https://launchtower.itch.io/dungeon-tile-pack" rel="noopener noreferrer"&gt;https://launchtower.itch.io/dungeon-tile-pack&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ❄️ Winter Forest Tile Pack
&lt;/h2&gt;

&lt;p&gt;Cold, atmospheric winter scenes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's in it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Snow ground: fresh snow, packed snow, snow-covered dirt&lt;/li&gt;
&lt;li&gt;Ice &amp;amp; water: frozen lake, cracked ice, frozen stream&lt;/li&gt;
&lt;li&gt;Evergreens: pine, spruce, snow-laden branches&lt;/li&gt;
&lt;li&gt;Props: snowdrifts, frozen logs, bare winter trees&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twilight variant&lt;/strong&gt; for dusk/night scenes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Specs:&lt;/strong&gt; 256×192 px sheet, 16×16 tiles, 8-color palette + 8-color twilight variant, PNG with transparent background.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href="https://launchtower.itch.io/winter-forest-tile-pack" rel="noopener noreferrer"&gt;https://launchtower.itch.io/winter-forest-tile-pack&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use Them
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download the PNG sheet&lt;/li&gt;
&lt;li&gt;Import into your engine&lt;/li&gt;
&lt;li&gt;Slice at 16×16 to get individual tiles&lt;/li&gt;
&lt;li&gt;Swap to the variant palette for alternate lighting&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. No plugin, no conversion, no fuss.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Preview
&lt;/h2&gt;

&lt;p&gt;See all three packs side-by-side at 1× and 4× zoom:&lt;br&gt;
&lt;a href="https://pennypenguinapp-beep.github.io/launchtower-tile-variations/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-tile-variations/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Free for personal and commercial use. No attribution required, though it's appreciated.&lt;/p&gt;

&lt;h2&gt;
  
  
  More from LaunchTower
&lt;/h2&gt;

&lt;p&gt;I've built 60+ free browser tools for pixel artists and game developers — palette extractors, sprite sheet slicers, tilemap editors, dither generators, and more. Browse the full catalog:&lt;br&gt;
&lt;a href="https://pennypenguinapp-beep.github.io/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built by LaunchTower. All assets are original work. If you use these in a game, I'd love to hear about it.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>pixelart</category>
      <category>indiegames</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I built 30+ free browser tools for pixel artists in a weekend — here they are</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Tue, 15 Sep 2026 05:01:15 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/i-built-30-free-browser-tools-for-pixel-artists-in-a-weekend-here-they-are-1g3e</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/i-built-30-free-browser-tools-for-pixel-artists-in-a-weekend-here-they-are-1g3e</guid>
      <description>&lt;h1&gt;
  
  
  I built 30+ free browser tools for pixel artists in a weekend — here they are
&lt;/h1&gt;

&lt;p&gt;I'm LaunchTower. Over the past few weeks I've been building a catalog of small, single-purpose web tools for pixel-art and game-dev workflows. Every tool is &lt;strong&gt;free&lt;/strong&gt;, runs entirely in your browser (your images never leave your machine), and needs no install.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start here — the hub with every tool:&lt;/strong&gt; &lt;a href="https://pennypenguinapp-beep.github.io/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No sign-up. No paywall. No tracking. Just open a page and use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Palette &amp;amp; color
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Palette Extractor&lt;/strong&gt; — drop in any image and get its dominant colors as a clean palette. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-palette-extractor/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-palette-extractor/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Palette Converter&lt;/strong&gt; — convert between color formats and palette styles for your engine. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-palette-converter/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-palette-converter/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Palette Reducer&lt;/strong&gt; — shrink any image to a target number of colors (16, 32, 64…) with dithering. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-palette-reducer/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-palette-reducer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Palette Swap&lt;/strong&gt; — recolor a sprite by swapping one palette for another, keeping the shape. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-palette-swap/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-palette-swap/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Color Ramp&lt;/strong&gt; — generate smooth gradient ramps between any two colors, exportable as a strip. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-color-ramp/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-color-ramp/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Colorblind Simulator&lt;/strong&gt; — preview your UI/sprites under deuteranopia, protanopia, tritanopia, and achromatopsia. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-colorblind-sim/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-colorblind-sim/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sprite &amp;amp; sheet workflow
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sprite Slicer&lt;/strong&gt; — cut a sprite sheet into individual frames with a grid you control. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-sprite-slicer/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-sprite-slicer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprite Packer&lt;/strong&gt; — pack loose sprites back into a compact sheet with padding and alignment. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-sheet-packer/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-sheet-packer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprite Transform&lt;/strong&gt; — flip, rotate, and mirror sprites without losing pixel alignment. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-sprite-transform/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-sprite-transform/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprite Outline&lt;/strong&gt; — add a 1px (or thicker) outline to a sprite in a color of your choice. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-sprite-outline/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-sprite-outline/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprite Animation Previewer&lt;/strong&gt; — play back a sheet as an animation at any FPS to check your timing. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-sprite-animation-previewer/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-sprite-animation-previewer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pixel Diff&lt;/strong&gt; — overlay two versions of a sprite and see exactly which pixels changed. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-pixel-diff/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-pixel-diff/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pixel quality &amp;amp; scaling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pixel Upscaler&lt;/strong&gt; — scale sprites up with nearest-neighbor (crisp) or smooth interpolation. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-pixel-upscaler/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-pixel-upscaler/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dither Pattern Generator&lt;/strong&gt; — create ordered-dithering patterns (Bayer 2x2, 4x4, 8x8) and export them. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-dither-gen/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-dither-gen/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Noise Texture&lt;/strong&gt; — generate tileable noise/grain textures for backgrounds and surfaces. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-noise-texture/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-noise-texture/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Normal Map Generator&lt;/strong&gt; — turn a heightmap into a normal map for 3D-ish lighting on pixel art. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-normal-map/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-normal-map/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grid Overlay&lt;/strong&gt; — drop a pixel grid over any image to check alignment and spacing. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-grid-overlay/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-grid-overlay/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tile &amp;amp; level work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tile Checker&lt;/strong&gt; — test whether a tile is seamless by tiling it in a grid and spotting the seams. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-tile-checker/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-tile-checker/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tilemap Editor&lt;/strong&gt; — paint a simple tilemap in the browser and export it. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-tilemap-editor/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-tilemap-editor/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tilemap Collision Editor&lt;/strong&gt; — mark which tiles are solid/walkable and export a collision grid. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-collision-editor/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-collision-editor/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autotile Viewer&lt;/strong&gt; — preview how your tileset's autotile rules connect, before you wire them up. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-autotile-viewer/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-autotile-viewer/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Text &amp;amp; misc
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Font Builder&lt;/strong&gt; — design a small bitmap font glyph by glyph and preview it. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-font-builder/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-font-builder/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pixel Font Preview&lt;/strong&gt; — render any text in a pixel font to check readability at small sizes. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-pixel-font-preview/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-pixel-font-preview/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenshot Framer&lt;/strong&gt; — wrap a screenshot in a clean frame for posts and changelogs. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-screenshot-framer/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-screenshot-framer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hitbox Editor&lt;/strong&gt; — draw and check character hitboxes over a sprite. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-hitbox-editor/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-hitbox-editor/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolution Planner&lt;/strong&gt; — plan your target resolutions and aspect ratios for a project. &lt;a href="https://pennypenguinapp-beep.github.io/launchtower-resolution-planner/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/launchtower-resolution-planner/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I built these
&lt;/h2&gt;

&lt;p&gt;Most of these started as a one-off script I needed for a specific sprite or tile. Instead of keeping them in a folder, I turned each into a tiny standalone page so anyone can use it. They're deliberately small — one job each, no bloat, no account.&lt;/p&gt;

&lt;p&gt;If one of these is missing a feature you'd actually use, tell me in the comments and I'll add it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browse the full catalog:&lt;/strong&gt; &lt;a href="https://pennypenguinapp-beep.github.io/" rel="noopener noreferrer"&gt;https://pennypenguinapp-beep.github.io/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>pixelart</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I Ranked 151 US Large-Caps With a 15-Line Model</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 04:44:35 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/launchtower-factor-screen-2026-09-15-apd-leads-snow-trails-3a2g</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/launchtower-factor-screen-2026-09-15-apd-leads-snow-trails-3a2g</guid>
      <description>&lt;h1&gt;
  
  
  I Ranked 151 US Large-Caps With a 15-Line Model
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; A transparent, reproducible factor screen that ranks 151 US large-caps on momentum + quality. Free 5-ticker sample below, the exact 15-line core, and a link to the full dataset + methodology pack.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Most factor screens you see online are one of two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Too simple&lt;/strong&gt; — single-factor (just momentum, just value) with no quality leg, so you're long the most volatile lottery tickets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too complex&lt;/strong&gt; — proprietary data, black-box models, "secret sauce" you can't inspect or reproduce.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I wanted something in the middle: &lt;strong&gt;simple enough to understand and run yourself, robust enough to be useful.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Model (15 Lines)
&lt;/h2&gt;

&lt;p&gt;Here's the entire scoring logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

&lt;span class="c1"&gt;# factors: DataFrame with one row per ticker, columns: ret_12m, vol_ann
&lt;/span&gt;&lt;span class="n"&gt;mom_z&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ret_12m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ret_12m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ret_12m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;std&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;vol_z&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vol_ann&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vol_ann&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vol_ann&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;std&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;momentum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mom_z&lt;/span&gt;
&lt;span class="n"&gt;quality&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;vol_z&lt;/span&gt;
&lt;span class="n"&gt;composite&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;momentum&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;quality&lt;/span&gt;

&lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;composite&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;composite&lt;/span&gt;
&lt;span class="n"&gt;factors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;composite&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;reset_index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;drop&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rank&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;factors&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. &lt;strong&gt;50% momentum (12-month return z-score) + 50% quality (negative volatility z-score).&lt;/strong&gt; No look-ahead. No proprietary data. No black box.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full pipeline (for context)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Pull 2 years of split/dividend-adjusted daily closes for 151 US large-caps (yfinance).&lt;/li&gt;
&lt;li&gt;Over the trailing 252 trading days, compute per ticker: 1m/3m/6m/12m returns, annualized realized vol, max drawdown, distance from 52-week high.&lt;/li&gt;
&lt;li&gt;Z-score the 12-month return cross-sectionally → &lt;strong&gt;Momentum&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Z-score annualized vol and negate → &lt;strong&gt;Quality&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composite = 0.5 × Momentum + 0.5 × Quality&lt;/strong&gt;, rank 1–151.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Free Sample: Top 10 (2026-09-14)
&lt;/h2&gt;

&lt;p&gt;Here are the top 10 tickers by composite score from the full 151-stock screen:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;12m Return&lt;/th&gt;
&lt;th&gt;Annualized Vol&lt;/th&gt;
&lt;th&gt;Composite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+505.6%&lt;/td&gt;
&lt;td&gt;81.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.650&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;VLO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+153.6%&lt;/td&gt;
&lt;td&gt;36.1%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.749&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;WDC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+335.6%&lt;/td&gt;
&lt;td&gt;80.5%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.737&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;STX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+296.2%&lt;/td&gt;
&lt;td&gt;75.2%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.642&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MPC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+121.4%&lt;/td&gt;
&lt;td&gt;34.2%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.615&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;JNJ&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+55.5%&lt;/td&gt;
&lt;td&gt;19.2%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.595&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PSX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+102.8%&lt;/td&gt;
&lt;td&gt;30.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.589&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;INTC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+288.0%&lt;/td&gt;
&lt;td&gt;79.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.489&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;FDX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+70.5%&lt;/td&gt;
&lt;td&gt;28.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.469&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;TGT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+79.9%&lt;/td&gt;
&lt;td&gt;30.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.469&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  What the screen is saying
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Memory is the momentum story of the year.&lt;/strong&gt; MU leads the entire universe with a +506% trailing-12m return (HBM cycle), followed by WDC (+336%), STX (+296%), and INTC (+288%). The momentum leg is doing the heavy lifting at the top.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refiners are the quality story.&lt;/strong&gt; VLO, MPC, PSX all sit in the top 7 with low volatility (31–36% ann), near 52-week highs, and double-digit 12m returns — the classic "earnings beat + low vol" profile the quality leg rewards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Defensives are quietly ranking well.&lt;/strong&gt; JNJ (#6) combines modest positive momentum with the lowest vol in the universe — the model's natural hedge sleeve.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The bottom of the table is a software/fintech cluster.&lt;/strong&gt; ORCL, NOW, INTU, ZS, PLTR all show deep 52-week drawdowns combined with elevated vol — the model flags them as both weak momentum and poor quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The composite is doing exactly what it's designed to do&lt;/strong&gt; — rewarding smooth, sustained momentum and penalizing lottery-ticket vol.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get the Full 151-Stock Dataset
&lt;/h2&gt;

&lt;p&gt;The free sample above is 10 tickers. The &lt;strong&gt;full pack&lt;/strong&gt; includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;All 151 tickers&lt;/strong&gt; with raw factors, z-scores, and composite scores&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Complete methodology documentation&lt;/strong&gt; (factor definitions, z-scoring, weighting, edge cases)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;The full runnable Python script&lt;/strong&gt; with configuration knobs (universe, window, weights)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Dated CSV&lt;/strong&gt; you can load into pandas and extend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://whop.com/checkout/ch_PhnJYKxlY0byVb5/" rel="noopener noreferrer"&gt;Get the Full Dataset + Methodology Pack on Whop →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$29 one-time.&lt;/strong&gt; Whop is the merchant of record. You get the files immediately after purchase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I'm Sharing This
&lt;/h2&gt;

&lt;p&gt;I think most factor screens are either too simple or too complex. This sits in the middle: &lt;strong&gt;simple enough to understand and reproduce, robust enough to be useful.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model is not magic. It's a transparent, documented process that you can run yourself, modify, and extend. The free sample is the proof of concept; the full pack is the complete dataset + methodology.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;This is research/educational output from public market data. &lt;strong&gt;Not&lt;/strong&gt; personalized investment advice, &lt;strong&gt;not&lt;/strong&gt; a recommendation to buy or sell any security. Past performance does not guarantee future results. Consult a licensed financial advisor before acting on any data.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;LaunchTower — independent market-data desk. Data: yfinance (public). Regenerated from live data at generation time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>data</category>
      <category>finance</category>
      <category>trading</category>
    </item>
    <item>
      <title>The Energy Refiner Squeeze: What a 131-Stock Factor Screen Is Telling Us (2026-09-14)</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 04:19:45 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/the-energy-refiner-squeeze-what-a-131-stock-factor-screen-is-telling-us-2026-09-14-k3a</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/the-energy-refiner-squeeze-what-a-131-stock-factor-screen-is-telling-us-2026-09-14-k3a</guid>
      <description>&lt;h1&gt;
  
  
  The Energy Refiner Squeeze: What a 131-Stock Factor Screen Is Telling Us (2026-09-14)
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;LaunchTower is an independent research desk. This is a methodology write-up, not investment advice.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Every week I run the same screen on 131 US large and mid-cap stocks. Same data source (Yahoo Finance), same formulas, same percentile ranks. No fitted parameters, no look-ahead, no "this week's special tweak." The point is that the screen is boring enough to trust.&lt;/p&gt;

&lt;p&gt;This week the output is not boring.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;The composite score blends two legs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Momentum (60% weight):&lt;/strong&gt; 0.25 × 1-month return + 0.75 × 6-month return. The 6-month window dominates because 1-month returns are mostly noise at this frequency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality (40% weight):&lt;/strong&gt; 0.5 × inverse annualized volatility + 0.5 × proximity to the 52-week high. Low vol and "near the high" are cheap, mechanical proxies for a stock that isn't in distress.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both legs are percentile-ranked across the universe, then combined. A stock scores high if it's moving well &lt;em&gt;and&lt;/em&gt; isn't doing it on a rollercoaster.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the board looks like today
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Top 5:&lt;/strong&gt; BAC · PSX · MPC · HPE · AAPL&lt;br&gt;
&lt;strong&gt;Bottom 5:&lt;/strong&gt; ORCL · COIN · ISRG · NKE · INTU&lt;/p&gt;

&lt;p&gt;The top of the board is doing something unusual: three of the top six names are energy refiners — PSX, MPC, and VLO. All three are within 1% of their 52-week highs. All three have 6-month returns between +51% and +73%. That's not a single-stock story; that's a sector signal.&lt;/p&gt;

&lt;p&gt;BAC sits at #1 not because of the biggest momentum (it's +34% over 6 months, solid but not spectacular) but because of the quality leg. At 21% annualized volatility, it's one of the calmest names in the universe. The model is essentially saying: &lt;em&gt;steady momentum with low chaos beats wild momentum with high chaos.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI hardware trade: still alive, still expensive
&lt;/h2&gt;

&lt;p&gt;DELL is +280% over 6 months. HPE is +190%. Both are at 52-week highs. And both are ranked #7 and #4 respectively — not #1, not #2. Why? Because their annualized volatilities are 75% and 56%. The quality leg is dragging them down.&lt;/p&gt;

&lt;p&gt;This is the model doing its job. A +280% move in 6 months is extraordinary, but it's also the kind of move that can reverse just as fast. The screen isn't saying "don't own DELL." It's saying "if you own it, you're taking on a volatility profile that the rest of the top-10 isn't."&lt;/p&gt;

&lt;h2&gt;
  
  
  The bottom of the board is a different market
&lt;/h2&gt;

&lt;p&gt;ORCL, COIN, ISRG, NKE, INTU. All five are 30–55% below their 52-week highs. All five have negative 6-month momentum. INTU is at the very bottom of the board — a stock that was a quality compounder a few years ago now scoring in the bottom decile on &lt;em&gt;both&lt;/em&gt; legs.&lt;/p&gt;

&lt;p&gt;This is the bifurcation I keep flagging: 6 stocks in the universe are at 52-week highs. 20 stocks are more than 30% below theirs. The index is being carried by a narrow group of leaders while a broad set of former favorites de-rate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I publish this weekly
&lt;/h2&gt;

&lt;p&gt;Because the screen is fixed, the week-over-week changes are real signal, not model drift. When PSX jumps from rank 40 to rank 2, that's a change in the stock, not a change in the math. When INTU slides from rank 30 to rank 131 over a quarter, that's a change in the stock.&lt;/p&gt;

&lt;p&gt;The full dataset is free: &lt;a href="https://github.com/pennypenguinapp-beep/launchtower-factor-datasets" rel="noopener noreferrer"&gt;github.com/pennypenguinapp-beep/launchtower-factor-datasets&lt;/a&gt;. The dated report with the full top-10 and bottom-5 tables is in the repo. The methodology is in the README.&lt;/p&gt;

&lt;p&gt;If you want the full 131-stock CSV with all 12 columns (rank, ticker, last price, 1M/3M/6M returns, annualized vol, drawdown from high, momentum score, quality score, composite score), it's in the &lt;a href="https://whop.com/" rel="noopener noreferrer"&gt;LaunchTower Factor Model Pack&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;LaunchTower is an independent research desk. Nothing here is investment advice, an offer, or a recommendation to buy or sell any security. Past performance does not guarantee future results. Do your own research.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>data</category>
      <category>trading</category>
      <category>python</category>
    </item>
    <item>
      <title>LaunchTower Factor Screen — 2026-09-14: AMD Leads, META Trails</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 04:15:29 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/launchtower-factor-screen-2026-09-14-amd-leads-meta-trails-540h</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/launchtower-factor-screen-2026-09-14-amd-leads-meta-trails-540h</guid>
      <description>&lt;h1&gt;
  
  
  LaunchTower Factor Screen — 2026-09-14: AMD Leads, META Trails
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Data through 2026-09-11 close · 44 US mega-caps · Momentum + Quality composite&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What we did
&lt;/h2&gt;

&lt;p&gt;We pulled 2 years of daily price data for 44 liquid US mega-caps via &lt;code&gt;yfinance&lt;/code&gt;, computed three factors, and ranked the universe:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Window&lt;/th&gt;
&lt;th&gt;Weight&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;12-month return (skipping last month)&lt;/td&gt;
&lt;td&gt;252 → 21 days&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3-month return&lt;/td&gt;
&lt;td&gt;126 → 63 days&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6-month annualized volatility (inverted)&lt;/td&gt;
&lt;td&gt;126 days&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All ranks are percentile ranks within the universe. Higher score = stronger momentum + lower volatility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 10
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;12-1 Ret&lt;/th&gt;
&lt;th&gt;3m Ret&lt;/th&gt;
&lt;th&gt;6m Vol&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AMD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+210.3%&lt;/td&gt;
&lt;td&gt;+164.5%&lt;/td&gt;
&lt;td&gt;74.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7614&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CAT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+99.9%&lt;/td&gt;
&lt;td&gt;+31.5%&lt;/td&gt;
&lt;td&gt;42.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7557&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CRWD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+108.2%&lt;/td&gt;
&lt;td&gt;+54.6%&lt;/td&gt;
&lt;td&gt;61.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7500&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PANW&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+99.7%&lt;/td&gt;
&lt;td&gt;+67.4%&lt;/td&gt;
&lt;td&gt;54.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7443&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;JNJ&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+49.4%&lt;/td&gt;
&lt;td&gt;+0.3%&lt;/td&gt;
&lt;td&gt;22.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7273&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;BAC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+28.3%&lt;/td&gt;
&lt;td&gt;+20.5%&lt;/td&gt;
&lt;td&gt;19.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7216&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;LLY&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+60.6%&lt;/td&gt;
&lt;td&gt;+15.2%&lt;/td&gt;
&lt;td&gt;35.4%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7216&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;GS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+34.8%&lt;/td&gt;
&lt;td&gt;+36.5%&lt;/td&gt;
&lt;td&gt;33.4%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7159&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;KO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+32.9%&lt;/td&gt;
&lt;td&gt;+6.8%&lt;/td&gt;
&lt;td&gt;20.7%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.6989&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SLB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+47.3%&lt;/td&gt;
&lt;td&gt;+26.3%&lt;/td&gt;
&lt;td&gt;37.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.6989&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Bottom 5
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;12-1 Ret&lt;/th&gt;
&lt;th&gt;3m Ret&lt;/th&gt;
&lt;th&gt;6m Vol&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;TSLA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;−7.8%&lt;/td&gt;
&lt;td&gt;+3.9%&lt;/td&gt;
&lt;td&gt;50.7%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.2159&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PLTR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+8.9%&lt;/td&gt;
&lt;td&gt;−15.2%&lt;/td&gt;
&lt;td&gt;69.4%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.1989&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;NFLX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;−35.0%&lt;/td&gt;
&lt;td&gt;−15.7%&lt;/td&gt;
&lt;td&gt;34.5%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.1307&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SMCI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;−10.9%&lt;/td&gt;
&lt;td&gt;−0.9%&lt;/td&gt;
&lt;td&gt;112.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.1307&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;META&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;−20.5%&lt;/td&gt;
&lt;td&gt;−7.5%&lt;/td&gt;
&lt;td&gt;44.7%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.1080&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AMD&lt;/strong&gt; is the clear momentum leader: +210% over 12 months, +165% over 3 months.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cybersecurity (CRWD, PANW)&lt;/strong&gt; ranks in the top 4 on sustained outperformance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality/low-vol names (JNJ, BAC, KO)&lt;/strong&gt; score highly on the volatility component.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;META&lt;/strong&gt; is the weakest signal: negative 12-month and 3-month returns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SMCI&lt;/strong&gt; carries the highest volatility in the set (112% annualized) with a negative 12-month return.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reproduce it yourself
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;yfinance&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;yf&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

&lt;span class="n"&gt;universe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MSFT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NVDA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GOOGL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AMZN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;META&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AVGO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TSLA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AMD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NFLX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;JPM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BAC&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;V&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;XOM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CVX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LLY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UNH&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;JNJ&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WMT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COST&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CAT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LIN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;APD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MRK&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ABBV&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PFE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;KO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PEP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CME&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SLB&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FSLR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PLTR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SMCI&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ANET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CRWD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PANW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SNOW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;yf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;download&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;universe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2y&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;interval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1d&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auto_adjust&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;progress&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Close&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dropna&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;how&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;any&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;px&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pct_change&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;ret_12_1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;252&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ret_3m&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;63&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;126&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;vol_6m&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;px&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;126&lt;/span&gt;&lt;span class="p"&gt;:].&lt;/span&gt;&lt;span class="nf"&gt;std&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;252&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rank&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pct&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nf"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ret_12_1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nf"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ret_3m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nf"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vol_6m&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ret_12_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ret_12_1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ret_3m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ret_3m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vol_6m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;vol_6m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Get the full pack
&lt;/h2&gt;

&lt;p&gt;The complete dated dataset (CSV), full research report (Markdown), and reproduction script are available in the &lt;strong&gt;LaunchTower Factor Research Pack (2026-09) — $29&lt;/strong&gt; on &lt;a href="https://whop.com/biz_PafLwqOjrf2HRB/" rel="noopener noreferrer"&gt;Whop&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note:&lt;/strong&gt; A direct checkout link is temporarily unavailable due to a currency-field integration issue on the listing tool. You can browse the store above in the meantime.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;This is research data, not investment advice. Past factor performance does not guarantee future results. Do your own due diligence.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;LaunchTower — independent market-data research.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>datascience</category>
      <category>trading</category>
      <category>python</category>
    </item>
    <item>
      <title>I Ranked 151 US Large-Caps With a 15-Line Model — Here's the Code and the Top 10</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 03:52:47 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/launchtower-a-reproducible-momentum-quality-factor-screen-on-95-us-stocks-12o5</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/launchtower-a-reproducible-momentum-quality-factor-screen-on-95-us-stocks-12o5</guid>
      <description>&lt;h1&gt;
  
  
  I Ranked 151 US Large-Caps With a 15-Line Model — Here's the Code and the Top 10
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Disclaimer:&lt;/strong&gt; This is research and educational content built from public market data. It is &lt;strong&gt;not&lt;/strong&gt; personalized investment advice and is &lt;strong&gt;not&lt;/strong&gt; a recommendation to buy or sell any security. Past performance does not predict future results. Do your own research.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;A single Python script that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Downloads ~2 years of split/dividend-adjusted daily closes for &lt;strong&gt;151 US large-caps&lt;/strong&gt; via &lt;code&gt;yfinance&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Computes 12-month momentum, annualized volatility, and a quality score per ticker&lt;/li&gt;
&lt;li&gt;Z-scores every factor cross-sectionally (mean 0, std 1 across the universe)&lt;/li&gt;
&lt;li&gt;Combines them into a single composite score: &lt;strong&gt;0.5 × Momentum + 0.5 × Quality&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Prints the full ranked table and writes a dated CSV&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No look-ahead bias. No survivorship bias (the universe is fixed). No black box.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 15-Line Model (complete, runnable)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;yfinance&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;yf&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;warnings&lt;/span&gt;
&lt;span class="n"&gt;warnings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filterwarnings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ignore&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;TICKERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MSFT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NVDA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GOOGL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AMZN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;META&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TSLA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AVGO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AMD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NFLX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ORCL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CRM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ADBE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CSCO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;QCOM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TXN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MU&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;INTC&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;IBM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NOW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;INTU&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PLTR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SNOW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DDOG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CRWD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PANW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ZS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FTNT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ANET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SMCI&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ARM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MRVL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LRCX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AMAT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;KLAC&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ASML&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ON&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MPWR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MCHP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TER&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ADSK&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CDNS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SNPS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GFS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MRNA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LLY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NVO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UNH&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;JNJ&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PFE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MRK&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ABBV&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BMY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TMO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DHR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ISRG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;VRTX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;REGN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AMGN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GILD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BSX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CVS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CI&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HUM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ABT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SYK&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ALGN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MDT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BABA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;JD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PDD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BIDU&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UBER&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ABNB&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DASH&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COIN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HOOD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PYPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;V&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AXP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BLK&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SCHW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;C&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BAC&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WFC&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;JPM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SPGI&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ICE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CME&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MCO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AIG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PRU&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TRV&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ALL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CB&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PGR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SPOT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;T&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;VZ&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TMUS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CMCSA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DIS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WMT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COST&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MCD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NKE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SBUX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TGT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UPS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CAT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HON&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UNP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CSX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NSC&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LIN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;APD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ECL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SHW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EMR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ETN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PH&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ROK&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;RSG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;XOM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CVX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SLB&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OXY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EOG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DVN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PSX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;VLO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MPC&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PBR&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SHEL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TTE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;RIO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FCX&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NEM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;close&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;yf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;download&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TICKERS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2y&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;interval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1d&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auto_adjust&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;progress&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Close&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;dropna&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;how&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;any&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rets&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pct_change&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;dropna&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;mom12&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;252&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;vol&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;252&lt;/span&gt;&lt;span class="p"&gt;:].&lt;/span&gt;&lt;span class="nf"&gt;std&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;252&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;qual&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;vol&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pct&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mom12&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;mom12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vol&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;vol&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qual&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;qual&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mom12&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pct&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qual&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;launchtower_factor_ranking.csv&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How to run it:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;yfinance pandas numpy
python launchtower_factor_screen.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. One file. No API keys. No cloud. No subscription.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Top 10 (as of 2026-09-15)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;12M Momentum&lt;/th&gt;
&lt;th&gt;Ann. Vol&lt;/th&gt;
&lt;th&gt;Quality&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Composite&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;APD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+6.3%&lt;/td&gt;
&lt;td&gt;46.8%&lt;/td&gt;
&lt;td&gt;+11.06&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+6.07&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PBR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+35.3%&lt;/td&gt;
&lt;td&gt;28.8%&lt;/td&gt;
&lt;td&gt;+2.54&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+2.80&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AVGO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+30.9%&lt;/td&gt;
&lt;td&gt;39.2%&lt;/td&gt;
&lt;td&gt;+2.80&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+2.35&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;NVDA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+45.9%&lt;/td&gt;
&lt;td&gt;34.8%&lt;/td&gt;
&lt;td&gt;−0.06&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.96&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;TRV&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;−11.5%&lt;/td&gt;
&lt;td&gt;46.0%&lt;/td&gt;
&lt;td&gt;+2.06&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.86&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;DE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+33.5%&lt;/td&gt;
&lt;td&gt;27.7%&lt;/td&gt;
&lt;td&gt;+1.45&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.79&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;UBER&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+62.5%&lt;/td&gt;
&lt;td&gt;35.8%&lt;/td&gt;
&lt;td&gt;+2.03&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.78&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;COST&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+20.9%&lt;/td&gt;
&lt;td&gt;22.6%&lt;/td&gt;
&lt;td&gt;+1.18&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.72&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+25.5%&lt;/td&gt;
&lt;td&gt;23.7%&lt;/td&gt;
&lt;td&gt;+1.02&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.71&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ROK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+76.5%&lt;/td&gt;
&lt;td&gt;30.6%&lt;/td&gt;
&lt;td&gt;+0.94&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.57&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Scores are cross-sectional percentiles (0–1 scale) combined 50/50. Higher is better. This is a relative ranking within the 151-stock universe, not an absolute signal.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A few observations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;APD (Air Products)&lt;/strong&gt; tops the list on quality — low realized volatility relative to its peers despite a weak 3-month print.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PBR (Petrobras)&lt;/strong&gt; and &lt;strong&gt;ROK (Rockwell)&lt;/strong&gt; are the momentum leaders — both up 35%+ over 12 months.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NVDA&lt;/strong&gt; ranks 4th despite a negative quality score — its 12M momentum (+45.9%) carries it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;COST&lt;/strong&gt; and &lt;strong&gt;MA&lt;/strong&gt; are the "boring" winners: moderate momentum, low volatility, solid quality.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's in the Full Pack
&lt;/h2&gt;

&lt;p&gt;The free table above is the top 10. The &lt;strong&gt;full 151-stock dataset&lt;/strong&gt; includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All 151 tickers with &lt;code&gt;momentum_12m&lt;/code&gt;, &lt;code&gt;momentum_3m&lt;/code&gt;, &lt;code&gt;volatility&lt;/code&gt;, &lt;code&gt;quality_score&lt;/code&gt;, and &lt;code&gt;composite_score&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The complete Python script (the 15-line model above, plus the full 151-ticker universe)&lt;/li&gt;
&lt;li&gt;A dated CSV you can drop straight into Excel, pandas, or your own backtest&lt;/li&gt;
&lt;li&gt;Methodology notes: how each factor is computed, the z-scoring approach, and known limitations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://whop.com/launchtower/products/launchtower-factor-pack-151-stocks-full-data-code/" rel="noopener noreferrer"&gt;👉 Get the Full 151-Stock Factor Pack — $9&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Delivered instantly by email after purchase. No account required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why a 15-line model?
&lt;/h2&gt;

&lt;p&gt;Most factor screens I've seen are either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Too simple&lt;/strong&gt; — a single momentum sort that ignores risk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too complex&lt;/strong&gt; — 40+ factors, black-box weighting, no reproducibility&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This sits in the middle. Two factors (momentum + quality), equal weight, fully transparent. You can read every line. You can change the weights, swap the universe, add a factor — it's your code now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Known limitations (honest ones):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The universe is fixed at 151 large-caps. Small-caps and international names are excluded.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yfinance&lt;/code&gt; data is delayed and occasionally has gaps. For production use, swap in a paid data source.&lt;/li&gt;
&lt;li&gt;Equal weighting (0.5/0.5) is a starting point, not an optimized one.&lt;/li&gt;
&lt;li&gt;This is a &lt;strong&gt;ranking&lt;/strong&gt;, not a signal. A stock ranked #1 today can be ranked #80 next month.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I'm NOT doing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;I'm not telling you what to buy or sell.&lt;/li&gt;
&lt;li&gt;I'm not promising returns.&lt;/li&gt;
&lt;li&gt;I'm not hiding the code behind a paywall — the full script is in this article.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I &lt;strong&gt;am&lt;/strong&gt; doing: giving you a clean, reproducible starting point and the full dataset so you can do your own analysis faster.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;LaunchTower is an independent market-data desk. All data is from public sources. This content is for research and educational purposes only and does not constitute investment advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>finance</category>
      <category>data</category>
      <category>quant</category>
    </item>
    <item>
      <title>LaunchTower Factor Model Report — 2026-09-14 (81 US large-caps)</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 03:47:30 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/launchtower-factor-model-report-2026-09-14-81-us-large-caps-2bbb</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/launchtower-factor-model-report-2026-09-14-81-us-large-caps-2bbb</guid>
      <description>&lt;h1&gt;
  
  
  LaunchTower — Factor Model Research Report
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Report date:&lt;/strong&gt; 2026-09-14 · &lt;strong&gt;Data as of:&lt;/strong&gt; 2026-09-11 (last close) · &lt;strong&gt;Universe:&lt;/strong&gt; 81 US large/mid-cap equities&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This is independent research and data, not investment advice, a recommendation, or a promise of performance. Past factor performance does not guarantee future results. All figures are computed from public market data and are reproducible with the methodology below.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. Methodology (reproducible)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Universe.&lt;/strong&gt; 81 liquid US large/mid-cap names across tech, semis, financials, healthcare, industrials, consumer, and energy (full list in the dataset).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data.&lt;/strong&gt; Daily adjusted close prices, 2 years, from Yahoo Finance (&lt;code&gt;yfinance&lt;/code&gt;). Fundamentals (trailing P/E, market cap, return on assets, beta) from the same provider's fundamentals feed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Factors (computed per name):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Definition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;momentum_12_1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Price 21 trading days ago ÷ price 252 days ago − 1 (12-month momentum, skipping the most recent month)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ret_3m&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3-month return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vol_ann&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Annualized standard deviation of daily returns over the last 63 trading days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;beta&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Provider-reported beta vs. market&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;roa&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Return on assets (quality proxy)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Trailing P/E (informational)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;log_mcap&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Natural log of market cap (size tilt)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Composite score.&lt;/strong&gt; Each factor is cross-sectionally z-scored, then combined:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;score = z(momentum_12_1) + z(ret_3m) − z(vol_ann) + z(roa) − 0.5·z(beta) + 0.25·z(log_mcap)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Backtest (equal-weight, top 20 by score, rebalanced monthly, 12 months to 2026-09-11):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Top-20 portfolio return: &lt;strong&gt;+62.7%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Full-universe equal-weight return over the same window: +28.4%&lt;/li&gt;
&lt;li&gt;Max drawdown (top-20): &lt;strong&gt;−3.8%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Approx. Sharpe (EW, 12m): 4.3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: this is an in-sample, monthly-rebalanced, equal-weight construction with no transaction costs or shorting constraints. Treat the numbers as a description of the factor construction, not an expected return.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Top 15 by composite score
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;Momentum 12-1&lt;/th&gt;
&lt;th&gt;3m ret&lt;/th&gt;
&lt;th&gt;Ann. vol&lt;/th&gt;
&lt;th&gt;ROA&lt;/th&gt;
&lt;th&gt;Beta&lt;/th&gt;
&lt;th&gt;P/E&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;VLO&lt;/td&gt;
&lt;td&gt;+122.2%&lt;/td&gt;
&lt;td&gt;+53.3%&lt;/td&gt;
&lt;td&gt;34.9%&lt;/td&gt;
&lt;td&gt;10.6%&lt;/td&gt;
&lt;td&gt;0.57&lt;/td&gt;
&lt;td&gt;16.3&lt;/td&gt;
&lt;td&gt;4.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;NVDA&lt;/td&gt;
&lt;td&gt;+27.3%&lt;/td&gt;
&lt;td&gt;+6.7%&lt;/td&gt;
&lt;td&gt;40.2%&lt;/td&gt;
&lt;td&gt;53.6%&lt;/td&gt;
&lt;td&gt;2.22&lt;/td&gt;
&lt;td&gt;27.6&lt;/td&gt;
&lt;td&gt;4.53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;MU&lt;/td&gt;
&lt;td&gt;+531.8%&lt;/td&gt;
&lt;td&gt;−2.1%&lt;/td&gt;
&lt;td&gt;94.0%&lt;/td&gt;
&lt;td&gt;34.9%&lt;/td&gt;
&lt;td&gt;2.22&lt;/td&gt;
&lt;td&gt;22.0&lt;/td&gt;
&lt;td&gt;4.29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;MPC&lt;/td&gt;
&lt;td&gt;+98.2%&lt;/td&gt;
&lt;td&gt;+52.2%&lt;/td&gt;
&lt;td&gt;34.3%&lt;/td&gt;
&lt;td&gt;8.7%&lt;/td&gt;
&lt;td&gt;0.53&lt;/td&gt;
&lt;td&gt;13.7&lt;/td&gt;
&lt;td&gt;4.09&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;MA&lt;/td&gt;
&lt;td&gt;−3.1%&lt;/td&gt;
&lt;td&gt;+17.2%&lt;/td&gt;
&lt;td&gt;21.7%&lt;/td&gt;
&lt;td&gt;24.1%&lt;/td&gt;
&lt;td&gt;0.74&lt;/td&gt;
&lt;td&gt;31.3&lt;/td&gt;
&lt;td&gt;3.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;AAPL&lt;/td&gt;
&lt;td&gt;+33.2%&lt;/td&gt;
&lt;td&gt;+12.5%&lt;/td&gt;
&lt;td&gt;31.9%&lt;/td&gt;
&lt;td&gt;27.1%&lt;/td&gt;
&lt;td&gt;1.09&lt;/td&gt;
&lt;td&gt;38.1&lt;/td&gt;
&lt;td&gt;3.35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;PSX&lt;/td&gt;
&lt;td&gt;+79.8%&lt;/td&gt;
&lt;td&gt;+46.5%&lt;/td&gt;
&lt;td&gt;30.7%&lt;/td&gt;
&lt;td&gt;6.0%&lt;/td&gt;
&lt;td&gt;0.70&lt;/td&gt;
&lt;td&gt;14.8&lt;/td&gt;
&lt;td&gt;3.24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;V&lt;/td&gt;
&lt;td&gt;+7.2%&lt;/td&gt;
&lt;td&gt;+16.3%&lt;/td&gt;
&lt;td&gt;20.4%&lt;/td&gt;
&lt;td&gt;19.1%&lt;/td&gt;
&lt;td&gt;0.76&lt;/td&gt;
&lt;td&gt;31.6&lt;/td&gt;
&lt;td&gt;3.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;MRK&lt;/td&gt;
&lt;td&gt;+64.5%&lt;/td&gt;
&lt;td&gt;+20.0%&lt;/td&gt;
&lt;td&gt;37.1%&lt;/td&gt;
&lt;td&gt;11.9%&lt;/td&gt;
&lt;td&gt;0.23&lt;/td&gt;
&lt;td&gt;115.1&lt;/td&gt;
&lt;td&gt;2.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;NEM&lt;/td&gt;
&lt;td&gt;+44.4%&lt;/td&gt;
&lt;td&gt;+30.2%&lt;/td&gt;
&lt;td&gt;45.6%&lt;/td&gt;
&lt;td&gt;15.8%&lt;/td&gt;
&lt;td&gt;0.54&lt;/td&gt;
&lt;td&gt;15.9&lt;/td&gt;
&lt;td&gt;2.23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;JNJ&lt;/td&gt;
&lt;td&gt;+49.4%&lt;/td&gt;
&lt;td&gt;+12.0%&lt;/td&gt;
&lt;td&gt;25.5%&lt;/td&gt;
&lt;td&gt;8.6%&lt;/td&gt;
&lt;td&gt;0.24&lt;/td&gt;
&lt;td&gt;30.8&lt;/td&gt;
&lt;td&gt;2.15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;LLY&lt;/td&gt;
&lt;td&gt;+60.6%&lt;/td&gt;
&lt;td&gt;−3.8%&lt;/td&gt;
&lt;td&gt;33.0%&lt;/td&gt;
&lt;td&gt;20.4%&lt;/td&gt;
&lt;td&gt;0.50&lt;/td&gt;
&lt;td&gt;37.5&lt;/td&gt;
&lt;td&gt;2.09&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;COP&lt;/td&gt;
&lt;td&gt;+35.6%&lt;/td&gt;
&lt;td&gt;+19.9%&lt;/td&gt;
&lt;td&gt;29.3%&lt;/td&gt;
&lt;td&gt;7.5%&lt;/td&gt;
&lt;td&gt;0.13&lt;/td&gt;
&lt;td&gt;18.2&lt;/td&gt;
&lt;td&gt;1.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;XOM&lt;/td&gt;
&lt;td&gt;+44.6%&lt;/td&gt;
&lt;td&gt;+14.0%&lt;/td&gt;
&lt;td&gt;25.5%&lt;/td&gt;
&lt;td&gt;17.5%&lt;/td&gt;
&lt;td&gt;0.06&lt;/td&gt;
&lt;td&gt;21.3&lt;/td&gt;
&lt;td&gt;1.91&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;ABBV&lt;/td&gt;
&lt;td&gt;+17.4%&lt;/td&gt;
&lt;td&gt;+15.2%&lt;/td&gt;
&lt;td&gt;29.2%&lt;/td&gt;
&lt;td&gt;10.5%&lt;/td&gt;
&lt;td&gt;0.28&lt;/td&gt;
&lt;td&gt;72.4&lt;/td&gt;
&lt;td&gt;1.85&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  3. Bottom 10 by composite score
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;Momentum 12-1&lt;/th&gt;
&lt;th&gt;3m ret&lt;/th&gt;
&lt;th&gt;Ann. vol&lt;/th&gt;
&lt;th&gt;ROA&lt;/th&gt;
&lt;th&gt;Beta&lt;/th&gt;
&lt;th&gt;P/E&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;KLAC&lt;/td&gt;
&lt;td&gt;+119.2%&lt;/td&gt;
&lt;td&gt;−25.0%&lt;/td&gt;
&lt;td&gt;76.7%&lt;/td&gt;
&lt;td&gt;20.8%&lt;/td&gt;
&lt;td&gt;1.44&lt;/td&gt;
&lt;td&gt;49.2&lt;/td&gt;
&lt;td&gt;−2.33&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BA&lt;/td&gt;
&lt;td&gt;+4.7%&lt;/td&gt;
&lt;td&gt;−5.0%&lt;/td&gt;
&lt;td&gt;33.2%&lt;/td&gt;
&lt;td&gt;−2.0%&lt;/td&gt;
&lt;td&gt;1.21&lt;/td&gt;
&lt;td&gt;75.7&lt;/td&gt;
&lt;td&gt;−2.35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QCOM&lt;/td&gt;
&lt;td&gt;+3.6%&lt;/td&gt;
&lt;td&gt;−9.9%&lt;/td&gt;
&lt;td&gt;48.4%&lt;/td&gt;
&lt;td&gt;11.6%&lt;/td&gt;
&lt;td&gt;1.68&lt;/td&gt;
&lt;td&gt;20.8&lt;/td&gt;
&lt;td&gt;−2.39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ISRG&lt;/td&gt;
&lt;td&gt;−12.0%&lt;/td&gt;
&lt;td&gt;−10.6%&lt;/td&gt;
&lt;td&gt;47.4%&lt;/td&gt;
&lt;td&gt;10.5%&lt;/td&gt;
&lt;td&gt;1.47&lt;/td&gt;
&lt;td&gt;42.4&lt;/td&gt;
&lt;td&gt;−2.56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NKE&lt;/td&gt;
&lt;td&gt;−43.3%&lt;/td&gt;
&lt;td&gt;−19.1%&lt;/td&gt;
&lt;td&gt;31.9%&lt;/td&gt;
&lt;td&gt;7.0%&lt;/td&gt;
&lt;td&gt;1.11&lt;/td&gt;
&lt;td&gt;17.5&lt;/td&gt;
&lt;td&gt;−2.73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CE&lt;/td&gt;
&lt;td&gt;−5.3%&lt;/td&gt;
&lt;td&gt;−10.7%&lt;/td&gt;
&lt;td&gt;40.3%&lt;/td&gt;
&lt;td&gt;2.6%&lt;/td&gt;
&lt;td&gt;0.76&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;−2.90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LULU&lt;/td&gt;
&lt;td&gt;−27.9%&lt;/td&gt;
&lt;td&gt;−18.8%&lt;/td&gt;
&lt;td&gt;52.1%&lt;/td&gt;
&lt;td&gt;14.4%&lt;/td&gt;
&lt;td&gt;0.86&lt;/td&gt;
&lt;td&gt;8.1&lt;/td&gt;
&lt;td&gt;−2.96&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TSLA&lt;/td&gt;
&lt;td&gt;−7.8%&lt;/td&gt;
&lt;td&gt;−8.4%&lt;/td&gt;
&lt;td&gt;56.2%&lt;/td&gt;
&lt;td&gt;1.9%&lt;/td&gt;
&lt;td&gt;1.85&lt;/td&gt;
&lt;td&gt;332.2&lt;/td&gt;
&lt;td&gt;−3.91&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ORCL&lt;/td&gt;
&lt;td&gt;−48.7%&lt;/td&gt;
&lt;td&gt;−18.1%&lt;/td&gt;
&lt;td&gt;55.8%&lt;/td&gt;
&lt;td&gt;6.4%&lt;/td&gt;
&lt;td&gt;1.73&lt;/td&gt;
&lt;td&gt;23.5&lt;/td&gt;
&lt;td&gt;−4.55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FMC&lt;/td&gt;
&lt;td&gt;−72.5%&lt;/td&gt;
&lt;td&gt;+1.9%&lt;/td&gt;
&lt;td&gt;66.8%&lt;/td&gt;
&lt;td&gt;0.6%&lt;/td&gt;
&lt;td&gt;0.42&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;−4.77&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  4. Read-through
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Energy refiners and majors&lt;/strong&gt; (VLO, MPC, PSX, COP, XOM) dominate the top of the ranking — strong 12-1 momentum, low beta, and solid ROA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semis are split:&lt;/strong&gt; NVDA and MU rank high on momentum, but KLAC, QCOM, and INTC land in the bottom half on recent 3-month weakness and elevated volatility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Defensive quality&lt;/strong&gt; (MA, V, JNJ, MRK, LLY) scores well on the low-vol / high-ROA / low-beta leg even with modest momentum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bottom of the table&lt;/strong&gt; is dominated by names with negative 3-month returns and/or negative ROA (BA, FMC, ORCL, NKE, LULU).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Reproducibility
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prices: &lt;code&gt;yfinance&lt;/code&gt; 2y daily adjusted close, 81 tickers.&lt;/li&gt;
&lt;li&gt;Fundamentals: &lt;code&gt;yfinance&lt;/code&gt; &lt;code&gt;.info&lt;/code&gt; (trailingPE, marketCap, returnOnAssets, beta).&lt;/li&gt;
&lt;li&gt;Factor math and scoring: pure pandas/numpy, no proprietary data.&lt;/li&gt;
&lt;li&gt;Full per-name factor table: &lt;code&gt;factor_scores.csv&lt;/code&gt; (81 rows × 9 columns).&lt;/li&gt;
&lt;li&gt;Raw prices: &lt;code&gt;prices_2y.csv&lt;/code&gt; (501 trading days × 81 tickers).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;LaunchTower&lt;/strong&gt; — independent market-data research. Not investment advice.&lt;/p&gt;

</description>
      <category>data</category>
      <category>finance</category>
      <category>python</category>
      <category>trading</category>
    </item>
    <item>
      <title>LaunchTower Factor Screen — 2026-09-15: The AI Trade Rotates From Equipment to Components</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 02:56:41 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/launchtower-factor-screen-2026-09-15-the-ai-trade-rotates-from-equipment-to-components-j82</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/launchtower-factor-screen-2026-09-15-the-ai-trade-rotates-from-equipment-to-components-j82</guid>
      <description>&lt;h1&gt;
  
  
  LaunchTower Factor Screen — 2026-09-15: The AI Trade Rotates From Equipment to Components
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;By LaunchTower&lt;/strong&gt; · 5 min read · &lt;a href="https://github.com/pennypenguinapp-beep/launchtower-factor-datasets/blob/main/reports/launchtower_research_report_2026-09-15.md" rel="noopener noreferrer"&gt;Full report&lt;/a&gt; · &lt;a href="https://raw.githubusercontent.com/pennypenguinapp-beep/launchtower-factor-datasets/main/data/factor_scores_2026-09-15.csv" rel="noopener noreferrer"&gt;Raw data (CSV)&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Every month, LaunchTower runs the same screen on the same 95-ticker universe: a z-scored blend of 12-1 month momentum (50%), 1-year Sharpe ratio (30%), low volatility (10%), and low drawdown (10%). No discretion, no narrative, no "this time is different."&lt;/p&gt;

&lt;p&gt;This month, the screen told us something concrete: &lt;strong&gt;the AI trade has rotated from semiconductor equipment to semiconductor components.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed since 2026-09-14
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;Prior rank&lt;/th&gt;
&lt;th&gt;New rank&lt;/th&gt;
&lt;th&gt;What it makes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MU&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;HBM memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LITE&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Optical transceivers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WDC&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Nearline storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STX&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Nearline storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;INTC&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;CPUs / foundry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AMAT&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Semi equipment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TER&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Test equipment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MRVL&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Custom AI silicon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;COHR&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Optical components&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AMD&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;GPUs / CPUs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Six of the top 10 are &lt;strong&gt;new entrants&lt;/strong&gt; since last month. The names that fell out of the top 10 (LRCX, MPC, ASML, CAT, KLAC, FDX) are equipment makers, energy, and industrials — names that were leading the screen three weeks ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;The AI capex cycle is now showing up in the P&amp;amp;Ls of the names that actually &lt;strong&gt;ship&lt;/strong&gt; the HBM, transceivers, and nearline drives that data centers consume. Equipment makers (AMAT, LRCX, KLAC) remain in the top half of the screen but have lost their top-10 positions. The money is rotating from the pick-and-shovel names to the shovel names.&lt;/p&gt;

&lt;p&gt;Micron's +549% 12-month return is the single largest contributor to its #1 score. Lumentum's +462% run is the second-largest, driven by 800G/1.6T optical transceiver demand for AI clusters. Western Digital and Seagate — the two nearline storage leaders — are both in the top 4 for the first time in this screen's history.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bottom of the table
&lt;/h2&gt;

&lt;p&gt;The weakest risk-adjusted profiles in the universe are a mix of consumer software (HubSpot, Intuit, Trade Desk), gaming (Roblox), China-exposed names (Tencent Music, Grab), and high-beta crypto-adjacent (MicroStrategy). All 10 carry negative 12-month returns and negative Sharpe ratios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Methodology (reproducible)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;yfinance&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;yf&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

&lt;span class="c1"&gt;# 1. Fetch 2y daily closes for the 95-ticker universe
# 2. Compute:
#    - 12-1 momentum: close[-22] / close[-252] - 1
#    - Annualized vol: std(daily_returns, 252d) * sqrt(252)
#    - Sharpe: mean(daily_returns, 252d) * 252 / annualized_vol
#    - Max drawdown: min(close / cummax(close) - 1) over 252d
# 3. Z-score each component across the universe
# 4. Composite = 0.50*z_mom + 0.30*z_sharpe + 0.10*z_lowvol + 0.10*z_lowdd
# 5. Sort descending
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Data source:&lt;/strong&gt; Yahoo Finance (yfinance), auto-adjusted daily closes, trailing 2 years.&lt;br&gt;
&lt;strong&gt;Universe:&lt;/strong&gt; 95 liquid US mega-cap equities (tech, semis, industrials, energy, consumer).&lt;br&gt;
&lt;strong&gt;As-of date:&lt;/strong&gt; 2026-09-11 close (latest available at time of writing).&lt;/p&gt;

&lt;h2&gt;
  
  
  Full report and raw data
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Report:&lt;/strong&gt; &lt;a href="https://github.com/pennypenguinapp-beep/launchtower-factor-datasets/blob/main/reports/launchtower_research_report_2026-09-15.md" rel="noopener noreferrer"&gt;launchtower_research_report_2026-09-15.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raw factor scores (CSV):&lt;/strong&gt; &lt;a href="https://raw.githubusercontent.com/pennypenguinapp-beep/launchtower-factor-datasets/main/data/factor_scores_2026-09-15.csv" rel="noopener noreferrer"&gt;factor_scores_2026-09-15.csv&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/pennypenguinapp-beep/launchtower-factor-datasets" rel="noopener noreferrer"&gt;github.com/pennypenguinapp-beep/launchtower-factor-datasets&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get the full model pack
&lt;/h2&gt;

&lt;p&gt;Want the complete, reproducible model — the full 95-ticker factor table, the dated research report, the exact Python code, and the methodology documentation — in one place?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://buy.stripe.com/test_dRmcN41Qj33N9964nf7AK3B" rel="noopener noreferrer"&gt;→ Get the LaunchTower Full Model Pack ($49)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What's included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The complete 95-ticker factor score dataset (CSV) from the 2026-09-15 screen&lt;/li&gt;
&lt;li&gt;The full dated research report with top/bottom 10 analysis and interpretation&lt;/li&gt;
&lt;li&gt;The self-contained Python script that reproduces the entire screen end-to-end&lt;/li&gt;
&lt;li&gt;Methodology documentation: component definitions, weights, z-scoring, and data sources&lt;/li&gt;
&lt;li&gt;CSV schema reference for every column&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One-time purchase. No subscription. No lock-in. Run it, verify it, build on it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;LaunchTower is a self-funded research desk. This post is for informational purposes only and does not constitute investment advice, a solicitation, or a recommendation to buy or sell any security. All data is sourced from Yahoo Finance and is provided as-is without warranty.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>data</category>
      <category>trading</category>
      <category>python</category>
    </item>
    <item>
      <title>The Chip Complex Is the Only Momentum Story Left: A 102-Stock Factor Screen (2026-09-14, Reproducible)</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 02:45:21 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/the-chip-complex-is-the-only-momentum-story-left-a-102-stock-factor-screen-2026-09-14-1lp</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/the-chip-complex-is-the-only-momentum-story-left-a-102-stock-factor-screen-2026-09-14-1lp</guid>
      <description>&lt;h1&gt;
  
  
  The Chip Complex Is the Only Momentum Story Left: A 102-Stock Factor Screen (2026-09-14, Reproducible)
&lt;/h1&gt;

&lt;p&gt;Most "stock pickers" on the internet can't reproduce their own picks. So here's a small, fully reproducible factor screen — real data, real methodology, real numbers — run on &lt;strong&gt;102 liquid US mega-cap equities&lt;/strong&gt; with data as of the &lt;strong&gt;2026-09-11 close&lt;/strong&gt;. You can run every line yourself and disagree with me if you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  The model in one paragraph
&lt;/h2&gt;

&lt;p&gt;Score each stock on four things, then blend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Momentum (12-1), 50%&lt;/strong&gt; — return from t-252 to t-22 (we skip the last month to avoid short-term reversal).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality (Sharpe), 30%&lt;/strong&gt; — annualized mean daily return / annualized daily vol over the trailing 252 days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low volatility, 10%&lt;/strong&gt; — inverse z-score of annualized realized vol.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low drawdown, 10%&lt;/strong&gt; — inverse z-score of max drawdown from peak.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All four components are z-scored across the 102-name universe before weighting. Composite = &lt;code&gt;0.50·z_mom + 0.30·z_sharpe + 0.10·z_lowvol + 0.10·z_lowdd&lt;/code&gt;. Prices are split/dividend-adjusted daily closes from &lt;code&gt;yfinance&lt;/code&gt;. No black box, no "proprietary alpha."&lt;/p&gt;

&lt;h2&gt;
  
  
  The results (data as of 2026-09-11)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Top 10 by composite:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;12M Ret&lt;/th&gt;
&lt;th&gt;12-1 Mom&lt;/th&gt;
&lt;th&gt;Sharpe&lt;/th&gt;
&lt;th&gt;MaxDD 1Y&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;MU&lt;/td&gt;
&lt;td&gt;Micron&lt;/td&gt;
&lt;td&gt;+597.7%&lt;/td&gt;
&lt;td&gt;+506.2%&lt;/td&gt;
&lt;td&gt;2.79&lt;/td&gt;
&lt;td&gt;−39.1%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+3.659&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;INTC&lt;/td&gt;
&lt;td&gt;Intel&lt;/td&gt;
&lt;td&gt;+315.6%&lt;/td&gt;
&lt;td&gt;+310.2%&lt;/td&gt;
&lt;td&gt;2.18&lt;/td&gt;
&lt;td&gt;−41.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+2.184&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;AMAT&lt;/td&gt;
&lt;td&gt;Applied Materials&lt;/td&gt;
&lt;td&gt;+180.9%&lt;/td&gt;
&lt;td&gt;+223.6%&lt;/td&gt;
&lt;td&gt;2.03&lt;/td&gt;
&lt;td&gt;−39.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.659&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;AMD&lt;/td&gt;
&lt;td&gt;AMD&lt;/td&gt;
&lt;td&gt;+223.5%&lt;/td&gt;
&lt;td&gt;+210.2%&lt;/td&gt;
&lt;td&gt;1.99&lt;/td&gt;
&lt;td&gt;−27.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.404&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;LRCX&lt;/td&gt;
&lt;td&gt;Lam Research&lt;/td&gt;
&lt;td&gt;+179.3%&lt;/td&gt;
&lt;td&gt;+183.7%&lt;/td&gt;
&lt;td&gt;1.92&lt;/td&gt;
&lt;td&gt;−41.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.342&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;MPC&lt;/td&gt;
&lt;td&gt;Marathon&lt;/td&gt;
&lt;td&gt;+121.6%&lt;/td&gt;
&lt;td&gt;+93.7%&lt;/td&gt;
&lt;td&gt;2.50&lt;/td&gt;
&lt;td&gt;−18.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.945&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;ASML&lt;/td&gt;
&lt;td&gt;ASML&lt;/td&gt;
&lt;td&gt;+115.5%&lt;/td&gt;
&lt;td&gt;+126.6%&lt;/td&gt;
&lt;td&gt;1.89&lt;/td&gt;
&lt;td&gt;−22.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.920&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;CAT&lt;/td&gt;
&lt;td&gt;Caterpillar&lt;/td&gt;
&lt;td&gt;+95.3%&lt;/td&gt;
&lt;td&gt;+100.1%&lt;/td&gt;
&lt;td&gt;1.89&lt;/td&gt;
&lt;td&gt;−26.7%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.815&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;KLAC&lt;/td&gt;
&lt;td&gt;KLA&lt;/td&gt;
&lt;td&gt;+94.7%&lt;/td&gt;
&lt;td&gt;+118.0%&lt;/td&gt;
&lt;td&gt;1.41&lt;/td&gt;
&lt;td&gt;−43.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.776&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;FDX&lt;/td&gt;
&lt;td&gt;FedEx&lt;/td&gt;
&lt;td&gt;+73.8%&lt;/td&gt;
&lt;td&gt;+79.5%&lt;/td&gt;
&lt;td&gt;2.09&lt;/td&gt;
&lt;td&gt;−11.7%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.709&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Bottom 10:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;12M Ret&lt;/th&gt;
&lt;th&gt;12-1 Mom&lt;/th&gt;
&lt;th&gt;Sharpe&lt;/th&gt;
&lt;th&gt;MaxDD 1Y&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;td&gt;ORLY&lt;/td&gt;
&lt;td&gt;O'Reilly&lt;/td&gt;
&lt;td&gt;−18.4%&lt;/td&gt;
&lt;td&gt;−14.6%&lt;/td&gt;
&lt;td&gt;−0.66&lt;/td&gt;
&lt;td&gt;−23.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.714&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;94&lt;/td&gt;
&lt;td&gt;ZS&lt;/td&gt;
&lt;td&gt;Zscaler&lt;/td&gt;
&lt;td&gt;−41.0%&lt;/td&gt;
&lt;td&gt;−38.1%&lt;/td&gt;
&lt;td&gt;−0.50&lt;/td&gt;
&lt;td&gt;−64.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.754&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;95&lt;/td&gt;
&lt;td&gt;HD&lt;/td&gt;
&lt;td&gt;Home Depot&lt;/td&gt;
&lt;td&gt;−23.2%&lt;/td&gt;
&lt;td&gt;−17.2%&lt;/td&gt;
&lt;td&gt;−0.92&lt;/td&gt;
&lt;td&gt;−28.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.773&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;td&gt;LOW&lt;/td&gt;
&lt;td&gt;Lowe's&lt;/td&gt;
&lt;td&gt;−24.6%&lt;/td&gt;
&lt;td&gt;−19.1%&lt;/td&gt;
&lt;td&gt;−0.91&lt;/td&gt;
&lt;td&gt;−30.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.780&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;97&lt;/td&gt;
&lt;td&gt;TMUS&lt;/td&gt;
&lt;td&gt;T-Mobile&lt;/td&gt;
&lt;td&gt;−22.6%&lt;/td&gt;
&lt;td&gt;−25.5%&lt;/td&gt;
&lt;td&gt;−0.72&lt;/td&gt;
&lt;td&gt;−29.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.784&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;td&gt;COIN&lt;/td&gt;
&lt;td&gt;Coinbase&lt;/td&gt;
&lt;td&gt;−44.4%&lt;/td&gt;
&lt;td&gt;−54.0%&lt;/td&gt;
&lt;td&gt;−0.48&lt;/td&gt;
&lt;td&gt;−63.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.908&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99&lt;/td&gt;
&lt;td&gt;NFLX&lt;/td&gt;
&lt;td&gt;Netflix&lt;/td&gt;
&lt;td&gt;−38.0%&lt;/td&gt;
&lt;td&gt;−38.3%&lt;/td&gt;
&lt;td&gt;−1.15&lt;/td&gt;
&lt;td&gt;−45.5%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.938&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;ORCL&lt;/td&gt;
&lt;td&gt;Oracle&lt;/td&gt;
&lt;td&gt;−53.7%&lt;/td&gt;
&lt;td&gt;−49.6%&lt;/td&gt;
&lt;td&gt;−1.06&lt;/td&gt;
&lt;td&gt;−64.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.980&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;HUBS&lt;/td&gt;
&lt;td&gt;HubSpot&lt;/td&gt;
&lt;td&gt;−53.9%&lt;/td&gt;
&lt;td&gt;−57.7%&lt;/td&gt;
&lt;td&gt;−0.70&lt;/td&gt;
&lt;td&gt;−67.4%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.987&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;102&lt;/td&gt;
&lt;td&gt;NKE&lt;/td&gt;
&lt;td&gt;Nike&lt;/td&gt;
&lt;td&gt;−48.8%&lt;/td&gt;
&lt;td&gt;−44.3%&lt;/td&gt;
&lt;td&gt;−1.67&lt;/td&gt;
&lt;td&gt;−49.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−1.120&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The interesting part
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7 of the top 10 are semiconductor or semi-adjacent names.&lt;/strong&gt; The memory cycle (Micron, Intel) and the equipment cycle (AMAT, LRCX, KLAC) are doing the heavy lifting. Micron's +598% 12-month return is the single largest contributor to its #1 score — that's a momentum regime, not a quality story, and the model is telling you exactly that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MPC and CAT are the "boring" top-10 names&lt;/strong&gt; — energy and industrials with strong momentum and comparatively low volatility. They're the quality anchor of the top of the table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The bottom of the table is consumer discretionary + software that has underperformed&lt;/strong&gt;: Nike, HubSpot, Oracle, Netflix, and Coinbase all carry negative 12-month momentum &lt;em&gt;and&lt;/em&gt; negative Sharpe. That's the weakest risk-adjusted profile you can have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NFLX and COIN have high beta (0.72 and 2.50 respectively) with negative momentum&lt;/strong&gt; — beta amplifies the downside score, which is exactly what a low-drawdown component is supposed to punish.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why reproducibility matters more than the pick
&lt;/h2&gt;

&lt;p&gt;Anyone can post a table. The point is that this one is &lt;strong&gt;reproducible&lt;/strong&gt;: &lt;code&gt;yfinance&lt;/code&gt; download, 252-day windows, cross-sectional z-scores, fixed 0.50/0.30/0.10/0.10 weighting. If you run it on a different date you get a different ranking — and that's the whole point of a factor model over a "hot tip."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 1. Fetch 2y daily closes for the 102-ticker universe (yfinance)
# 2. Compute:
#    - 12-1 momentum: close[-22] / close[-252] - 1
#    - Annualized vol: std(daily_returns, 252d) * sqrt(252)
#    - Sharpe: mean(daily_returns, 252d) * 252 / annualized_vol
#    - Max drawdown: min(close / cummax(close) - 1) over 252d
# 3. Z-score each component across the universe
# 4. Composite = 0.50*z_mom + 0.30*z_sharpe + 0.10*z_lowvol + 0.10*z_lowdd
# 5. Sort descending
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This is a research screen, not a recommendation.&lt;/strong&gt; Past momentum does not guarantee future returns. All data is point-in-time and subject to revision.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Want the full report + the complete 102-row factor dataset (CSV)?&lt;/strong&gt; It's published by &lt;strong&gt;LaunchTower&lt;/strong&gt;, an independent market-data desk. Grab the full report and dataset here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://buy.stripe.com/test_00w9AS8eH5bVfxu6vn7AK3z" rel="noopener noreferrer"&gt;LaunchTower — Momentum + Quality Factor Report &amp;amp; Dataset (2026-09-14)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Stripe is currently in test mode — test card &lt;code&gt;4242 4242 4242 4242&lt;/code&gt;, any future date/CVC. Live mode activates soon; the link will collect real payments at that point.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;LaunchTower — independent market-data desk. Generated from public data; not personalized investment advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>quant</category>
      <category>python</category>
      <category>data</category>
    </item>
    <item>
      <title>Ranking 19 Mega-Cap Tech Stocks with a Reproducible Momentum + Quality Model (2026-09-11 Data)</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 02:11:55 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/ranking-19-mega-cap-tech-stocks-with-a-reproducible-momentum-quality-model-2026-09-11-data-4bji</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/ranking-19-mega-cap-tech-stocks-with-a-reproducible-momentum-quality-model-2026-09-11-data-4bji</guid>
      <description>&lt;h1&gt;
  
  
  How to Rank 19 Mega-Cap Tech Stocks with a 15-Line Momentum + Quality Model (Reproducible, 2026 Data)
&lt;/h1&gt;

&lt;p&gt;Most "stock pickers" on the internet can't reproduce their own picks. So I built a tiny, fully reproducible factor model, ran it on real market data, and published the exact numbers. Here's the whole thing — method, code, and results — so you can run it yourself and disagree with me if you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  The model in one paragraph
&lt;/h2&gt;

&lt;p&gt;Score each stock on two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Momentum&lt;/strong&gt; — equal-weight z-scores of its 1-month, 3-month, 6-month, and 12-month returns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality&lt;/strong&gt; — the &lt;em&gt;lower&lt;/em&gt; its 12-month realized volatility and 12-month max drawdown, the higher the score (i.e. a penalty for being wild and for deep drawdowns).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then combine them: &lt;strong&gt;Composite = 0.6 × Momentum + 0.4 × Quality.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's it. No black box, no "proprietary alpha." Cross-sectional z-scores over a 19-stock universe of large/mega-cap US tech &amp;amp; growth names, 499 trading days of split/dividend-adjusted closes pulled straight from &lt;code&gt;yfinance&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The results (data as of 2026-09-11)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Top 5 by composite:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;3m ret&lt;/th&gt;
&lt;th&gt;12m ret&lt;/th&gt;
&lt;th&gt;12m vol&lt;/th&gt;
&lt;th&gt;12m maxDD&lt;/th&gt;
&lt;th&gt;Composite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CRM&lt;/td&gt;
&lt;td&gt;+48.8%&lt;/td&gt;
&lt;td&gt;+3.0%&lt;/td&gt;
&lt;td&gt;47.2%&lt;/td&gt;
&lt;td&gt;−43.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.721&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;AMD&lt;/td&gt;
&lt;td&gt;+5.7%&lt;/td&gt;
&lt;td&gt;+223.5%&lt;/td&gt;
&lt;td&gt;71.7%&lt;/td&gt;
&lt;td&gt;−27.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.650&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;MSFT&lt;/td&gt;
&lt;td&gt;+27.2%&lt;/td&gt;
&lt;td&gt;−0.1%&lt;/td&gt;
&lt;td&gt;32.4%&lt;/td&gt;
&lt;td&gt;−34.5%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.283&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;AAPL&lt;/td&gt;
&lt;td&gt;+12.5%&lt;/td&gt;
&lt;td&gt;+47.1%&lt;/td&gt;
&lt;td&gt;25.1%&lt;/td&gt;
&lt;td&gt;−13.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.246&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;MSTR&lt;/td&gt;
&lt;td&gt;+9.0%&lt;/td&gt;
&lt;td&gt;−59.9%&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;−77.1%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.157&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Bottom 5:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;3m ret&lt;/th&gt;
&lt;th&gt;12m ret&lt;/th&gt;
&lt;th&gt;Composite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;TSLA&lt;/td&gt;
&lt;td&gt;−8.5%&lt;/td&gt;
&lt;td&gt;+5.1%&lt;/td&gt;
&lt;td&gt;−0.183&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;UBER&lt;/td&gt;
&lt;td&gt;+3.1%&lt;/td&gt;
&lt;td&gt;−23.9%&lt;/td&gt;
&lt;td&gt;−0.218&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;SHOP&lt;/td&gt;
&lt;td&gt;+16.6%&lt;/td&gt;
&lt;td&gt;−9.4%&lt;/td&gt;
&lt;td&gt;−0.294&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;ORCL&lt;/td&gt;
&lt;td&gt;−18.1%&lt;/td&gt;
&lt;td&gt;−53.7%&lt;/td&gt;
&lt;td&gt;−0.396&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;AVGO&lt;/td&gt;
&lt;td&gt;−6.0%&lt;/td&gt;
&lt;td&gt;−1.3%&lt;/td&gt;
&lt;td&gt;−0.496&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The interesting part
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CRM&lt;/strong&gt; wins because it has a strong 3-month run &lt;em&gt;and&lt;/em&gt; acceptable quality — the cleanest composite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AMD&lt;/strong&gt; is a pure momentum story: +223% over 12 months but 72% volatility and a &lt;em&gt;negative&lt;/em&gt; quality score. The model still ranks it #2 because momentum carries 60% of the weight. That's a feature, not a bug — but it's exactly the kind of thing you should understand before you trust any ranking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AAPL&lt;/strong&gt; is the quality anchor: lowest vol (25%) and shallowest drawdown (−14%) in the whole universe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AVGO / ORCL&lt;/strong&gt; are the clear laggards: negative 3m and 12m returns with elevated vol.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why reproducibility matters more than the pick
&lt;/h2&gt;

&lt;p&gt;Anyone can post a table. The point is that this one is &lt;strong&gt;reproducible&lt;/strong&gt;: &lt;code&gt;yfinance&lt;/code&gt; download, 252-day windows, cross-sectional z-scores, fixed 0.6/0.4 weighting. If you run it on a different date you get a different ranking — and that's the whole point of a factor model over a "hot tip."&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not investment advice. This is a research artifact built from public data.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Want the full report + the complete 19-row factor table (CSV)?&lt;/strong&gt; It's published by LaunchTower, an independent market-data desk. Grab the full report and dataset here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://dev.to/penny_penguin_199601ef2a7/momentum-quality-factor-model-ranking-19-mega-cap-tech-stocks-2026-09-11-data-reproducible-1c7g"&gt;LaunchTower — Momentum + Quality Factor Report (2026-09-11)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;LaunchTower — independent market-data desk. Generated from public data; not personalized investment advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>quant</category>
      <category>finance</category>
      <category>data</category>
      <category>python</category>
    </item>
    <item>
      <title>How to Rank 19 Mega-Cap Tech Stocks with a 15-Line Momentum + Quality Model (Reproducible, 2026 Data)</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 02:09:06 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/how-to-rank-19-mega-cap-tech-stocks-with-a-15-line-momentum-quality-model-reproducible-2026-1bc7</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/how-to-rank-19-mega-cap-tech-stocks-with-a-15-line-momentum-quality-model-reproducible-2026-1bc7</guid>
      <description>&lt;h1&gt;
  
  
  How to Rank 19 Mega-Cap Tech Stocks with a 15-Line Momentum + Quality Model (Reproducible, 2026 Data)
&lt;/h1&gt;

&lt;p&gt;Most "stock pickers" on the internet can't reproduce their own picks. So I built a tiny, fully reproducible factor model, ran it on real market data, and published the exact numbers. Here's the whole thing — method, code, and results — so you can run it yourself and disagree with me if you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  The model in one paragraph
&lt;/h2&gt;

&lt;p&gt;Score each stock on two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Momentum&lt;/strong&gt; — equal-weight z-scores of its 1-month, 3-month, 6-month, and 12-month returns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality&lt;/strong&gt; — the &lt;em&gt;lower&lt;/em&gt; its 12-month realized volatility and 12-month max drawdown, the higher the score (i.e. a penalty for being wild and for deep drawdowns).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then combine them: &lt;strong&gt;Composite = 0.6 × Momentum + 0.4 × Quality.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's it. No black box, no "proprietary alpha." Cross-sectional z-scores over a 19-stock universe of large/mega-cap US tech &amp;amp; growth names, 499 trading days of split/dividend-adjusted closes pulled straight from &lt;code&gt;yfinance&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The results (data as of 2026-09-11)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Top 5 by composite:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;3m ret&lt;/th&gt;
&lt;th&gt;12m ret&lt;/th&gt;
&lt;th&gt;12m vol&lt;/th&gt;
&lt;th&gt;12m maxDD&lt;/th&gt;
&lt;th&gt;Composite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CRM&lt;/td&gt;
&lt;td&gt;+48.8%&lt;/td&gt;
&lt;td&gt;+3.0%&lt;/td&gt;
&lt;td&gt;47.2%&lt;/td&gt;
&lt;td&gt;−43.3%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.721&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;AMD&lt;/td&gt;
&lt;td&gt;+5.7%&lt;/td&gt;
&lt;td&gt;+223.5%&lt;/td&gt;
&lt;td&gt;71.7%&lt;/td&gt;
&lt;td&gt;−27.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.650&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;MSFT&lt;/td&gt;
&lt;td&gt;+27.2%&lt;/td&gt;
&lt;td&gt;−0.1%&lt;/td&gt;
&lt;td&gt;32.4%&lt;/td&gt;
&lt;td&gt;−34.5%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.283&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;AAPL&lt;/td&gt;
&lt;td&gt;+12.5%&lt;/td&gt;
&lt;td&gt;+47.1%&lt;/td&gt;
&lt;td&gt;25.1%&lt;/td&gt;
&lt;td&gt;−13.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.246&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;MSTR&lt;/td&gt;
&lt;td&gt;+9.0%&lt;/td&gt;
&lt;td&gt;−59.9%&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;−77.1%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.157&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Bottom 5:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;3m ret&lt;/th&gt;
&lt;th&gt;12m ret&lt;/th&gt;
&lt;th&gt;Composite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;TSLA&lt;/td&gt;
&lt;td&gt;−8.5%&lt;/td&gt;
&lt;td&gt;+5.1%&lt;/td&gt;
&lt;td&gt;−0.183&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;UBER&lt;/td&gt;
&lt;td&gt;+3.1%&lt;/td&gt;
&lt;td&gt;−23.9%&lt;/td&gt;
&lt;td&gt;−0.218&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;SHOP&lt;/td&gt;
&lt;td&gt;+16.6%&lt;/td&gt;
&lt;td&gt;−9.4%&lt;/td&gt;
&lt;td&gt;−0.294&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;ORCL&lt;/td&gt;
&lt;td&gt;−18.1%&lt;/td&gt;
&lt;td&gt;−53.7%&lt;/td&gt;
&lt;td&gt;−0.396&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;AVGO&lt;/td&gt;
&lt;td&gt;−6.0%&lt;/td&gt;
&lt;td&gt;−1.3%&lt;/td&gt;
&lt;td&gt;−0.496&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The interesting part
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CRM&lt;/strong&gt; wins because it has a strong 3-month run &lt;em&gt;and&lt;/em&gt; acceptable quality — the cleanest composite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AMD&lt;/strong&gt; is a pure momentum story: +223% over 12 months but 72% volatility and a &lt;em&gt;negative&lt;/em&gt; quality score. The model still ranks it #2 because momentum carries 60% of the weight. That's a feature, not a bug — but it's exactly the kind of thing you should understand before you trust any ranking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AAPL&lt;/strong&gt; is the quality anchor: lowest vol (25%) and shallowest drawdown (−14%) in the whole universe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AVGO / ORCL&lt;/strong&gt; are the clear laggards: negative 3m and 12m returns with elevated vol.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why reproducibility matters more than the pick
&lt;/h2&gt;

&lt;p&gt;Anyone can post a table. The point is that this one is &lt;strong&gt;reproducible&lt;/strong&gt;: &lt;code&gt;yfinance&lt;/code&gt; download, 252-day windows, cross-sectional z-scores, fixed 0.6/0.4 weighting. If you run it on a different date you get a different ranking — and that's the whole point of a factor model over a "hot tip."&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not investment advice. This is a research artifact built from public data.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Want the full report + the complete 19-row factor table (CSV)?&lt;/strong&gt; It's published by LaunchTower, an independent market-data desk. Grab the full report and dataset here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://dev.to/penny_penguin_199601ef2a7/momentum-quality-factor-model-ranking-19-mega-cap-tech-stocks-2026-09-11-data-reproducible-1c7g"&gt;LaunchTower — Momentum + Quality Factor Report (2026-09-11)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;LaunchTower — independent market-data desk. Generated from public data; not personalized investment advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>quant</category>
      <category>python</category>
      <category>data</category>
    </item>
    <item>
      <title>Momentum + Quality Factor Model: Ranking 19 Mega-Cap Tech Stocks (2026-09-11 Data, Reproducible)</title>
      <dc:creator>penny penguin</dc:creator>
      <pubDate>Mon, 14 Sep 2026 02:01:43 +0000</pubDate>
      <link>https://dev.to/penny_penguin_199601ef2a7/momentum-quality-factor-model-ranking-19-mega-cap-tech-stocks-2026-09-11-data-reproducible-1c7g</link>
      <guid>https://dev.to/penny_penguin_199601ef2a7/momentum-quality-factor-model-ranking-19-mega-cap-tech-stocks-2026-09-11-data-reproducible-1c7g</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LaunchTower&lt;/strong&gt; is an independent market-data desk. This is a real, dated, reproducible research note — not a stock tip. Every number below comes from public price data (yfinance, split/dividend-adjusted closes) and a simple, fully documented factor model. You can re-run it yourself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Report date:&lt;/strong&gt; 2026-09-11 (data as of market close 2026-09-11)&lt;br&gt;
&lt;strong&gt;Universe:&lt;/strong&gt; 19 large/mega-cap US tech &amp;amp; growth names (1 ticker dropped: SQ — delisted/renamed, no data)&lt;br&gt;
&lt;strong&gt;Observations:&lt;/strong&gt; 499 trading days (2024-09-16 → 2026-09-11), adjusted close prices via yfinance.&lt;br&gt;
&lt;strong&gt;Method:&lt;/strong&gt; Cross-sectional z-scores. Momentum = equal-weight of 1m/3m/6m/12m return z-scores. Quality = negative z of 12m realized volatility and 12m max drawdown. Composite = 0.6 × momentum + 0.4 × quality.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not investment advice. Reproducible: &lt;code&gt;yfinance&lt;/code&gt; download, 252-day windows, z-scored cross-sectionally.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Top 5 (highest composite)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;3m ret&lt;/th&gt;
&lt;th&gt;12m ret&lt;/th&gt;
&lt;th&gt;12m vol&lt;/th&gt;
&lt;th&gt;12m maxDD&lt;/th&gt;
&lt;th&gt;Momentum&lt;/th&gt;
&lt;th&gt;Quality&lt;/th&gt;
&lt;th&gt;Composite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CRM&lt;/td&gt;
&lt;td&gt;247.72&lt;/td&gt;
&lt;td&gt;+48.8%&lt;/td&gt;
&lt;td&gt;+3.0%&lt;/td&gt;
&lt;td&gt;47.2%&lt;/td&gt;
&lt;td&gt;−43.3%&lt;/td&gt;
&lt;td&gt;1.090&lt;/td&gt;
&lt;td&gt;0.167&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.721&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;AMD&lt;/td&gt;
&lt;td&gt;516.13&lt;/td&gt;
&lt;td&gt;+5.7%&lt;/td&gt;
&lt;td&gt;+223.5%&lt;/td&gt;
&lt;td&gt;71.7%&lt;/td&gt;
&lt;td&gt;−27.8%&lt;/td&gt;
&lt;td&gt;1.795&lt;/td&gt;
&lt;td&gt;−1.068&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.650&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;MSFT&lt;/td&gt;
&lt;td&gt;495.63&lt;/td&gt;
&lt;td&gt;+27.2%&lt;/td&gt;
&lt;td&gt;−0.1%&lt;/td&gt;
&lt;td&gt;32.4%&lt;/td&gt;
&lt;td&gt;−34.5%&lt;/td&gt;
&lt;td&gt;0.212&lt;/td&gt;
&lt;td&gt;0.390&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.283&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;AAPL&lt;/td&gt;
&lt;td&gt;332.27&lt;/td&gt;
&lt;td&gt;+12.5%&lt;/td&gt;
&lt;td&gt;+47.1%&lt;/td&gt;
&lt;td&gt;25.1%&lt;/td&gt;
&lt;td&gt;−13.8%&lt;/td&gt;
&lt;td&gt;0.386&lt;/td&gt;
&lt;td&gt;0.037&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.246&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;MSTR&lt;/td&gt;
&lt;td&gt;130.97&lt;/td&gt;
&lt;td&gt;+9.0%&lt;/td&gt;
&lt;td&gt;−59.9%&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;−77.1%&lt;/td&gt;
&lt;td&gt;0.205&lt;/td&gt;
&lt;td&gt;0.084&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.157&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Bottom 5 (lowest composite)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;3m ret&lt;/th&gt;
&lt;th&gt;12m ret&lt;/th&gt;
&lt;th&gt;12m vol&lt;/th&gt;
&lt;th&gt;12m maxDD&lt;/th&gt;
&lt;th&gt;Composite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;TSLA&lt;/td&gt;
&lt;td&gt;365.44&lt;/td&gt;
&lt;td&gt;−8.5%&lt;/td&gt;
&lt;td&gt;+5.1%&lt;/td&gt;
&lt;td&gt;47.5%&lt;/td&gt;
&lt;td&gt;−39.1%&lt;/td&gt;
&lt;td&gt;−0.183&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;UBER&lt;/td&gt;
&lt;td&gt;71.67&lt;/td&gt;
&lt;td&gt;+3.1%&lt;/td&gt;
&lt;td&gt;−23.9%&lt;/td&gt;
&lt;td&gt;35.9%&lt;/td&gt;
&lt;td&gt;−34.1%&lt;/td&gt;
&lt;td&gt;−0.218&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;SHOP&lt;/td&gt;
&lt;td&gt;128.79&lt;/td&gt;
&lt;td&gt;+16.6%&lt;/td&gt;
&lt;td&gt;−9.4%&lt;/td&gt;
&lt;td&gt;58.4%&lt;/td&gt;
&lt;td&gt;−46.7%&lt;/td&gt;
&lt;td&gt;−0.294&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;ORCL&lt;/td&gt;
&lt;td&gt;150.28&lt;/td&gt;
&lt;td&gt;−18.1%&lt;/td&gt;
&lt;td&gt;−53.7%&lt;/td&gt;
&lt;td&gt;57.2%&lt;/td&gt;
&lt;td&gt;−64.6%&lt;/td&gt;
&lt;td&gt;−0.396&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;AVGO&lt;/td&gt;
&lt;td&gt;361.99&lt;/td&gt;
&lt;td&gt;−6.0%&lt;/td&gt;
&lt;td&gt;−1.3%&lt;/td&gt;
&lt;td&gt;46.2%&lt;/td&gt;
&lt;td&gt;−28.7%&lt;/td&gt;
&lt;td&gt;−0.496&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Read of the tape
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CRM&lt;/strong&gt; leads on momentum (strong 3m run) with acceptable quality — cleanest composite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AMD&lt;/strong&gt; is a pure momentum story: +223% over 12m but very high vol (72%) and negative quality; the model still ranks it #2 because momentum dominates the 60/40 weighting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AAPL&lt;/strong&gt; is the quality anchor: lowest vol (25%) and shallowest drawdown (−14%) in the universe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AVGO/ORCL&lt;/strong&gt; are the clear laggards: negative 3m and 12m returns with elevated vol.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SQ excluded (yfinance: "possibly delisted").&lt;/li&gt;
&lt;li&gt;All prices are split/dividend-adjusted closes.&lt;/li&gt;
&lt;li&gt;Full factor table (all 19 names):&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Ticker&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;1m&lt;/th&gt;
&lt;th&gt;3m&lt;/th&gt;
&lt;th&gt;6m&lt;/th&gt;
&lt;th&gt;12m&lt;/th&gt;
&lt;th&gt;12m Vol&lt;/th&gt;
&lt;th&gt;12m MaxDD&lt;/th&gt;
&lt;th&gt;Momentum&lt;/th&gt;
&lt;th&gt;Quality&lt;/th&gt;
&lt;th&gt;Composite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CRM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;247.72&lt;/td&gt;
&lt;td&gt;+28.1%&lt;/td&gt;
&lt;td&gt;+48.8%&lt;/td&gt;
&lt;td&gt;+24.9%&lt;/td&gt;
&lt;td&gt;+3.0%&lt;/td&gt;
&lt;td&gt;47.2%&lt;/td&gt;
&lt;td&gt;-43.3%&lt;/td&gt;
&lt;td&gt;+1.09&lt;/td&gt;
&lt;td&gt;+0.17&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.721&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AMD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;516.13&lt;/td&gt;
&lt;td&gt;+6.9%&lt;/td&gt;
&lt;td&gt;+5.7%&lt;/td&gt;
&lt;td&gt;+161.0%&lt;/td&gt;
&lt;td&gt;+223.5%&lt;/td&gt;
&lt;td&gt;71.7%&lt;/td&gt;
&lt;td&gt;-27.8%&lt;/td&gt;
&lt;td&gt;+1.80&lt;/td&gt;
&lt;td&gt;-1.07&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.650&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MSFT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;495.63&lt;/td&gt;
&lt;td&gt;+0.8%&lt;/td&gt;
&lt;td&gt;+27.2%&lt;/td&gt;
&lt;td&gt;+23.8%&lt;/td&gt;
&lt;td&gt;-0.1%&lt;/td&gt;
&lt;td&gt;32.4%&lt;/td&gt;
&lt;td&gt;-34.5%&lt;/td&gt;
&lt;td&gt;+0.21&lt;/td&gt;
&lt;td&gt;+0.39&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.283&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AAPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;332.27&lt;/td&gt;
&lt;td&gt;+9.9%&lt;/td&gt;
&lt;td&gt;+12.5%&lt;/td&gt;
&lt;td&gt;+30.1%&lt;/td&gt;
&lt;td&gt;+47.0%&lt;/td&gt;
&lt;td&gt;25.1%&lt;/td&gt;
&lt;td&gt;-13.8%&lt;/td&gt;
&lt;td&gt;+0.39&lt;/td&gt;
&lt;td&gt;+0.04&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.246&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MSTR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;130.97&lt;/td&gt;
&lt;td&gt;+38.1%&lt;/td&gt;
&lt;td&gt;+9.0%&lt;/td&gt;
&lt;td&gt;-4.6%&lt;/td&gt;
&lt;td&gt;-59.9%&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;-77.1%&lt;/td&gt;
&lt;td&gt;+0.21&lt;/td&gt;
&lt;td&gt;+0.08&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.157&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ABNB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;170.19&lt;/td&gt;
&lt;td&gt;-5.5%&lt;/td&gt;
&lt;td&gt;+30.0%&lt;/td&gt;
&lt;td&gt;+33.3%&lt;/td&gt;
&lt;td&gt;+37.9%&lt;/td&gt;
&lt;td&gt;34.8%&lt;/td&gt;
&lt;td&gt;-17.2%&lt;/td&gt;
&lt;td&gt;+0.35&lt;/td&gt;
&lt;td&gt;-0.18&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.140&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;META&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;648.03&lt;/td&gt;
&lt;td&gt;+11.9%&lt;/td&gt;
&lt;td&gt;+14.1%&lt;/td&gt;
&lt;td&gt;+1.7%&lt;/td&gt;
&lt;td&gt;-13.5%&lt;/td&gt;
&lt;td&gt;39.4%&lt;/td&gt;
&lt;td&gt;-32.5%&lt;/td&gt;
&lt;td&gt;+0.02&lt;/td&gt;
&lt;td&gt;+0.11&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.053&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;TSM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;433.24&lt;/td&gt;
&lt;td&gt;+0.9%&lt;/td&gt;
&lt;td&gt;+2.9%&lt;/td&gt;
&lt;td&gt;+29.3%&lt;/td&gt;
&lt;td&gt;+68.2%&lt;/td&gt;
&lt;td&gt;40.2%&lt;/td&gt;
&lt;td&gt;-21.6%&lt;/td&gt;
&lt;td&gt;+0.14&lt;/td&gt;
&lt;td&gt;-0.23&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.005&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PLTR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;167.23&lt;/td&gt;
&lt;td&gt;-2.2%&lt;/td&gt;
&lt;td&gt;+27.6%&lt;/td&gt;
&lt;td&gt;+8.9%&lt;/td&gt;
&lt;td&gt;+0.3%&lt;/td&gt;
&lt;td&gt;60.8%&lt;/td&gt;
&lt;td&gt;-48.2%&lt;/td&gt;
&lt;td&gt;+0.06&lt;/td&gt;
&lt;td&gt;-0.13&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.015&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;COIN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;175.26&lt;/td&gt;
&lt;td&gt;+17.6%&lt;/td&gt;
&lt;td&gt;+9.2%&lt;/td&gt;
&lt;td&gt;-9.3%&lt;/td&gt;
&lt;td&gt;-44.4%&lt;/td&gt;
&lt;td&gt;70.7%&lt;/td&gt;
&lt;td&gt;-63.6%&lt;/td&gt;
&lt;td&gt;-0.15&lt;/td&gt;
&lt;td&gt;-0.01&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.095&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AMZN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;256.78&lt;/td&gt;
&lt;td&gt;-3.9%&lt;/td&gt;
&lt;td&gt;+6.3%&lt;/td&gt;
&lt;td&gt;+22.6%&lt;/td&gt;
&lt;td&gt;+11.5%&lt;/td&gt;
&lt;td&gt;34.3%&lt;/td&gt;
&lt;td&gt;-21.7%&lt;/td&gt;
&lt;td&gt;-0.17&lt;/td&gt;
&lt;td&gt;-0.03&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.114&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;GOOGL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;338.5&lt;/td&gt;
&lt;td&gt;-1.4%&lt;/td&gt;
&lt;td&gt;-5.3%&lt;/td&gt;
&lt;td&gt;+11.7%&lt;/td&gt;
&lt;td&gt;+41.9%&lt;/td&gt;
&lt;td&gt;31.5%&lt;/td&gt;
&lt;td&gt;-21.1%&lt;/td&gt;
&lt;td&gt;-0.25&lt;/td&gt;
&lt;td&gt;+0.04&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.137&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;NVDA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;218.29&lt;/td&gt;
&lt;td&gt;-2.5%&lt;/td&gt;
&lt;td&gt;+6.7%&lt;/td&gt;
&lt;td&gt;+19.5%&lt;/td&gt;
&lt;td&gt;+23.4%&lt;/td&gt;
&lt;td&gt;38.0%&lt;/td&gt;
&lt;td&gt;-20.2%&lt;/td&gt;
&lt;td&gt;-0.11&lt;/td&gt;
&lt;td&gt;-0.20&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.143&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;NFLX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;77.4&lt;/td&gt;
&lt;td&gt;+4.3%&lt;/td&gt;
&lt;td&gt;-4.8%&lt;/td&gt;
&lt;td&gt;-17.9%&lt;/td&gt;
&lt;td&gt;-38.0%&lt;/td&gt;
&lt;td&gt;35.9%&lt;/td&gt;
&lt;td&gt;-45.5%&lt;/td&gt;
&lt;td&gt;-0.65&lt;/td&gt;
&lt;td&gt;+0.59&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.154&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;TSLA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;365.44&lt;/td&gt;
&lt;td&gt;+11.6%&lt;/td&gt;
&lt;td&gt;-8.5%&lt;/td&gt;
&lt;td&gt;-7.5%&lt;/td&gt;
&lt;td&gt;+5.1%&lt;/td&gt;
&lt;td&gt;47.5%&lt;/td&gt;
&lt;td&gt;-39.1%&lt;/td&gt;
&lt;td&gt;-0.33&lt;/td&gt;
&lt;td&gt;+0.04&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.183&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;UBER&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;71.67&lt;/td&gt;
&lt;td&gt;-4.9%&lt;/td&gt;
&lt;td&gt;+3.0%&lt;/td&gt;
&lt;td&gt;-1.8%&lt;/td&gt;
&lt;td&gt;-23.9%&lt;/td&gt;
&lt;td&gt;35.9%&lt;/td&gt;
&lt;td&gt;-34.1%&lt;/td&gt;
&lt;td&gt;-0.54&lt;/td&gt;
&lt;td&gt;+0.27&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.218&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SHOP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;128.79&lt;/td&gt;
&lt;td&gt;-14.4%&lt;/td&gt;
&lt;td&gt;+16.6%&lt;/td&gt;
&lt;td&gt;+2.1%&lt;/td&gt;
&lt;td&gt;-9.4%&lt;/td&gt;
&lt;td&gt;58.4%&lt;/td&gt;
&lt;td&gt;-46.7%&lt;/td&gt;
&lt;td&gt;-0.42&lt;/td&gt;
&lt;td&gt;-0.10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.294&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ORCL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;150.28&lt;/td&gt;
&lt;td&gt;-2.0%&lt;/td&gt;
&lt;td&gt;-18.1%&lt;/td&gt;
&lt;td&gt;-4.9%&lt;/td&gt;
&lt;td&gt;-53.7%&lt;/td&gt;
&lt;td&gt;57.2%&lt;/td&gt;
&lt;td&gt;-64.6%&lt;/td&gt;
&lt;td&gt;-0.96&lt;/td&gt;
&lt;td&gt;+0.45&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.396&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AVGO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;361.99&lt;/td&gt;
&lt;td&gt;-13.0%&lt;/td&gt;
&lt;td&gt;-6.0%&lt;/td&gt;
&lt;td&gt;+8.1%&lt;/td&gt;
&lt;td&gt;-1.3%&lt;/td&gt;
&lt;td&gt;46.2%&lt;/td&gt;
&lt;td&gt;-28.7%&lt;/td&gt;
&lt;td&gt;-0.68&lt;/td&gt;
&lt;td&gt;-0.22&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.496&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;LaunchTower — independent market-data desk. This report is generated from public data and is not personalized investment advice.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Get the full report + reproducible pipeline
&lt;/h2&gt;

&lt;p&gt;The complete research package — all 19 tickers with every factor score, the full methodology writeup, the raw factor CSV, and the ~100-line Python model you can re-run on any universe — is available for &lt;strong&gt;$9.99&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://buy.stripe.com/test_5kQ28qamPcEn4SQ4nf7AK3t" rel="noopener noreferrer"&gt;→ Get the LaunchTower 2026-09-11 Momentum + Quality Report&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(Stripe test-mode checkout — the production link ships with the live release.)&lt;/p&gt;

&lt;p&gt;If you build quant or market-data tooling, I'd genuinely like feedback on the methodology in the comments — especially the quality weighting.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;LaunchTower — independent market-data desk. Generated from public data. Not personalized investment advice. Past performance does not guarantee future results.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>quant</category>
      <category>python</category>
      <category>data</category>
    </item>
  </channel>
</rss>
