⚙️ Maskinrummet — sådan besluttes en WSB-handel

Hver handelscyklus bygger serveren én stor prompt af blokkene herunder og sender den til Claude. Modellen svarer med JSON-ordrer — som derefter skal forbi serverens guards, der håndhæver reglerne uanset hvor overbevist modellen er. Siden viser den seneste faktiske prompt (wsb, 2026-08-04 13:15, claude-sonnet-5) skilt ad i sine byggeklodser. Rå prompts og svar ligger under Prompts.

1 · Flowet — fra feeds til handel

  1. Feeds ind Mac Mini scraper Reddit (20. min) og Truth Social (3. min); lokal qwen-LLM tolker post-kroppene; 11 eksterne kilder screenes; priser, makro og broker-data cachelagres i databasen.
  2. Prompten bygges Serveren samler blokkene på denne side til ÉN user-message + system-prompten med de 18 regler. Alle blokke er fail-soft: mangler data, udelades blokken frem for at vælte cyklussen.
  3. Modellen beslutter Claude (Sonnet på wsb/saxomoon, Opus på saxovegas — bevidst A/B) svarer med ren JSON: reasoning, trades[] med conviction/horizon/stop_loss_pct, stop_updates[] og hold_reasoning.
  4. Guards efterprøver HVER ordre skal forbi serverens deterministiske guards — uanset hvor overbevist modellen er. Afviste legs stopper ikke resten af kurven (basket-atomicitet), og afvisningen + årsag vises for modellen i næste cyklus.
  5. Eksekvering Paper-tieren bogfører i SQLite-ledgeren; live-tiers sender rigtige ordrer til Saxo med obligatorisk broker-stop på hvert køb. Fills reconcileres (kurs, gebyr, slippage) tilbage i ledgeren.
  6. Feedback-loop Udfald bliver til næste prompts hukommelses-blokke: FACIT-blokkene, STOPS FIRED, PREVIOUS DECISIONS med realized PnL. Modellen lærer af sin egen historik — cyklus for cyklus.

2 · System-prompten — personaen og de 18 regler

Den faste "forfatning" modellen altid læser først. Ændres kun ved kodeændring.

Personaen

Modellen ER en WSB-trader: sentiment over fundamentals, følg flokken når signalet er ægte, sid i cash når subredditten er stille. Kører 4× per handelsdag (post-open, formiddag, midday, power hour).

Aktivitet & sizing (regel 1-9)

Trending-navne med cross-feed-støtte får konviktions-bump; vindere trimmes ALDRIG på +X% men beskyttes med stigende trailing-stop; minimum 3 aktier i billige navne (1-2 OK i dyre); glemte tabere cuttes medmindre cross-feed stadig siger BUY; ingen tvungen aktivitet; rotation SELL→BUY i samme cyklus er tilladt.

Stops (regel 10 + 13)

Obligatorisk stop-loss på hvert live-køb (modellen vælger 2-15%, serveren backstopper); VOLATILITY ANCHOR: initial stop ≈ 1,5× navnets typiske dagsudsving — ellers size ned. Trailing-ratchet er raise-only, og GAP-FLOOR forbyder at traile strammere end dagsudsvinget.

Kalibrering (regel 11-17)

Regime-tilt (rød NASDAQ → cash-bias), VIX/Fear&Greed som sizing-dial, FEED-FACIT-kalibrering mod egne resultater, tolket-signal-kvalificering (aldrig dobbelt-tælle Reddit), overnight-gap som retning+risiko, MIN-EDGE (forventet move skal dværge gebyret).

Disciplin (regel 18)

Navngiver rationalet selv en modvind for navnet man køber, SKAL den vejes (size ned eller skip). WSB-hype må kun citeres når navnet faktisk står i dagens blokke — ellers mærkes rationalet ærligt.

Vis hele system-prompten rå (1197 tegn)
You are the pre-open stop-review desk for a WSB-mandate portfolio.
It is ~15 minutes before the US open. You get each held position with its entry,
last close, current protective stop and pre-market move, plus the macro tape
(futures, VIX). Decide per position whether its stop should be TIGHTENED now,
before the open.

HARD RULES:
- RAISE-ONLY: you can only propose a TIGHTER stop (a smaller distance below the
  current price). The engine ignores anything looser — never propose it.
- stop_loss_pct means: percent below CURRENT price (allowed 2-15). The engine
  computes the level; you choose the distance.
- Respect the GAP-FLOOR idea: never propose a distance tighter than the name's
  normal daily swing — a stop inside the noise band is a donation.
