Kartan · Del två · Maskinen · Kapitel 15 av 23
Var datan bor och hur den hålls ärlig
Varje siffra med sitt ursprung, varje värdering med sina åtta deklarationer, varje körning med sin egen rad. Varför en värdering som inte kan slutföra sitt protokoll skriver ut ingenting i stället för ett tal med en varning. Ungefär 8 minuter.
Del ett sa att varje siffra bär med sig var den kom ifrån. Det här kapitlet handlar om vart det tar vägen, och om den enda regel som håller hela registret pålitligt: ett tal med ett hål i sitt ursprung skrivs inte ut med ett förbehåll. Det skrivs inte ut alls.
Fyra ställen där en siffra kan bo
- Körningsdatabasen. En rad per bolag och nattkörning: kursen, de uträknade siffrorna, utlåtandekoderna, blockeringarna. Ingenting läser tillbaka den ännu; den finns för att samla på sig, så att historiken kan rekonstrueras senare.11vss/store.py.
- Grunddatalagret. Varje redovisningsperiod som någonsin hämtats för ett bolag, sparad för gott. Ett kvartal ersätter aldrig ett år. Ett lager som rensade gamla perioder skulle göra det omöjligt att återskapa en gammal värdering.22Beslut E49: lagret behåller varje period det någonsin har hämtat. Beslut E17: ett kvartal ersätter aldrig ett år.
- Screenerns ögonblicksbilder. En liten databas per screeningkörning, med råa dagliga kurser, aldrig uträknade siffror, plus listan över bolag, avvisningarna och en hämtningsstatus per bolag. De fyra senaste kursbilderna sparas; varje rangordning sparas för alltid, eftersom varje framtida jämförelse vilar på den.33vss/snapshot.py; lagringstiden beskrivs i projektbeskrivningen §6.5.
- Ägarens fil. Statusar, nivåer, värden, stopp, anteckningar och handinmatade siffror. Spårad under versionshantering, på ägarens beslut, så att beslutens historik finns i filens historik.44README om config/watchlist.yaml, spårad sedan 2026-08-25.
Körningsprotokollet: åtta deklarationer eller ingenting
En värdering är inte ett tal. Den är ett tal plus allt som avgjordes för att få fram det. Så innan ett värde får skrivas ut måste körningsprotokollet för den värderingen deklarera åtta saker: vilket antal aktier som användes och per vilket datum; hur aktiebaserad ersättning behandlades; var bolaget bokför sin ränta, och därmed vad "fritt kassaflöde" betyder för det; varje post i bryggan från värdet på hela verksamheten till värdet på dess aktier; aritmetikens konventioner; diskonteringsräntan med sitt ankare och tillväxttakten med den bedömning den kom från; de tre as-of-datumen och kursdatumet; och ursprunget för varje indata.55vss/runrecord.py: 'EN KÖRNING UTAN KOMPLETT PROTOKOLL SKRIVER INTE UT ETT VERKLIGT VÄRDE. Inte \'skriver ut ett med en varning\'.'
Varför att vägra slår att fortsätta
Sju av de åtta deklarationerna är på plats. Aktieantalet finns men datumet det angavs saknas. Skriv ändå ut värdet, med en anmärkning: "aktieantalets datum okänt". Ägaren kommer att se anmärkningen.
Värderingen kastar ett fel och skriver inte ut något värde för det bolaget. Rapporten säger vilken deklaration som saknas. De andra bolagen i samma körning påverkas inte: ett bolags saknade deklaration är det bolagets DATA SAKNAS, aldrig en orsak att stoppa körningen för de övriga.
Anmärkningen skulle läsas första gången och inte den tionde. Ett tal på en sida är ett tal; förbehållet bredvid är dekoration, och dekoration ignoreras. Det enda förbehåll som inte går att ignorera är att talet saknas. Därför vägrar registret, och vägran är en rad i rapporten som säger vad du ska gå och leta efter.
Det finns två nivåer av vägran, och det är värt att vara exakt. En felaktig eller saknad siffra för ett bolag försämrar det bolagets rad och inget annat; nattkörningen är byggd så att ett enskilt bolag aldrig kan bryta den. En korrupt ägarfil, en felformad post eller en handskriven köpkurs, stoppar hela körningen innan den börjar, högljutt, eftersom en körning på en korrupt fil skulle skriva korrupta rader i registret för varje bolag.66Körningsledaren fångar fel per bolag och fortsätter ('ett bolag bryter aldrig körningen'); konfigurationsläsaren låter hela körningen misslyckas vid en felformad post eller en proveniensmotsägelse.
Kontrollerad, okontrollerad, saknad, inte där
En siffras verifieringsstatus följer med den. Den kommer in okontrollerad. En människa läser tillbaka den mot sidan som anges bredvid och markerar den som kontrollerad, och markeringen anger vilken sorts kontroll: mot tillsynsmyndighetens strukturerade data, över två skilda dokument, eller mot samma sida den kom från. Där en siffra eftersöktes i en fullständig rapport och inte finns, säger registret det, vilket är något annat än en nolla och något annat än saknad.77Verifieringssorter: beslut E40 och vss/manual.py. Ej redovisad: beslut E85. En nolla kräver ett underlag: beslut E25.
Att två oberoende avläsningar stämmer överens är det som gör en siffra till ägarens. Där två avläsningar skiljer sig åt extraheras siffran på nytt innan någon eskalerar den, eftersom den första frågan om en avvikelse är om den ena avläsningen helt enkelt var fel.88Beslut E104.
Att avbryta en screening på grund av ett hål
Screenern har ett ställe där den stannar i stället för att fortsätta: när en kvartalsjämförelse den behöver inte kan bildas för att ett kvartal saknas, bryter den körningen i stället för att slå ut ett bolag på ett hål. Ett test av fallande omsättning som underkänner ett bolag för ett kvartal som leverantören inte levererade vore precis det tvåsidiga felet från kapitel 9, i stor skala.99vss/filters.py, omsättningsledet: en jämförelse som kvartalen inte kan bilda 'bryter körningen i stället för att slå ut på ett hål'.
- Beslut
- En värdering skriver ut ett värde bara med ett komplett protokoll om åtta deklarationer; annars skriver den ut ingenting för det bolaget och säger vad som saknas. Ett enskilt bolags fel stoppar aldrig körningen; en korrupt ägarfil stoppar den innan den börjar.
- Varför
- Ett förbehåll bredvid ett tal läses en gång. Ett saknat tal läses varje gång.
- Kostnad
- Bolag står värderade till ingenting så länge en deklaration saknas, och rapporten blir längre av att förklara varför. Ägaren lägger kvällar på att leta aktieantalsdatum.
Källor för det här kapitlet
- Registret, körningsprotokollet och lagret — läst ur det här repot: vss/store.py; vss/runrecord.py; vss/snapshot.py; vss/manual.py; vss/runner.py; reference/FRAMEWORK-EDITS.md E17, E25, E40, E49, E85, E104
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.