Kartan · Del ett · Metoden · Kapitel 4 av 23
Screenern: från tvåtusen till en handfull
Ett grovt mekaniskt pass som tar bort det som går att anmärka på med offentliga siffror, så att en människas lästid går till det som återstår. Det hittar ingenting. Det tar bara bort. Ungefär 10 minuter.
Tvåtusen namn, en läsare. Det enda sättet igenom är att ta bort de flesta utan att läsa dem, med frågor som är så grova att en maskin kan ställa dem till offentliga siffror. Det passet är screenern, och det viktigaste att förstå om den är vad den inte gör: den hittar inga bra bolag. Den tar bort bolag som faller på ett litet antal grova test, och lämnar det som blir kvar till en människa.
Var de två tusen kommer ifrån
Listan är fast och daterad: medlemmarna i de stora amerikanska, europeiska och nordiska indexen för stora och medelstora bolag, skrivna till filer en angiven dag och förvarade under versionshantering. Listan hämtas aldrig live, så en körning vilken dag som helst kan upprepas senare på exakt samma namn.11Universumfilerna under config/universe/ har sitt datum i filnamnet; indexmedlemskap hämtas aldrig vid körning (vss/universe.py). 2 011 instrument den 2026-09-10. Fonder, trusts, blankocheckbolag och omslag för utländska noteringar tas bort utifrån källlistans eget typfält, aldrig genom att gissa efter namnet.
Stegen, i ordning, och varför varje fråga ställs
Steg 0: namn som redan ägs eller redan avgjorts
En kort undantagslista med bolag som ägaren redan innehar eller redan har tagit ställning till. Det är meningslöst att screena ett namn vars svar redan är känt. En post på den listan som inte matchar något rapporteras som overksam, så att listan inte i det tysta kan ruttna.
Filter 1: har kursen fallit tillräckligt, men inte för mycket?
Metoden letar efter företag som marknaden tillfälligt har tappat intresset för. Den första frågan är därför om kursen ligger mellan 15 och 50 procent under sin högsta nivå det senaste året. Mindre än 15 och ingenting har hänt. Mer än 50 och arbetsantagandet är att något faktiskt är trasigt, vilket är en annan sorts bolag och ligger utanför ramen.22Ramverket §3 spärr 1; bandet är implementerat en enda gång i vss/rules.py och återanvänds av både screenern och nattkörningen.
Två frågor till följer med den här. Har bolaget varit börsnoterat i minst fem år? En yngre notering har inte tillräckligt med redovisad historik att testa, och ett bolag som knoppats av från ett annat räknas som nytt.33Beslut E52 och E52.1: en notering yngre än fem år avvisas på saknade data, och en avknoppning är en ny notering. Och är företaget ett som metoden över huvud taget kan bedöma? Kapitel 5 behandlar den gränsen.
Filter 2: går det att anmärka på företaget utifrån tre grova siffror?
För de som klarat sig, och bara för dem, hämtar verktyget bokslut och ställer tre frågor. Genererade företaget överskottskassa under de senaste tolv månaderna? Är dess skuld, efter avdrag för kassan, högst två och en halv gång dess årliga rörelseresultat före ränta, skatt, avskrivningar och nedskrivningar, en siffra som förkortas EBITDA? Och har omsättningen undvikit att falla, jämfört med samma kvartal ett år tidigare, två kvartal i rad?44Tröskelvärdena finns i config/screener_filter2.yaml, var och en med hänvisning till sitt avsnitt i ramverket: positivt fritt kassaflöde (en förgrovning av spärr 3:s sex av åtta kvartal, eftersom kvartalsvis kassaflödeshistorik saknas för en stor del av listan); nettoskuld i förhållande till EBITDA högst 2,5×, beslut E44; två på varandra följande kvartalsvisa omsättningsminskningar jämfört med föregående år diskvalificerar, beslut E45.
Skuldtaket har sin egen historia. Den första versionen använde en generösare gräns, tre och en halv gång, med argumentet att ett grovt filter inte får förlora ett namn som den noggranna läsningen skulle behålla. Fyra dagar senare visade en testkörning att 72 namn klarade den generösa gränsen och sedan föll på metodens egna strängare test längre fram. Att släppa igenom dem gav inget annat än mer läsning. Taket skärptes genom ett daterat beslut som anger antalet.55Besluten E2 (2026-08-22, 3,5×) och E44 (2026-08-26, 2,5×), med mätningen av 72 namn i beslutstexten.
Rangordning: vilka som klarat sig läses först
Det som återstår ordnas efter två siffror. Hur lönsamt är företaget i förhållande till allt det äger, mätt som rörelseresultat genom totala tillgångar. Och hur billigt är det i förhållande till vad hela företaget skulle kosta att köpa, mätt som rörelseresultat genom den kostnaden. Varje överlevare rangordnas på båda, de två rangplatserna adderas och listan sorteras. Inga vikter, ingen poäng, ingen tröskel.66Beslut E6 enligt ändring i E43. En tidigare version använde ett lönsamhetsmått vars nämnare gick mot noll för företag som äger lite, så de tretton främsta placeringarna gick till de tretton namn som låg närmast den polen; det ersattes. Banker, försäkringsbolag och fastighetsbolag kan inte rangordnas på den första siffran och listas separat på enbart den andra, aldrig blandade med de övriga.
Vad som kommer ut
De tjugo främsta bevakas för kursrörelser. Tre till fem föreslås för läsning. Inget av dem bär ett värde, en köpkurs eller en säkerhetsnivå. Screenerns resultat är en läslista, och en människa läser den.
Vad en screening inte kan se
- Varför kursen föll. Ett fall på 30 procent på grund av ett rykte och ett fall på 30 procent på grund av bedrägeri ser likadana ut för filter 1. Orsaken är det första läsaren måste ta reda på, och den är ämnet för nästa kapitel.
- Allt som leverantörens siffror får fel. Bokslutet kommer i det här skedet från en dataleverantör, inte från rapporterna. En felaktigt märkt rad passerar obemärkt. En sådan rad hittades bara därför att den inte stämde med någon inlämnad siffra för något av de fem bolag som kontrollerades för hand.77Beslut E43: leverantörens rad för 'bruttovinst' gick inte att stämma av mot någon inlämnad rad för något av fem testnamn, och ersattes av rörelseresultat i rangordningen.
- Ett namn som den aldrig hämtade bokslut för. Bokslut hämtas bara för filter 1:s överlevare. Ett test som läser en branschetikett kan inte se ett bolag som aldrig kom så långt. Den tystnaden är ett faktum om hämtningen, inte om bolaget, och verktyget säger det.88Beslut E96: 'The string limb is blind where the fetch has not reached.'
- Om ett bolag är bra. Inget i det här kapitlet är en bedömning. Det är en lista över sådant som inte kunde anmärkas på i ett grovt test.
Ytterligare en ärlighetsförklaring. Screenern spelar upp tidigare datum igen med hjälp av dagens bokslut mot den dagens kurser, eftersom leverantören bara levererar det senaste bokslutet. En sådan uppspelning är därför inget belägg för vad screeningen skulle ha hittat den dagen, och varje uppspelningsrapport säger det i en banderoll överst.
De exakta reglerna
Ramverket §3 (spärrarna 1 till 5) och screenerbesluten E2, E6, E43, E44, E45, E46, E48, E52, E93, E96, E97 i reference/FRAMEWORK-EDITS.md. Tröskelvärden: config/screener_filter2.yaml. Kod: vss/screen.py, vss/filters.py, vss/universe.py, vss/ranking.py. Två tekniska mått, en momentumindikator och ett glidande medelvärde, beräknas och skrivs ut men används aldrig som filter, eftersom ett sådant filter, oavsett riktning, vid ett verkligt köp i det förflutna hade förkastat en av de två relevanta dagarna.
Källor för det här kapitlet
- Screenerns utformning och beslut — läst ur det här repot: reference/FRAMEWORK-EDITS.md E2, E6, E43, E44, E45, E52, E93, E96, E97; config/screener_filter2.yaml; vss/screen.py; vss/filters.py
Den långsamma vägen, gjord uthärdlig. Byggd 2026-09-13 ur repot som det såg ut den dagen. BOLAG A och BOLAG B är påhittade; inget bolag, ingen kurs och inget innehav förekommer på den här sajten. Inte finansiell rådgivning: en privatinvesterares metod, delad som den är.