- A position that gapped UP overnight and holds gains into the open is the
  classic ratchet case: lock in the move. A position gapping DOWN toward its
  stop needs NO action (the stop is doing its job) — do not chase it down.
- Only tickers from the input. Empty stop_updates is a fine answer.

Reply ONLY with JSON:
{"stop_updates": [{"ticker": "XXX", "stop_loss_pct": 6.0}],
 "assessment": "1-2 sentences on the book's pre-open posture"}

3 · User-beskeden — blokkene i seneste prompt

Grøn = med i seneste prompt (klik for det rå indhold). Grå = ikke aktiv i den cyklus — de fleste blokke er fail-soft og udelades når der ikke er data (fx ingen stops fyret, intet regnskab forude). I alt 585 tegn.

Dato · portefølje · session tilstand 585 tegn

Hvilken portefølje og hvilket tidsslot cyklussen kører i — modellen ved fx om det er post-open eller power hour.

PORTFOLIO: wsb — pre-open stop review

POSITIONS:
  CLSK: 20 shares, entry 14.68, close 14.65 | stop 13.21 (9.8% below close) | pre-market -1.1%
  FIG: 15 shares, entry 24.05, close 24.92 | stop 22.90 (8.1% below close) | pre-market -1.7%
  OKLO: 11 shares, entry 40.02, close 41.22 | stop 38.58 (6.4% below close) | pre-market +3.0%
  SPCE: 150 shares, entry 2.60, close 2.82 | stop 2.56 (9.3% below close) | pre-market +1.1%

MACRO TAPE:
  S&P-futures: 7652.2 (+0.1% vs close)
  Nasdaq-futures: 29219.2 (+0.7% vs close)
  VIX: 15.6 (-1.7% vs close)

Return the stop_updates JSON now.
Porteføljestatus tilstand ikke aktiv i seneste cyklus

Kontant beholdning, hver position med indkøbspris, aktuel kurs og urealiseret PnL — modellens billede af hvad den ejer lige nu.

Strategi-parametre tilstand ikke aktiv i seneste cyklus

Cyklussens hårde tal: minimum handelsstørrelse (fee-gulvet + 8% headroom-sigtepunkt), max positionsstørrelse, fee-guard-ratio, trailing-stop-ladder og min-shares-regler. Single-sourced fra samme konstanter serveren håndhæver, så prompt og guards aldrig drifter.

Sub-tema-eksponering risiko ikke aktiv i seneste cyklus

Hvor koncentreret bogen er per tema (fx crypto_miners, ai_infra). Fire tickers i samme tema er ét bet, ikke fire — modellen skal sprede konviktionen.

Kurshistorik marked ikke aktiv i seneste cyklus

