Senast hämtad: –Senast ändrad: –Nästa auto-refresh: ca 45sPublika kurser är periodiska/cacheade, ej tick-för-tick.
Dataintegritet: väntar på första hämtning…
Idag kräver åtgärd tryck för att öppna
Beslutsstöd – deterministisk sammanställning ur rutmodellen + senast kända värde. Ingen automatisk handel; manuell handel i Avanza.
Dagens vinnare / förlorare tryck för att öppna
Vinnare
Förlorare
8x8-bräde: ruta R64 uppe till vänster ned till R1. Faszonsfärger enligt CHESS-modellen. Kurser kan vara fördröjda beroende på datakälla. Handel sker manuellt i Avanza. Ingen automatisk handel.
Portfölj
Avanza-baslinje (2026-06-23, efter köp): Totalt 291 735 SEK · Värdepapper 274 107 SEK · Kassa 17 627 SEK · I år -10 933 SEK · Innehav 11
Bolag
Konto
Antal
Snittköp
Anskaffning
Värde
Dag
Datakvalitet
Portföljvärde över tid
Daglig värdehistorik byggs upp i appens datatillstånd. Persistens: serverfil via sidecar (value_history.json) om tillgänglig, annars körningssäker i minnet. Ingen webbläsarlagring. Inga påhittade kurser.
Dagens vinnare / förlorare tryck för att öppna
Vinnare
Förlorare
Värden uppdateras periodiskt från publik kurskälla. Handel sker manuellt i Avanza.
Signalranking / Screener
Watchlist & Screener (43.9): Bevaknings-/screeningslager för EXTERNA kandidater till schackbrädet – pre-22 scout-kandidater, gula 22–31-kandidater och 32–35 underprissatta inflection-kandidater. Watchlist – ej portfölj. Kandidaterna är en kurerad bevakningslista (scaffold), inte aktiva innehav och inte finansiell rådgivning. De 11 aktiva innehaven ingår INTE i kandidatuniversumet. candidateRank = 0,30·signal + 0,25·inflection + 0,20·dual-use + 0,15·rutpoäng + 0,10·tema + bonus(underprissatt/tidig inflection) − datakvalitetsavdrag. Rutregler: <R22 scout (bevaka), R22 köpzon (köp vid R22), R23–31 gul ackumulation/bevakning, R32 röd köpstopp, R33–35 inflection endast om underprissatt + identifierad tidigt. Inga påhittade kurser, ingen automatisk handel.
Signalranking (aktiva bolag)
Signalintegritet:Fallbacksignal (statisk) – ej komplett live-signal. Källa: inbyggd fallback tills /api/signals/topbottom svarar.
Signalpoäng 0–100 per bolag. Statisk fallback visas om /api/signals/topbottom inte svarar. Rankingen blir märkt Live först när signal-API:t svarar; annars Fallbacksignal.
Allokeringsmotor – Avvikelse mot plan
Rekommenderad vikt per ruta/fas och conviction (signalpoäng) jämförs mot faktisk vikt (livevärde / portföljtotal). Klassning: Undervikt / I intervall / Övervikt / Köpstopp / Bevakning. Deterministiskt beslutsstöd – inga påhittade fundamenta, ingen automatisk handel. Manuell handel i Avanza.
Bolag
Ruta/fas
Conv.
Rek. vikt
Faktisk
Avvikelse
Signaljournal
Per bolag: aktuell ruta/fas, modellåtgärd, varför bolaget ligger där, aktuella triggers och nästa checkpoint/regel. Beslutsstöd ur rutmodellen + senast kända värde – inga påhittade fundamenta.
Säljtriggers (beslutsstöd)
Disciplinerade säljskäl. Appen signalerar/markerar bara – du säljer själv manuellt i Avanza. Ingen automatisk orderläggning.
Signalformel (planerad signalmotor – ej fullt aktiverad än): Signalpoäng vägs av: (1) marknadsmomentum, (2) volymutbrott, (3) triggerrutestatus (SCOUT/KÖP/BEVAK/FASLARM/ENDGAME), (4) fundamental/operativ hävstång, (5) nyhets-/kontrakts-/regulatorisk katalysator, (6) datakvalitetsavdrag om kurs saknas. Tills motorn är live visas en ärlig statisk fallback – inga dynamiska poäng fabriceras.
Handlingsplan
Beslutsstöd. All handel sker manuellt i Avanza. Inga personliga råd, inga automatiska order. Alla bolag som möter modellens parametrar samlas här i åtgärdskategorier, härledda ur rutmodellen, conviction och avvikelse mot plan – inga påhittade fundamenta. Ordersteg är konservativa modellförslag, inte rekommendationer.
Larm
Larmmodul aktiv. In-app-larm, rutlarm, ljudlarm samt en server-driven Larmcentral (43.10.2). Larmen bevakar de aktiva innehaven dynamiskt ur huvudportföljen (HOLD) – ingen separat hårdkodad lista. Innehav med svag/ofullständig datakälla (t.ex. SMTE) tappas aldrig: vid timeout/utebliven kurs används senast kända värde (live-cache → Avanza-referens) och status markeras som fallback. Webbläsar-push (bakgrundsnotiser) kräver HTTPS/domän + installerad PWA och är inte aktiv över HTTP – se push-status nedan. Ingen automatisk handel; all handel sker manuellt i Avanza.
Larmcentral (Server Alerts) Larm: 0 olästa
Server-driven larmjournal: larm härleds ur samma befintliga regler (watchlist R22/R28–31/R32, datahälsa, rutrörelser) – inga påhittade marknadshändelser – och sparas i en serverfil (alert_journal.json via sidecar, ingen webbläsarlagring) så de kan ses i efterhand. Oläst-räknare, allvarlighetsgrad och kvittering. Anti-spam: samma ticker+händelse dubbleras inte (klient- + server-dedup med cooldown). Beslutsstöd – manuell åtgärd i Avanza.
Olästa: 0 / totalt 0
Hämtar serverlarm …
Push-beredskapKontrollerar …
Äkta webbläsarnotiser (Notification API / Service Worker) kräver en säker kontext – HTTPS eller egen domän – och på iPhone/iPad i praktiken att appen är installerad som PWA (Lägg till på hemskärmen). Den här installationen servas över HTTP (http://165.22.16.114:8090), så bakgrunds-push är inte tillgänglig ännu – appen säger det ärligt och faller tillbaka på ljudlarm + visuella larm + Larmcentral. När appen senare servas över HTTPS/domän och installeras som PWA blir knappen nedan aktiv.
PWA & HTTPSKontrollerar …
HTTPS / säker kontext–
Service Worker–
Notis-API–
Installerad som app–
Installera som app: öppna i Safari på iPhone/iPad → Dela → Lägg till på hemskärmen. Äkta bakgrundsnotiser kräver att sidan servas över HTTPS/egen domän (t.ex. https://chess.skuruborg.se) och att appen är installerad som PWA. Över http://165.22.16.114:8090 är detta inte aktivt – se README/NOTES för domän- och Caddy-steg.
Server-scanning (Scanmotor)Kontrollerar …
Scanmotorn körs på servern och scannar portföljen med jämna mellanrum – även när webbläsaren är stängd. Den härleder larm ur faktisk kursdata (dagsförändring per innehav) och datahälsa (fallback/inaktuell/timeout) – inga påhittade marknadshändelser. Larmen hamnar i Larmcentralen ovan. Motorn scannar och larmar, men all handel sker manuellt i Avanza – ingen automatisk handel.
Status–
Senaste scan–
Nästa scan–
Intervall–
Antal scans–
Senaste varaktighet–
Senaste resultat–
Nya larm senast–
Marknadssession–
Ljudlarm (Audio Alerts)
Ljudlarm av
Ljudlarm spelar korta toner via telefonens/datorns högtalare med Web Audio (genererade toner – inga ljudfiler). På iPad/iPhone måste du först trycka på Aktivera ljudlarm eller en Testa ljud-knapp – webbläsaren tillåter ljud först efter en knapptryckning. Ingen autouppspelning vid sidladdning. Visuella larm visas alltid, även med ljudet avstängt. Samma ticker + händelse spelas bara en gång per session (med kort paus mellan ljud) så inget spammar.
Den här webbläsaren saknar Web Audio-stöd – ljudlarm är inaktiverat, men visuella larm fungerar som vanligt.
Aktiva innehav – larmstatus
Bevakade aktiva innehav (dynamiskt ur portföljen). Källa per rad: live, senast känt eller Avanza-referens.
Väntar på portföljdata …
Datahälso-larm (Data Integrity Layer)
Larmar när datakällan för ett innehav är Timeout (ingen användbar kurs), endast Fallback (Avanza-referens/manuell) eller fördröjd bortom tröskel för ett beslutskritiskt innehav. Kompletterar pris-/rutlarmen – bryter dem aldrig. SMTE m.fl. tappas aldrig.
Väntar på portföljdata …
Watchlist-larm (Watchlist & Screener Layer)
Separata larm för EXTERNA bevakningskandidater (ej aktiva innehav): kandidater som når köpzon R22, går in i intensiv bevakning R28–31, når röd fasövergång R32 eller har tappad datakvalitet (Fallback/Timeout). Åtskilda från de aktiva portfölj-larmen ovan. Watchlist – ingen finansiell rådgivning, ingen automatisk handel.
Beräknas vid render.
Regler
R22 Bevakningszon – tidiga signaler
R28-31 Momentum/utbrott
R32 Riskkontroll / paus
R33-36 Kärninnehav – position
R60-64 Toppruta – vinsthemtagning
Senaste rutrörelser
Inga rutrörelser registrerade i denna webbläsare ännu.
Triggerlogg (aktiva regelstatus)
Genererad ögonblicksbild av aktuella triggerstatus denna session (ingen persistens ännu). Manuell handel – appen markerar/signalerar bara; du köper själv i Avanza.
Orderjournal
Manuell journal. Inga order skickas automatiskt – all handel sker manuellt i Avanza. Anskaffningsvärde och kassa enligt Avanza-baslinje 2026-06-23.
Bolag
Antal
Snittköp
Anskaffning
Köpplan – Risk & Execution Layer
Beslutsstöd. All handel sker manuellt i Avanza. Köpplanen räknar dynamiskt ur huvudportföljen (HOLD → de aktiva innehaven) – ingen separat hårdkodad lista. Per innehav: aktuell vikt, målvikt (modell/ruta/signal med tak), allokeringsgap i SEK, riskklass och rekommendation. Kassan får en praktisk, stegvis utplaceringsplan med bevarad buffert. SMTE och andra innehav med svag datakälla tappas aldrig – senast kända värde används. Inga påhittade fundamenta, inga personliga råd, ingen automatisk orderläggning. Startvärde (Avanza 2026-06-23, efter köp): totalt 291 735 SEK, värdepapper 274 107 SEK, kassa 17 627 SEK, basvärde 302 668 SEK.
Föreslagen nästa köpordning (kassa)
Kassa fördelas på de mest underviktade köpbara innehaven, stegvis och med bevarad buffert. Maxorder per position begränsas. Manuell handel i Avanza.
Riskvikter per innehav
Modellregler (rutmodell – synliga parametrar)
R22 Normal köptrigger (entry). Köp när conviction passerar tröskeln och positionen är underviktad.
R28–31 Intensifierad bevakning. Endast stegvis påfyllning om signalpoäng är hög OCH innehavet är underviktat.
R32 Rött larm / fasövergång. Inget nytt aggressivt köp. Ägs det ej redan → "sen entré / köpstopp".
R33–36 Kvalar för ny investering endast om identifierat före/vid R36 och fortfarande underprissatt – annars försiktighet. Redan ägt kan hållas/trimmas beroende på vikt och signal.
R61–64 Endgame/compounder. Inget automatiskt köp – utvärdera värdering/övervikt.
Pre-22 undantag Extraordinär trigger/hög signal kan ge "Tidigt alpha-case" – men endast en liten startposition rekommenderas.
Viktstak Kärna/sen-validerade max ~10–12%. Spets/deep-tech lägre mål/max ~3–7% efter risk. Kassareserv bevaras – allokera aldrig hela kassan på en gång.
Lärande / Precision
Lärande utfallsmotor (43.13): Varje signal/larm från scanmotorn loggas server-side i outcome_journal.json (ingen webbläsarlagring). Motorn följer det faktiska utfallet över tid via checkpoints (1d/1w/1m/3m) som jämför kursen vid signalen mot senare verklig kurs, och visar träffsäkerhet per signaltyp. Detta är ärlig, evidensbaserad inlärning – ingen fejk-AI. Inga påhittade historiska kurser: saknas data markeras checkpoint som pending eller otillräcklig. Motorn lär sig av utfall men ändrar inte köp/säljregler automatiskt utan ditt godkännande. Beslutsstöd – ingen automatisk handel.
–
Loggade signaler–
Öppna signaler–
Utvärderade signaler–
Pending checkpoints–
Bästa signaltyp–
Sämsta signaltyp–
Falska positiva–
Inaktuell-data-signaler–
Träffsäkerhet per signaltyp
Träffkvot räknas endast på beslutade utfall (hit/miss); neutrala (±2%) och pending räknas ej. Täckningsetikett visar om urvalet är för litet, tidig evidens eller meningsfullt.
Lärande rekommendationer (icke-bindande)
Förslag baserade på faktiskt utfall. Inga regeländringar sker automatiskt – detta är endast underlag för ditt beslut.
Senaste signaler
Ticker
Händelse
Datum
Kurs v. signal
Datakvalitet
Status
1d
1w
1m
3m
Laddar …
System
Render isolation:aktiv (43.12.1) – defensiv iPad/Safari-isolering: solid ogenomskinlig bakgrund på html/body/app-skal, egna stacking contexts (isolation:isolate) + paint-containment på innehållspaneler och modal, så inget främmande sid-/flik-innehåll kan lysa igenom CHESS-ytan. Ingen layout-/logikändring; alla 43.12-funktioner bevarade.
Beslutsseparation (43.9.2): Appen skiljer tydligt på aktiva innehav och externa bevakningskandidater. Aktiva innehav är de 11 bolag du faktiskt äger (AXON, QBTS, GAPW-B, KTOS, NBIS, PLTR, PL, RKLB, SMTE, SOUN, VOYG) – endast dessa har faktisk vikt, allokeringsgap och över-/undervikt mot portföljvärdet, och endast dessa driver Köpplanens risk- och köplogik. Externa bevakningskandidater (Watchlist & Screener Layer) rankas och visas separat i Signalranking/Screener och som prickade ghost-chips på brädet; i allokeringsöversikten ligger de i en egen grupp märkt "Extern bevakning" och får ALDRIG faktisk vikt eller allokering som om de vore ägda. Köpplanens rekommendationer delas dessutom i tre begrepp: Akut åtgärd (Köp nu / Fyll på / Trimma nu / Köpstopp), Risknotering (Övervikt / Datakontroll / Fallbackkälla – en flagga att bevaka, inte en omedelbar säljsignal) och Nästa steg (Bevaka rapport / Invänta trigger / Verifiera kurs i Avanza). En övervikt blir "Trimma nu" endast vid materiell övervikt (>50% över conviction-viktad målvikt); annars "Risknotering: Övervikt". En färsk manuell Avanza-kurs (samma handelsdag / inom 30h) räknas som beslutssäker "Manuell Avanza-kurs"; en gammal manuell override degraderas ärligt till icke-beslutssäker Fallback. Beslutsstöd – all handel sker manuellt i Avanza.
Version:CHESS 43.13 Learning Outcome Engine – självlärande utfallsmodul ovanpå 43.12.1 Render Isolation Fix (samma design/data/funktioner). Nytt i 43.13 (Learning Outcome Engine): En ÄRLIG, evidensbaserad inlärningsmotor (INGEN fejk-AI, INGEN automatisk handel). (1) Server-side utfallsjournaloutcome_journal.json (INGEN webbläsarlagring): varje signal/larm från scanmotorn loggas med id, tidsstämpel, ticker, händelsetyp/eventBase, board-zon, severity, källa, modelVersion, datakvalitet, decisionSafe, kurs vid signal (priceSekAtSignal), qty, värde, status (open/closed) och checkpoints 1d/1w/1m/3m. Det realiserade utfallet följs över tid: checkpoints jämför kursen vid signalen mot senare FAKTISK priceSek från samma build() – inga påhittade historiska kurser; saknas data markeras checkpoint pending eller insufficient. Klassning hit/miss/neutral med ±2% neutralband (R22/R28-31 upp=hit, R32/SELL ned=hit, DATA neutral). Journal capad till senaste 1000. (2) Lärandemetrics: träffsäkerhet per signaltyp och board-zon, snittavkastning, antal falska positiva + inaktuell-data-signaler, täckningsetiketter (för lite data / tidig evidens / meningsfullt urval) – inga starka slutsatser av små urval. (3) Icke-bindande 'Lärande rekommendationer' – ENDAST förslag, ändrar ALDRIG köp/säljregler automatiskt utan ditt godkännande. (4) API i sidecar:GET /api/learning/status, GET /api/learning/outcomes, POST /api/learning/evaluate-now, POST /api/learning/reset (avstängt som standard – kräver env CHESS_LEARNING_ALLOW_RESET=1 + {confirm:true}, ingen UI-knapp). (5) UI-flik 'Lärande / Precision' med totalt loggade/öppna/utvärderade, pending checkpoints, bästa/sämsta signaltyp, falska positiva, datatäckning, träffsäkerhet per typ, rekommendationer och tabell över senaste signaler + 'Utvärdera nu'-knapp. Tydlig not: "Motorn lär sig av utfall men ändrar inte köp/säljregler automatiskt utan ditt godkännande." (6) Vid varje scan registreras nya larm (dedup) och förfallna checkpoints utvärderas – kraschar ALDRIG scanmotorn. Ny cache-token chess43-13-learning-outcome-engine. Bakgrund 43.12.1 (Render Isolation Fix): Defensiv rendering-isolering för iPad/Safari som förhindrar att främmande sid-/flik-innehåll (bilder/text från andra sidor, WebKit-kompositlager-buggar) lyser igenom CHESS-ytan: (1) solid ogenomskinlig bakgrund tvingas på html/body/app-skal (.wrap) och alla innehållspaneler (.view); (2) egna stacking contexts via isolation:isolate + position:relative på body/app/paneler/modal; (3) contain:paint paint-containment på panelerna; (4) iOS-defensiv transform:translateZ(0), -webkit-backface-visibility:hidden, background-attachment:scroll, overscroll-behavior:none, overflow-x:hidden; inga element med negativ z-index, ingen oavsiktlig backdrop/filter/mix-blend. Diagnostik "Render isolation: aktiv" visas i System. Ingen layout-/logikändring – alla 43.12-funktioner bevaras oförändrat; ny cache-token chess43-12-1-render-isolation-fix tvingar färsk hämtning. Bakgrund 43.12 (Scheduled Scan Engine): server-side schemalagd scanning + larmutvärdering ovanpå 43.11 PWA HTTPS Foundation (samma board-first design/data). Nytt i 43.12 (Scheduled Scan Engine): (1) En Scanmotor i den installer-skrivna sidecar:n (:8091) som scannar portföljen på ett konfigurerbart intervall (env CHESS_SCAN_INTERVAL_MS, standard 300000 ms = 5 min, golv 30000 ms) – körs även när webbläsaren är stängd och även utanför handelstid (marknadssession etiketteras). Återanvänder samma /api/live-portfolio-logik och härleder larm ur faktisk data – inga påhittade marknadshändelser/kurser. Tillstånd sparas i scan_state.json och historik i scan_history.json (senaste 200), ingen webbläsarlagring. (2) Regelutvärdering per scan: R22 köpsignal, R28-31 extra bevakning, R32 inflection/köpstopp/exp. fas, sälj/risk vid kraftig nedgång samt datahälsa (fallback/inaktuell/timeout/FX-golv/securities-guard) – skrivs till samma alert_journal.json med befintlig dedup/anti-spam. (3) API:GET /api/scan/status, POST /api/scan/run-now, POST /api/scan/pause, POST /api/scan/resume, GET /api/scan/history. (4) UI 'Server-scanning (Scanmotor)' i Larm + System (status På/Pausad/Fel, senaste/nästa scan, intervall, antal scans, varaktighet, resultat, nya larm, marknadssession), knappen Kör scan nu (uppdaterar Larmcentralen), Pausa/Återuppta samt header-badge Scan: aktiv/pausad/fel. (5) Robusthet: motorn startar med sidecar-omstart, kraschar inte vid datafel (skriver timeout/fallback-status + larm), dubbelintervall-skydd. Motorn scannar och larmar, men all handel sker manuellt i Avanza – ingen automatisk handel. Alla 43.11-funktioner bevaras oförändrat. Nytt i 43.11 (PWA & HTTPS Foundation): (1) manifest.json (Schack Matt 22.32, standalone, theme/background #0b0d0f, start_url-token chess43-11-pwa-https-foundation, ikon icon.svg); (2) service-worker.js med säker install/activate/fetch – nätverk-först för navigeringar, cachar ALDRIG live-API (/api/, manual-overrides, :8091), endast statiskt skal cache-först; (3) SW registreras endast i secure context/localhost – över HTTP-IP visas att PWA/SW kräver HTTPS; (4) PWA & HTTPS-sektion (HTTPS-, SW-, notis- och installerad-status + guide + begränsning över http://165.22.16.114); (5) ärlig Notification-test-knapp (ingen falsk push); (6) egengenererad icon.svg (inga externa assets); (7) Caddy HTTPS-mall för chess.skuruborg.se → 127.0.0.1:8090 + DNS-checklista; (8) README/NOTES med domän/HTTPS-steg. Alla 43.10.2-funktioner bevaras oförändrat. Nytt i 43.10.2 (Server Alerts / Push Ready): En server-driven Larmcentral där larm härleds ur samma befintliga regler (watchlist R22/R28–31/R32, datahälsa, rutrörelser) – inga påhittade marknadshändelser – och sparas i en serverfil (alert_journal.json via den installer-skrivna sidecar:n, ingen webbläsarlagring) så larm kan ses i efterhand. Sidecar-API: GET /api/alerts, POST /api/alerts (ingest), POST /api/alerts/ack (kvittera), GET /api/alerts/status. Larm-vyn får oläst-räknare, allvarlighetsgrad (Hög/Bevakning/Info), filter och Kvittera/Kvittera alla; header-badge "Larm: N olästa". Anti-spam: samma ticker+händelse dubbleras inte (klient-dedup per session + server-side dedup med 6h cooldown). Push-beredskap (ärlig): äkta webbläsar-push/Notification kräver secure context (HTTPS/domän) + i praktiken installerad PWA; över plain HTTP visas "Push redo: kräver HTTPS/domän/PWA" och appen faller tillbaka på ljud + visuella larm + Larmcentral – aldrig en falsk "Push aktiv". Notification API testas endast i secure context och bryter aldrig appen om det saknas. Ljudlarm + alla 43.10.1-funktioner bevaras. Nytt i 43.10.1 (Audio Alerts): Ljudlarm i Larm/larm-systemet med Web Audio API-genererade toner (INGA externa mp3-/ljudfiler). Fem händelseklasser med olika ljud: (1) Köpsignal / R22-trigger – ljus dubbel-pling, (2) Extra bevakning / R28–31 – mjukare tvåtons-ping, (3) R32 inflection / köpstopp / exp. fas – skarpare varningston, (4) Säljtrigger / risk – lägre varningston, (5) Datahälsa / fallback / timeout – kort dämpad pip. Synlig "Aktivera ljudlarm"-toggle + "Testa ljud" per händelsetyp i Larm-vyn; ljud startar ENDAST efter användargest (mobil Safari/Chrome-policy), ingen autoplay. Debounce/cooldown: samma ticker+händelse spelas en gång per session + global cooldown mellan ljud. Visuella larm visas alltid, även med ljud av. Statusindikator "Ljudlarm av/på" i header och Larm-vyn. Allt i 43.10 bevaras. Nytt i 43.10: (1) Köpplan 2.0 – varje aktivt innehav delas i Akut åtgärd / Risknotering / Nästa steg; vanlig övervikt är en risknotering (inte omedelbar säljinstruktion), "Trimma nu" endast vid materiell övervikt/säljtrigger; sammanfattningsräknare för Akut köp/Fyll på, Risknoteringar, Trimma nu, Köpstopp och Vänta/Behåll. (2) Beslutskort per bolag – klick på bricka/rad visar overlay med ticker/namn, aktiv vs extern, ägt antal (om aktivt), aktuellt värde, kurs, datakvalitet, senaste synk, ruta, fas, trigger, nästa checkpoint, köp-/sälj-/manuell handelsregel, rekommenderat viktintervall, faktisk vikt (endast aktiva) och tydlig "manuell handel i Avanza"-not. (3) Datahälso-gating – Live/Fallback/Senast känd styr beslutssäkerhet; tydlig kvalitetsetikett Beslutssäker / Bevakning endast / Vänta på färsk kurs på beslutskort och i Köpplan/Larm; timeout/fallback genererar ALDRIG ny köpsignal utom vid färsk manuell override. (4) Screener-separation – externa kandidater märks tydligt "Ej ägd kandidat", "Extern bevakning", "Ingen faktisk vikt/allokering" och får aldrig faktisk vikt/gap som om de ägdes. (5) Portföljvärde-logg – lättviktig daglig värdehistorik (serverfil value_history.json via sidecar, i-minnet runtime-spegel, ingen webbläsarlagring) som visar Dagens värde / Dag / Vecka / Månad / År, eller "Historik byggs upp" tills tillräckligt med mätpunkter finns. Nytt i 43.9.1 – Force Securities Baseline (smal hotfix): Tvingar korrekt Avanza-baslinje för värdepapper och total. 43.9 visade rätt kassa (17 627) men kunde visa fel total (~191k) och värdepapper (~173k) när en underräknad live-payload (trasig FX / delvisa quotes) tilläts skriva headline-KPI:erna. Fix: (1) sanity-guard höjd till 85% – om summerade live-värdepapper hamnar under 85% av Avanza-referensen (274 107) trots att alla 11 innehav räknats, faller headline-KPI:erna tillbaka till referensen (värdepapper 274 107, total 291 735) och markeras ärligt som senast känd/fallback (ej live), med en datakvalitets-varning i Live Integrity; (2) sidecar-FX-golv (orimligt låg USD/SEK <5 → 10,5-fallback) + securitiesRefSek/securitiesGuard-flagga så en underräknad payload självmarkeras; (3) uttrycklig användar-override (securitiesOverride) passerar guarden. Baslinjer: total 291 735 (291 734,82), värdepapper 274 107 (274 107,43), kassa 17 627 (17 627,39), basvärde/YTD-bas 302 668, YTD ≈ −3,61% / −10 933 SEK. Inga påhittade kurser. Allt i 43.9 bevaras – Watchlist & Screener Layer: ett bevaknings-/screeningslager utökar appen bortom de aktiva innehaven och spårar/rankar EXTERNA kandidater till schackbrädet i tre grupper – pre-22 scout-kandidater (prickade, på väg mot R22), gula 22–31-kandidater (ackumulation/intensiv bevakning) och 32–35 inflection-kandidater (kvalar endast om identifierade före/vid R36 och fortfarande underprissatta). Varje kandidat bär ticker, namn, marknad/valuta, föreslagen ruta, tema (AI/defense/dual-use/autonomy/space/quantum/cyber/medtech), datakvalitet (samma fem statuslägen som Data Integrity Layer), signalScore/inflectionScore/dualUseScore (0–100), kort svensk motivering, nästa trigger och en härledd åtgärd (Bevaka/Köp vid R22/Fyll på stegvis/Avvakta/Datakontroll/Köpstopp). En deterministisk screener räknar candidateRank (0–100 = 0,30·signal + 0,25·inflection + 0,20·dual-use + 0,15·rutpoäng + 0,10·tema + underprissatt-/tidig-inflection-bonus − datakvalitets-straff) och rutregler styr fasen (<R22 scout, R22 grön köptrigger, R23–31 gul, R32 röd fasövergång/köpstopp, R33–35 inflection endast om underprissatt + tidigt identifierad, >R36 ej ny tidig kandidat). Vyn Signalranking / Screener visar summerings-KPI:er (scout, köpzon, gula, inflection, datakvalitets-varningar) + tabellerna Toppkandidater, Mot ruta 22, Gula rutor 22–31 och Inflection 32–35. På brädet visas topp-N kandidater som mindre prickade ghost-chips (visuellt åtskilda från aktiva innehav – watchlist, ej portfölj), separata watchlist-larm (R22-korsning, R28–31, R32, tappad datakvalitet) ligger åtskilda från portföljlarmen, och System-sidan har en Watchlist & Screener-sammanfattning. Kandidatuniversumet är ett kurerat scaffold – ingen finansiell rådgivning, ingen automatisk handel, inga påhittade kurser. Källa/dokumentation: src/watchlist-screener/ (candidate-universe.json, screener-engine.js, README.md). De 11 aktiva innehaven ingår INTE i kandidatuniversumet. Allt från 43.8 bevaras – Data Integrity Layer: en deterministisk status-monitor spårar datakällans hälsa per bolag i fem svenska statuslägen – Live (färsk giltig leverantörskurs ≤2 min, grön), Fördröjd (giltig men äldre ≤15 min, gul), Senast känd (live saknas men cachead senast-känd-kurs finns, blå), Fallback (endast Avanza-referens/manuell, amber) och Timeout (ingen användbar kurs/kursfel, röd). Varje health-objekt bär status, källetikett, tidsstämplar för senaste kurs-/Avanza-sync, ålder (sek/min), severity (ok/warn/stale/error), beslutssäkerhet och en kort svensk förklaring. Varje bolagsbricka på schackbrädet får en liten datakvalitets-prick i statusfärgen och info-modalen visar status + senaste synk-timestamp, så det alltid syns om beslutsunderlaget är färskt. Portföljens datastatus-kolumn, ett nytt Datahälso-larm (Timeout/fördröjd-stale/fallback-only utan att bryta pris-/rutlarmen), Köpplanens beslutssäkerhets-varning ("kräver datakontroll", raden tas aldrig bort) och en Data Integrity-sammanfattning på System-sidan (live/användbara, fallback, timeout, senaste Avanza-/kurssync + statustabell för alla 11 innehav) drivs alla av samma health-objekt. SMTE och andra svaga datakällor tappas ALDRIG – de degraderas till Senast känd → Fallback men släpps aldrig ur portföljen. Inga påhittade kurser. Bevarat från 43.7.2: hela appen synkad mot Avanza-skärmdump efter köp (2026-06-23). KTOS uppdaterad till 53 st (snittköp 56,70 USD) och PL till 66 st (snittköp 29,93 USD); övriga innehav uppdaterade med nya kurser/värden. Kassan är pinnad till Avanza-baslinjen 17 627 SEK i frontend och kan aldrig skrivas över av en inaktuell live-/sidecar-payload (t.ex. en gammal felaktig kassasiffra). Portföljtotalen rekonstrueras som live-värdepapper + pinnad kassa (17 627), så kassa/total/"I år"/konto-uppdelning startar alltid från korrekt baslinje (total 291 735 / vp 274 107 / kassa 17 627 / basvärde 302 668). Sidecar (CASH_SEK=17 627, START_TOTAL=291 735) skrivs om och startas om, ev. föräldralös :8091-process dödas, och serverade *.json/*.txt-datafiler med en gammal kassasiffra saneras till rätt baslinje. All 43.7/43.7.1-funktion/design bevaras. Köpplan: Köpplan – Risk & Execution Layer (Startplan ombyggd till Köpplan). Räknar DYNAMISKT ur de aktiva innehaven (ACTIVE_TICKERS ur HOLD) – ingen separat hårdkodad lista. Per innehav: aktuell vikt (värde/total), målvikt ur modell/ruta/signal med viktstak (kärna/sen-validerade max ~10–12%, spets/deep-tech mål/max ~3–7%), allokeringsgap i SEK, riskklass och rekommendation (Köp nu / Fyll på stegvis / Bevaka / Avvakta / Köpstopp / Trimma / Tidigt alpha-case). Synliga rutregler: R22 köptrigger; R28–31 intensifierad bevakning (stegvis köp endast vid hög signal + undervikt); R32 rött larm/fasövergång – inget nytt aggressivt köp, "sen entré/köpstopp" om ej ägt; R33–36 ny investering endast om identifierad före/vid R36 och underprissatt, annars försiktighet (ägt kan hållas/trimmas); R61–64 endgame/compounder utan autoköp – utvärdera värdering/övervikt; Pre-22 extraordinär trigger → liten startposition. Praktisk kassautplacering av kassan (17 627 SEK): bevarad buffert (30%), föreslagen nästa köpordning med SEK-belopp, maxorder per position, stegvis köp – ingen autoorder. Toppsummering: portföljvärde live/fallback, kassa, föreslås placeras idag, buffert, antal köp/bevaka/trimma/stopp. SMTE och andra svaga datakällor tappas aldrig – Köpplanen återanvänder Larmens fallback-kedja (live → senast känt → Avanza-referens). Handlingsplan och Larm är intakta och fortsatt dynamiska. Bevarat från 43.6.0/43.6.1: portföljen synkad mot Avanza-skärmdump (2026-06-23), ett konto: Skuruborg Quantum med 11 innehav (AXON, QBTS, GAPW-B, KTOS, NBIS, PLTR, PL, RKLB, SMTE, SOUN, VOYG) + kassa 17 627 SEK. PLTR (Palantir, 20 st) syns på bräde (R27), info-modal och handlingsplan. KPI:erna visar Quantum-total 291 735 SEK (värdepapper 274 107 SEK, kassa 17 627 SEK). Avanza-basvärdet är omräknat till ~302 668 SEK (291 735 / (1−0,0361)) och "I år" räknas dynamiskt mot detta (referens ≈ −3,61% = −10 933 SEK). Terranet förblir helt borttaget – inget TERRNT-innehav, inget Terranet-konto, ingen Terranet-bräd-markör, ingen Terranet i aktiv sidecar-data. Statiska skärmdumpsvärden används som referens/fallback (visas direkt), live-rörelse uppdaterar när marknadsdata finns. Layout/design är oförändrad (Board First / Full Board): legend under brädet, kompakta KPI-rutor, hela brädet synligt, "Schack Matt 22.32" och "Skuruborg Quantum" på titelraden. Bevarade funktioner: Handlingsplan (köpzon/extra bevakning/köpstopp/övervikt/säljbevaka/scout, härlett ur ROUTE_RULES, conviction, recoWeight, deviation – inga påhittade fundamenta), Dynamic YTD KPI ("I år" = aktuell total − Avanza-basvärde 302 668 SEK, i SEK och procent), Live Refresh & Data Freshness (Senast hämtad/ändrad, auto-refresh, knapptillstånd, per-innehav färskhets-/källbadge), Signaljournal + regelverk per ruta (R1-21 Watch/Scout, R22 Köpzon, R23-27 Ackumulation, R28-31 Extra bevakning, R32 Köpstopp/Faslarm, R33-36 Launch/Owner, R37-60 Äg/Skala, R61-64 Compounder/Endgame), Allokeringsmotor + Avvikelse-mot-plan, daglig cockpit-summering och säljtriggers, manuell Avanza-override (manual_overrides.json via GET/POST /manual-overrides, markeras "Manuell Avanza-kurs", aldrig live), Nordic Quote Adapter (svenska tickers som SMTE.ST/GAPW-B.ST provas mot alias-stege .ST/.STO/B-varianter hos Yahoo Finance + Stooq med korrekt .st-mappning, aldrig felaktigt .us), larm/rutlarm, det sömlösa valnötsbrädet utan färgade kantlinjer. ÄRLIGHET: "Full live" visas ENDAST när alla 11 innehav har en riktig leverantörskurs; annars "Delvis live: X/11 kurser" med vilka tickers som blockerar och varför. Inga påhittade kurser – saknas en leverantörskurs används uttrycklig senast känd fallback och markeras som sådan. Beslutsstöd – ingen automatisk handel, inga personliga råd. Manuell handel i Avanza. Hard clean replace, ingen additiv patch, ingen gammal CHESS-kod.
Triggerlogik – Pre-22 Alpha Scout (SCOUT): En förtrigger, INTE en KÖP-signal. Syfte: fånga extraordinära händelser i ett bolag innan standard R22-entry, så en mycket liten pilotposition kan övervägas. Behörigt intervall: endast R12-R21 (R1-R11 är för tidigt; R22 är fortfarande vanlig KÖP). Villkor: minst 1 extraordinär trigger + minst 2 bekräftelser. Extraordinära triggers: Tier-1/OEM-avtal, regulatoriskt mandat, nyckelpatent/IP-genombrott, kliniskt/regulatoriskt milstolpe, försvars-/dual-use-validering, strategisk investerare, explosiv orderbok/SOP. Bekräftelser: insiderköp/starkt ledningsägande, 12+ mån finansieringsrunway, bruttomarginalpotential >60-70%, TAM-expansion, volymutbrott före överdriven prisrörelse, undervärdering relativt triggern, teknisk risk reducerad via prototyp/pilot/kundtest/tredjepartsvalidering. Positionsstorlek (riktlinje): R12-R17 max 0,5-1,0 % pilot · R18-R21 max 1,0-2,0 % · R22 kan skalas till 2-4 % · R33-R36 kan skalas större först efter inflektionskvalificering. Manuell handel – appen markerar/signalerar bara; du köper själv i Avanza.
Live API: samma-origin /api/live-portfolio, annars :8091/api/live-portfolio. Kurser är periodiska/publika (ej tick-för-tick). Leverantörer som försöks (i ordning): Yahoo Finance, därefter Stooq. Varje innehav kan prova flera symbolalias innan det räknas som saknat. Handel sker manuellt i Avanza. Inga API-nycklar, ingen automatisk handel.
PWA & HTTPS (43.11)
PWA-grund (43.11): Appen levereras nu med manifest.json, en defensiv service-worker.js (cachar endast statiskt skal, aldrig live-API-svar) och en självständig SVG-ikon (inga externa assets). Service Worker registreras endast i säker kontext (HTTPS/egen domän) eller på localhost – över http://165.22.16.114:8090 registreras den inte och statusen säger det ärligt. Äkta webbläsar-push/bakgrundsnotiser på iPhone/iPad kräver HTTPS/domän och att appen installeras som PWA (Lägg till på hemskärmen). Domän-/Caddy-steg finns i README/NOTES. Beslutsstöd – ingen automatisk handel; all handel sker manuellt i Avanza.
Läge–
HTTPS / säker kontext–
Service Worker–
SW registrerad–
Notis-API–
Notis-tillstånd–
Installerad som app–
Manifest–
Föreslagen domänchess.skuruborg.se
Installera på iPhone/iPad: öppna i Safari → Dela → Lägg till på hemskärmen. När appen servas över HTTPS/egen domän och är installerad blir bakgrundsnotiser möjliga. Tills dess gäller ljud + visuella larm + Larmcentral. chess.skuruborg.se är ett utbytbart exempel – byt mot din egen domän i Caddyfile och DNS.
Server-scanning (Scanmotor, 43.12)
Scanmotorn (43.12) körs server-side i sidecar:n (:8091) och scannar portföljen på ett konfigurerbart intervall (env CHESS_SCAN_INTERVAL_MS, standard 300000 ms = 5 min) – även när ingen webbläsare är öppen. Vid varje scan hämtas publika kurser (samma /api/live-portfolio-logik) och larm härleds ur faktisk data: R22/R28-31/R32 av faktisk dagsförändring per innehav, sälj/risk vid kraftig nedgång, samt datahälsa (fallback/inaktuell/timeout/FX-golv). Inga påhittade marknadshändelser, inga påhittade kurser. Larmen skrivs till samma alert_journal.json (samma dedup/anti-spam). Tillstånd sparas i scan_state.json och historik i scan_history.json (senaste 200). API: GET /api/scan/status, POST /api/scan/run-now, POST /api/scan/pause, POST /api/scan/resume, GET /api/scan/history. Motorn scannar och larmar, men all handel sker manuellt i Avanza – ingen automatisk handel.
Status–
Senaste scan–
Nästa scan–
Intervall–
Antal scans–
Senaste varaktighet–
Senaste resultat–
Nya larm senast–
Kurser senast–
Marknadssession–
Motor–
Dataintegritet / Live Integrity
Nordic Quote Adapter är aktiv: nordiska/svenska innehav (SMTE.ST, GAPW-B.ST) provas mot en alias-stege (.ST/.STO/B-aktievarianter) hos Yahoo Finance + Stooq, med korrekt .st-mappning (aldrig felaktigt .us). Status hämtas vid varje uppdatering av livevärdet. Full live visas ENDAST när alla innehav har en riktig leverantörskurs. Annars visas "Delvis live: X/Y kurser" tillsammans med exakt vilka tickers som blockerar full live och varför (ingen leverantörskurs / senast känd fallback / inaktuell fallback). Om sidecar inte nås visas fallback-läge och appen förblir användbar. Inga påhittade kurser – saknas en leverantörskurs används uttrycklig senast känd fallback och markeras som sådan.
Live-status–
Nordic adapter–
Källa–
FX USD/SEK–
Live-kurser–
Fallback/statiska rader–
Senast uppdaterad–
Saknar live-kurs (skäl)–
Blockerar full live–
Manuell Avanza-kurs–
Data Freshness: "Senast hämtad" är tidpunkten för den senaste lyckade hämtningen; "Senast ändrad" är när ett värde faktiskt rörde sig. Om kursen inte rört sig räknas "Oförändrade hämtningar i rad" upp – publika kurser är periodiska/cacheade och kan returnera identiska värden mellan hämtningar. Detta är inte tick-för-tick.
Senast hämtad (fetchedAt)–
Senast ändrad (changedAt)–
Oförändrade hämtningar i rad–
Ändrade tickers (senaste)–
Data Integrity Layer (datakällans hälsa)
Status-monitor spårar datakällans hälsa per innehav: Live (färsk leverantörskurs), Fördröjd (giltig men ej färsk), Senast känd (cachead senast-känd-kurs), Fallback (endast Avanza-referens/manuell) och Timeout (ingen användbar kurs/kursfel). Varje bolagsbricka på brädet visar en datakvalitets-prick och tidsstämpel för senaste synk mot Avanza-API:et. Deterministiskt, inga påhittade kurser. SMTE m.fl. degraderas till Senast känd/Fallback men tappas aldrig. Källkod: src/data-integrity/status-monitor.js (speglad inline).
Beslutssäkra / totalt–
Live–
Fördröjd–
Senast känd–
Fallback–
Timeout–
Senaste kurssync–
Senaste Avanza-sync–
Beslutsunderlag färskt?–
Statustabell beräknas vid render.
Watchlist & Screener Layer (43.9)
Watchlist/Screener-sammanfattning. Bevaknings-/screeningslager för EXTERNA kandidater till schackbrädet (pre-22 scout, gula 22–31, inflection 32–35) – ej aktiva innehav, ingen finansiell rådgivning, inga påhittade kurser. Källkod/dokumentation: src/watchlist-screener/screener-engine.js + candidate-universe.json (speglad inline). Kandidatfält: ticker, namn, marknad/valuta, ruta, tema, datakvalitet (Live/Fördröjd/Senast känd/Fallback/Timeout), signalScore/inflectionScore/dualUseScore, underpriced, reason, nextTrigger; screenern härleder status, routeScore, candidateRank (0–100) och åtgärd.
Kandidater totalt–
Mot ruta 22 (scout)–
Köpzon (R22)–
Gula rutor (R22–31)–
Inflection (R32–35)–
Datakvalitets-varningar–
Version/token–
Manuell kurs / Avanza override
Manuell Avanza-kurs (Override – ej live): Ange en kurs i SEK för ett innehav som de publika leverantörerna inte kan kursnotera (t.ex. SMTE.ST). Kursen kompletterar värderingen men markeras tydligt som "Manuell Avanza-kurs" och räknas ALDRIG som riktig live-kurs – statusen förblir "Delvis live/Manuell". Sparas server-side i sidecar (manual_overrides.json) med localStorage som reserv.