Sidste 10 handelsdages lukkekurser per ticker i universet — råmaterialet for momentum-læsning og volatilitets-ankeret på stops (regel #10/#13).

Overnight-gap marked ikke aktiv i seneste cyklus

Gårsdagens luk → nu, per navn: markedets destillerede dom over alt der er sket siden i går. Et beholdt navn der gapper ned er et risikoflag; et stort op-gap er chase-risiko (regel #16).

Værdihistorik tilstand ikke aktiv i seneste cyklus

Seneste 5 snapshots af porteføljens samlede værdi — er kurven op eller ned?

Stops der fyrede hukommelse ikke aktiv i seneste cyklus

Exits udført af beskyttelses-stops siden sidste cyklusser — med realized DKK og instruks om post-mortem: wick-out (pris tilbage over stoppen = for stram trail) eller ægte brud. Uden denne blok vidste modellen bogstaveligt ikke at dens stop var fyret.

Daglig tabs-breaker risiko ikke aktiv i seneste cyklus

Vises kun når dagens realiserede tab har udløst serverens breaker: nye KØB afvises resten af sessionen — så modellen ikke spilder basket-legs på dem.

Ferske tabs-exits hukommelse ikke aktiv i seneste cyklus

Navne solgt med tab inden for re-entry-cooldown-vinduet (3 dage). Gen-køb kræver conviction ≥ 0.7 og — på gatede tiers — serverhåndhævet cross-feed-korroboration (B4).

Horisont-facit hukommelse ikke aktiv i seneste cyklus

Planlagt vs. faktisk holdetid på egne lukkede handler — lærer modellen dens egen horisont-bias (fx 'planlagt 1-2 uger → faktisk 4 dage').

Ticker-facit hukommelse ikke aktiv i seneste cyklus

30 dages lukkede round-trips per navn, vindere OG tabere ('CLSK: 2 exits, -618 DKK'). Den lange hukommelse bag cooldown-vinduet — et navn man gentagne gange har tabt på kræver en ændret thesis før gen-køb.

Fee-træk hukommelse ikke aktiv i seneste cyklus

14 dages fee-regning som eksplicit tal: hvor stor andel af omsætningen æder gebyrerne, og hvad en rundtur skal slå for at gå i nul. Fees er ellers bagt ind i PnL og usynlige.

Exit-override risiko ikke aktiv i seneste cyklus

Per-tier tilsidesættelse af 'cut det glemte'-reglen: på tiers hvor de frivillige panik-cuts historisk var rene tabere, udskydes cuttet til den obligatoriske stop.

Korroborationskrav risiko ikke aktiv i seneste cyklus

Vises på tiers hvor serveren kræver uafhængige cross-feed BUY-votes bag et køb — så modellen kender reglen i stedet for at opdage den via afvisninger.

Feed-facit hukommelse ikke aktiv i seneste cyklus

Win-rate og gennemsnitlig realized PnL per signal-kilde over 30 dage — modellens empiriske track record per feed. Svage feeds (⚠ SVAG) kræver ekstra korroboration; stærke (✓ STÆRK) berettiger normal sizing (regel #14).

Tolknings-facit hukommelse ikke aktiv i seneste cyklus

Hit-raten på den lokale LLM-tolknings egne reads: forudsagde dens bullish/bearish-læsninger den efterfølgende kursbevægelse? Kalibrerer hvor meget regel #15-signalet skal vægtes.

Tidligere beslutninger hukommelse ikke aktiv i seneste cyklus

Seneste cyklussers beslutninger med UDFALD: hver handel med kurs dengang → nu, realized DKK på salg, '(position siden lukket)'-markering, fill-slippage og AFVISTE ordrer med årsag — så modellen ikke genforeslår det guards bliver ved at afvise.

Earnings-radar marked ikke aktiv i seneste cyklus

Navne med regnskab inden for 7 dage — retningsneutral risiko-timing (volatilitets-event forude).

Handelsunivers tilstand ikke aktiv i seneste cyklus

Den lukkede liste af tickers modellen overhovedet MÅ handle. Alt udenfor afvises af serveren uanset begrundelse.

Fee-optimal sizing tilstand ikke aktiv i seneste cyklus

Konkrete regneeksempler på hvor store ordrer skal være før gebyret er ubetydeligt.

Broker-priser marked ikke aktiv i seneste cyklus

Saxos bid/ask/last mod yfinance — afslører spread og stale kurser før en live-ordre sendes.

Live-positioner & stops risiko ikke aktiv i seneste cyklus

Hver live-position med entry, aktuel kurs, PnL%, den hvilende broker-stop under den — og 'avg dagsmove ±X%' (GAP-FLOOR-målestokken: trail aldrig strammere end navnets normale dagsudsving). Herfra styrer modellen stop-ratchet via stop_updates (raise-only).

Makro-baggrund marked ikke aktiv i seneste cyklus

Dollar, renter, VIX og Fear & Greed fra FRED m.fl. — sizing-dial, ikke handelssignal (regel #12).

Markedsregime marked ikke aktiv i seneste cyklus

Dagens NASDAQ/S&P-retning. WSB-navne er høj-beta og forstærker tapen: rød dag → højere bar og mindre size; grøn dag → læn ind (regel #11).

Cross-feed screening signaler ikke aktiv i seneste cyklus

11 uafhængige eksterne kilder (short interest, analytikere, EDGAR-insiders, Polymarket, Truth Social, teknisk, makro…) stemmer BUY/SELL/HOLD per ticker. 3+ enige feeds er stærkere end noget enkelt signal — og reglerne kræver ægte UAFHÆNGIG bekræftelse, ikke Reddit i tre forklædninger.

WSB hot posts signaler ikke aktiv i seneste cyklus

De 25 hotteste posts lige nu (titel, upvotes, kommentarer) — råstoffet for vibe-læsningen.

Trending tickers signaler ikke aktiv i seneste cyklus

Tickers udtrukket af post-titlerne med mention-tal + novelty/recurrence-tags (NEW/RISING/SPIKE-CHRONIC…): er navnet friskt, accelererende eller et evigt-trending navn hvor flokken allerede er inde (reversal-risiko)?

Mention-leaders (DB) signaler ikke aktiv i seneste cyklus

Top-5 i-univers navne efter dagens samlede DB-mentions på tværs af ALLE feeds — bredere end post-titlerne. Eksplicit markeret som SAMME kilde som WSB-hypen: må aldrig stackes som ekstra bekræftelse.

Kommentar-flow + puls signaler ikke aktiv i seneste cyklus

Megathread-kommentarerne (Daily Discussion m.fl. — 5-15k kommentarer/dag som post-listen aldrig viser): mekanisk optælling af omtalte tickers (cashtags + kendte symboler) plus PULS — qwen's samlede læsning af samtalen: bull-%, stemning, hvilke navne samtalen HANDLER om (med stance) og en gist. Paper-først: live-tiers ser PULS-linjerne først når wsb_comment_pulse_live_enabled flippes.

Tolket WSB-signal signaler ikke aktiv i seneste cyklus

Den lokale LLM (qwen på Mac Mini) har LÆST post-kroppene: net-sentiment med ironi vendt og loss-porn nedvægtet, konviktion, bull/bear-split, 'katalysator c/n' (posts med konkret kommende katalysator) og 'pos:' (forfatternes egne positioner — skin in the game). Kvalificerer mention-tallene; må primært sænke konviktion (regel #15).

4 · Server-guards — det modellen IKKE bestemmer

Deterministiske regler i serveren der efterprøver hver ordre. Tallene her læses live fra samme konstanter som guards'ene håndhæver — de kan ikke drifte fra virkeligheden.

Fee-guard potus: ~$10, saxomoon: ~$100, saxovegas: ~$200

Afviser ordrer hvor gebyret æder for stor andel af handlen — små ordrer er matematisk urentable. Fuld-exit-salg er undtaget.

Max position saxomoon: 35%, saxovegas: 30%, wsb: 25%

Hård grænse for hvor stor andel af porteføljen én position må udgøre — oversized køb afvises.

Re-entry cooldown 3 dage

Gen-køb af et navn solgt med tab kræver conviction ≥ 0.7 — og på gatede tiers uafhængig cross-feed-bekræftelse (B4).

Obligatorisk stop 2–15% (server-backstop)

Hvert live-køb SKAL have en broker-stop. Glemmer modellen den, sætter serveren en default — en live-position går aldrig ind ubeskyttet.

Prisbånd ±3% (kun BUY)

Et live-køb afvises hvis markedet er løbet mere end båndet fra beslutningskursen — beskytter mod stale kurser.

Daglig tabs-breaker -8% af porteføljen

Overskrider dagens realiserede TAB grænsen, afvises alle nye køb resten af dagen. Salg og stops rammes aldrig — nedrisikering er altid mulig.

Cross-feed-votes ≥2 ved re-entry/gates

Serverens uafhængige feed-optælling — et signal modellen ikke kan forfalske med selvrapporteret konviktion.

Univers-gate kun TRADEABLE UNIVERSE

Ordrer uden for sessionens univers afvises uanset begrundelse — en hallucineret ticker kan aldrig handles.

5 · Dagens datastrøm — hvad der hentes ind

Volumen i det seneste døgn, talt direkte i databasen. Datalag: SQLite er ledger og source-of-truth · TimescaleDB (Postgres) spejler til kurver og analytics — status: forbundet ✓.

Ticker-mentions optalt per kilde

KildeI dag (indtil nu)I går (hele døgnet)
Truth Social0106
reddit:wsb:comments8077
r/wallstreetbets (titler)1032
r/gold56
WSB post-tekster (qwen-læste kroppe)75
reddit:options04
r/investing32
reddit:stocks31
r/bonds01

Aktivitet seneste 24 timer

WSB-posts tolket af qwen (Mac Mini) 31

Hver post læses i sin helhed: sentiment, ironi, loss-porn, katalysator, forfatter-position.

Truth Social-posts modtaget 36

Polles hvert 3. minut fra 4 konti; kun nye posts gemmes.

AI-kald (Anthropic) 32

Handelscyklusser + skrivere (Vagtchefen, avisen, video-prompts).

Output-tokens fra modellen 28.986

Samlet svar-volumen seneste døgn.

Prompts bygget (handel) 26

Én per portefølje-cyklus — hver er samlingen af blokkene ovenfor.

Feed-sundhed

benchmark claude edgar fedreg fng fred ollama polymarket polymarket_review premarket premarket_stops reddit saxo_history saxo_infoprices truth wsb wsb_interpret wsb_update yahoo yf_fundamentals

grøn = frisk · gul = fejler lige nu · grå = inaktiv (>48 t siden succes — typisk pensioneret probe)