Executive Summary
GeoScore is the second module of ZenTrader's modular research programme, alongside the Cognitive Memory Architecture (CMA). Where CMA asks how an agent's memory can be temporally valid and evidence-governed, GeoScore asks a narrower, sharper question: can a large language model, used strictly as a perception layer that extracts structured, evidence-quoted facts from news and social events, feed a deterministic scoring formula that produces a calibrated, decayed, directional signal for asset price reactions — measured honestly, with no shortcut around a real prediction problem?
This dossier reports what is verified today, including results that are inconclusive. GeoScore has been in daily, continued development since an early phase of this research programme; the numbers below are a snapshot, not a final result.
1. Purpose and Status of This Document
| Label | Meaning |
| Implemented | Verified directly against source code, the golden-set evaluation, and the live production database. |
| Partial | A working foundation exists; complete validation is not yet possible (usually: sample too small). |
| Open question | Actively measured, genuinely undecided as of this writing. |
All figures in this dossier were checked directly against trading/geoscore/, the git history of golden_events.json/prompt.py/engine.py, and the production geoscore_* tables — not copied from an earlier summary.
2. The Research Problem
Research problem. Can structured, evidence-quoted LLM extraction of geopolitical, macroeconomic, regulatory, corporate, and social events, scored by a deterministic and fully auditable formula, produce a directional market-reaction signal that is measurably better calibrated than (a) an unstructured LLM point-prediction and (b) a simple keyword/sentiment baseline — while keeping every scoring step traceable to a verbatim source quote?
This is deliberately a narrower and more falsifiable question than "can an LLM predict markets." The LLM never does arithmetic and never outputs a price target; it only classifies. A deterministic, unit-tested engine computes the number. This mirrors CMA's invariant that agents propose, deterministic services commit — GeoScore is that principle applied to qualitative narrative interpretation specifically.
3. Current Implementation, Verified Against Code, Golden Set, and Database
The classification prompt (trading/geoscore/prompt.py) forces a structured JSON output: event class, per-asset directional factor scores across six factors (geo, macro, regulatory, direct, narrative, flows), novelty, probability, and confidence — and every non-zero factor requires a verbatim supporting quote from the source text, so an unfounded score cannot silently reach the database.
The deterministic engine (trading/geoscore/engine.py) is fully auditable, five independent multiplicative terms:
AIS = raw_score(active factors, asset-class weights) × confidence × source_reliability × probability × novelty × decay(Δt, half-life)
source_reliability was documented as "learned, re-calibrated from outcome data" from day one, but for most of this programme's history nothing ever wrote to it: every source sat at its seeded 0.5 prior indefinitely, silently halving the signal of every scored event regardless of whether that source was actually any good. trading/geoscore/reliability.py closes that loop — a Beta-Binomial Bayesian credibility model (the same family used for IMDB-style weighted ratings) that re-estimates each source's reliability from its own captured outcome history via zentrader-geoscore-recalibrate.timer. This is not a paper design: the timer last ran successfully on 2026-08-17, and 40 of 59 geoscore_sources rows now carry a measured reliability value away from the 0.5 default — real recalibration, currently live, feeding directly back into the AIS formula above.
Golden-set calibration — verified from git history, not restated from memory
| Stage | Change | Result |
| v1 baseline (frozen) | Initial prompt + 10-event golden set | 0/10 |
| v2 calibration | Prompt redesign (trigger-channel rule, crypto asset-class mapping), any-of factor-sign matcher, widened bands | 7/10 |
| v3 (dossier round) | 5 real VIP/influencer events added; 4 of the new events' own expectations corrected against real model output (not the model) | 14/15, one remaining failure named as boundary noise |
v4 (dossier round; code geoscore-prompt-v3) | Adds TRACKED_ASSETS, a preference list so the model names a tracked instrument consistently (e.g. always "BRENT") instead of drifting across synonyms; paired with a new asset_aliases.py canonicalization pass | 13/15 under proper self-consistency (n=3 runs); the 2 remaining fails (musk-memecoin-post score range, exchange-hack factor signs) are pre-existing calibration misses unrelated to asset naming, present under v3 too |
Note: an earlier public summary of this history cited "0/10 → 8/10" — that figure does not appear anywhere in the commit history and has been corrected on the whitepaper to the verified 0/10 → 7/10 → 14/15 trajectory above. Note also: this table's own v1/v2/v3/v4 round numbering is independent of the code's PROMPT_VERSION string (tracked separately in the CMA model registry) — rounds v1-v3 above all shipped under code version geoscore-prompt-v2; only round v4 bumped the code string to geoscore-prompt-v3.
A fresh, live single-run re-run of the full golden set was executed for an earlier version of this dossier against the production model (qwen3.6:27b): 15/15 passed, including the previously-flaky musk-memecoin-post event — but flagged at the time as "a good day, not proof," pending a proper self-consistency re-run. That re-run has since happened, bundled into the v4 round above: under --runs 3, musk-memecoin-post failed again. The single-run 15/15 was, as predicted, a good day — the honest number is 13/15 under self-consistency, and roadmap item 2 below is closed with that result rather than a repeat of the earlier optimistic figure.
Persistence — append-and-chain, verified live
Re-scoring an event never overwrites a row: a new geoscore_event_scores row is inserted and chained via superseded_by, the same discipline as the gate_decisions evidence table described in the CMA dossier. Live volumes as of the most recent review: 8,158 events, 31,236 scores, 8,442 narratives ingested.
Outcome capture — live, observe-only, real preliminary results
trading/geoscore/outcome.py runs continuously in production (systemd ... --outcomes). Once a score's absolute AIS crosses the lowest watchlist threshold, an inert geoscore_signal_outputs row is opened (gates_passed={"mode":"observe"} — no size, no direction ever acted on) and back-filled with the realized percentage price move at three checkpoints (1h / 1d / 1w) from the candle store.
| Checkpoint | Tracked (n) | Directional hit rate |
| 1h | 781 | 53.7% (396/737, 44 flat) |
| 1d | 651 | 53.9% (329/610, 41 flat) |
| 1w | 17 | 58.8% (10/17) |
Honest reading, updated: a 2026-08 change (commit cdc39f44) lowered the outcome-capture threshold specifically so this table would stop being sample-starved — it worked: 1h/1d moved from n=9/15 to n=781/651. At that size, 53.7%/53.9% is no longer trivially "too small to say anything": a naive two-sided binomial test against p=0.5 gives p≈0.047 at 1h and p≈0.057 at 1d — border-line by the conventional 0.05 threshold. That is reported as exactly what it is, not more: a single, uncorrected test on signals that are not independent trials (many cluster in time and share the same underlying market driver), with no out-of-sample holdout — suggestive, not a confirmed edge. 1w is still thin (n=17) since it needs the longest wait to mature. Roadmap item 5 below ("reach a pre-specified minimum tracked-signal count") is therefore effectively done for 1h/1d and still open for 1w; a proper preregistered significance test (item 6) has not been run.
Data-quality finding from this review. market_candles for at least one thinly-traded symbol (LCID) shows implausible intra-15-minute price oscillations between roughly $2.45 and $6.46 within a one-week span of the tracked window, across every stored resolution — almost certainly an upstream feed/ingestion artifact rather than real price action. The outcome percentages computed from that window are unreliable until the ingestion path is audited. Flagged here as an open item rather than silently excluded, and itself an example of the kind of concrete technical uncertainty this research programme exists to resolve.
Signal consumption remains explicitly OFF by design — the same default-OFF discipline as the observe/shadow policy layer described in the whitepaper. GeoScore does not influence any live order today.
4. Research Questions and Hypotheses
| Question | Hypothesis |
| RQ-G1. Does structured, evidence-quoted extraction plus deterministic scoring produce better-calibrated directional forecasts than an unstructured LLM point-prediction or a keyword/sentiment baseline? | The structured pipeline shows a narrower calibration gap (stated probability vs. realized frequency) than both baselines at equal sample size. |
| RQ-G2. Does exponential time-decay and novelty weighting reduce stale-event false signals relative to an undecayed baseline? | Removing decay/novelty weighting (ablation) increases the false-signal rate on repeated or already-priced-in events. |
| RQ-G3. At what sample size does the directional hit rate become statistically distinguishable from 50%, and does this vary by event class (GEO/MACRO/REG/CORP/SOCIAL)? | Different event classes reach significance at different sample sizes; SOCIAL/celebrity-driven events are noisier than REG/GEO events. |
| RQ-G4. Does the mandatory verbatim-quote requirement measurably reduce unsupported (hallucinated) non-zero factor scores versus unconstrained extraction? | An audited sample shows a materially lower unsupported-claim rate under the quote-constrained prompt than under a control prompt without the requirement. |
5. Design Principles
- Perception and computation are separated. The LLM classifies; it never computes a score or a price target. Every number is produced by
engine.py, a deterministic, unit-tested function.
- Every non-zero factor must cite its evidence. A verbatim quote requirement is the concrete mechanism, not a promise, behind "no unfounded score reaches the database."
- Nothing is overwritten. Re-scoring appends and chains via
superseded_by; the golden set and its expectations are versioned, never edited silently.
- Observe before consume. Outcome tracking exists before, and independently of, any signal-consumption path — calibration data must exist before trust is extended, not after.
- Report the honest number, not the flattering one. A 53.9% border-line result (p≈0.057, uncorrected, non-independent trials) at the 1-day horizon is published here exactly as measured — not rounded up to "a signal."
6. Validation Programme
Planned baselines, none yet run against the same tracked window: B0-Random (coin flip / random walk), B1-NaiveLLM (ask the model to predict direction directly, no structured decomposition), B2-Keyword (simple positive/negative keyword or sentiment-lexicon count), and the current deterministic engine with and without the decay and novelty terms (ablation). Metrics: directional hit rate per horizon and event class with Wilson (small-sample-appropriate) confidence intervals, a calibration curve (stated probability vs. realized frequency), and the evidence-quote audit rate from RQ-G4. No headline predictive claim will be published before reaching a pre-specified minimum sample per checkpoint and running it past the planned baselines — continued daily operation, not new engineering, is what closes that gap.
7. Limitations
- Sample size. 1h/1d checkpoints reached n=781/651 after an August 2026 capture-threshold change; the border-line binomial result above (p≈0.05-0.06) is a measurement snapshot from a single uncorrected test on non-independent signals, not a finding — 1w remains thin (n=17).
- No baseline comparison run yet. B0–B2 above are specified but not yet executed against the same window as the current engine.
- Single model version tested. All golden-set and production scoring to date uses one model (qwen3.6:27b); cross-model robustness is unverified.
- Market-data quality. The LCID candle anomaly above; outcome-capture correctness depends on an upstream data pipeline that has not been independently audited end-to-end.
- Golden Set size. 15 events catches prompt/engine regressions; it is not large enough to estimate classification accuracy with a tight confidence interval.
- No causal claim. Even a confirmed directional edge would show correlation between score and subsequent price movement, not that the extracted narrative caused it.
8. Roadmap
- Audit and fix the market-data ingestion path responsible for the LCID-class anomaly — a data-quality gate before any new metric is trusted
- Done. Re-ran the golden set under self-consistency (
--runs 3, bundled into the v4/geoscore-prompt-v3 round above) — the earlier single-run 15/15 did not hold: 13/15, musk-memecoin-post failed as its flaky history predicted. That specific event's calibration remains a genuinely open follow-up.
- Expand the Golden Set beyond 15 events with deliberate per-event-class coverage
- Implement and run the B0–B2 baselines against the same tracked window
- Reach a pre-specified minimum tracked-signal count per checkpoint through continued observe-mode operation
- Publish calibration curves with Wilson confidence intervals, broken out by event class and horizon
- Only after a demonstrated, statistically distinguishable edge: design a gated, deterministic signal-consumption path — never a direct LLM-to-order path, consistent with CMA's "agents propose, deterministic services commit" invariant
Relation to the CMA Memory Architecture
GeoScore is not a separate product — it is the concrete, calibrated implementation of the Qualitative Narratives submodel described in the whitepaper's AAS section, and its append-and-chain evidence discipline (superseded_by, versioned golden set) is the template the CMA event ledger is meant to generalise across every memory class, not narrative scores alone. Both modules share the same Sovereign AI inference infrastructure and the same underlying research posture: state plainly what is measured, what is proposed, and what remains genuinely open.
Implemented GeoScore is now wired as the CMA event ledger's third producer: every assembled geoscore_event_scores row is additionally mirrored into cma_memory_events as a memory_type='assertion', authority='model_inferred' event (trading/geoscore/scoring.py:score_pending), best-effort and never blocking the primary write — the same convention the AAS and gate_decisions producers use. Gated behind its own default-OFF flag (CMA_LEDGER_MIRROR_GEOSCORE); code-level unit and rollback-isolated real-database tests pass, but this has not yet been observed live in production.
This dossier accompanies, and does not replace, the ZenTrader Whitepaper and the CMA Research Dossier. It is an internal research protocol shared for technical and funding review; research questions, milestones, and figures are dated measurements from an actively continuing daily research programme, not final results or delivery commitments. Implementation and calibration figures were verified against source code, git history, and the production database as of this revision — treat any specific number as time-stamped, not evergreen.
Executive Summary
GeoScore ist das zweite Modul von ZenTraders modularem Forschungsprogramm, neben der Cognitive Memory Architecture (CMA). Während CMA fragt, wie das Gedächtnis eines Agenten zeitlich gültig und evidenzbasiert sein kann, stellt GeoScore eine engere, schärfere Frage: Kann ein Large Language Model, strikt als Wahrnehmungsschicht genutzt, die strukturierte, beleggestützte Fakten aus News- und Social-Media-Ereignissen extrahiert, eine deterministische Scoring-Formel speisen, die ein kalibriertes, zeitlich zerfallendes, gerichtetes Signal für Asset-Preisreaktionen erzeugt — ehrlich gemessen, ohne Abkürzung um ein echtes Prognoseproblem herum?
Dieses Dossier berichtet, was heute verifiziert ist — einschließlich Ergebnisse, die (noch) nicht eindeutig sind. GeoScore befindet sich seit einer frühen Phase dieses Forschungsprogramms in täglicher, kontinuierlicher Weiterentwicklung; die Zahlen unten sind eine Momentaufnahme, kein Endergebnis.
1. Zweck und Status dieses Dokuments
| Label | Bedeutung |
| Implementiert | Direkt gegen Quellcode, Golden-Set-Evaluation und produktive Datenbank verifiziert. |
| Teilweise | Eine funktionierende Grundlage existiert; vollständige Validierung ist noch nicht möglich (meist: Stichprobe zu klein). |
| Offene Frage | Wird aktiv gemessen, ist zum jetzigen Zeitpunkt tatsächlich unentschieden. |
Alle Zahlen in diesem Dossier wurden direkt gegen trading/geoscore/, die Git-Historie von golden_events.json/prompt.py/engine.py sowie die produktiven geoscore_*-Tabellen geprüft — nicht aus einer früheren Zusammenfassung übernommen.
2. Das Forschungsproblem
Forschungsproblem. Kann strukturierte, beleggestützte LLM-Extraktion geopolitischer, makroökonomischer, regulatorischer, unternehmensbezogener und sozialer Ereignisse, bewertet durch eine deterministische und vollständig auditierbare Formel, ein gerichtetes Markt-Reaktions-Signal erzeugen, das messbar besser kalibriert ist als (a) eine unstrukturierte LLM-Punktvorhersage und (b) eine einfache Keyword-/Sentiment-Baseline — bei gleichzeitig lückenloser Rückverfolgbarkeit jedes Scoring-Schritts auf ein wörtliches Quellenzitat?
Das ist bewusst eine engere und falsifizierbarere Frage als "kann ein LLM Märkte vorhersagen". Das LLM rechnet nie und gibt nie ein Kursziel aus; es klassifiziert nur. Eine deterministische, unit-getestete Engine berechnet die Zahl. Das spiegelt CMAs Invariante Agenten schlagen vor, deterministische Dienste committen — GeoScore ist genau diese Regel, angewendet auf qualitative Narrativ-Interpretation.
3. Aktuelle Implementierung, verifiziert gegen Code, Golden Set und Datenbank
Der Klassifikations-Prompt (trading/geoscore/prompt.py) erzwingt eine strukturierte JSON-Ausgabe: Ereignisklasse, gerichtete Faktor-Scores pro Asset über sechs Faktoren (geo, macro, regulatory, direct, narrative, flows), Novelty, Probability und Confidence — und jeder Faktor ungleich null benötigt ein wörtliches Beleg-Zitat aus dem Quelltext, damit kein unbegründeter Score stillschweigend die Datenbank erreicht.
Die deterministische Engine (trading/geoscore/engine.py) ist vollständig auditierbar, fünf unabhängige multiplikative Terme:
AIS = raw_score(aktive Faktoren, Asset-Klassen-Gewichte) × confidence × source_reliability × probability × novelty × decay(Δt, Halbwertszeit)
source_reliability war von Anfang an als "gelernt, aus Outcome-Daten neu kalibriert" dokumentiert, aber über den größten Teil der Historie dieses Programms schrieb nichts diesen Wert: Jede Quelle blieb dauerhaft bei ihrem eingesäten 0,5-Prior, was still das Signal jedes gescorten Events halbierte — unabhängig davon, ob die Quelle tatsächlich gut war. trading/geoscore/reliability.py schließt diese Lücke — ein Beta-Binomial-Bayes'sches Glaubwürdigkeitsmodell (dieselbe Familie, die für IMDB-artige gewichtete Bewertungen genutzt wird), das die Zuverlässigkeit jeder Quelle aus ihrer eigenen erfassten Outcome-Historie über zentrader-geoscore-recalibrate.timer neu schätzt. Das ist kein Papier-Design: Der Timer lief zuletzt erfolgreich am 17.08.2026, und 40 von 59 geoscore_sources-Zeilen tragen inzwischen einen gemessenen Zuverlässigkeitswert abseits des 0,5-Defaults — echte, aktuell laufende Rekalibrierung, die direkt in die AIS-Formel oben zurückfließt.
Golden-Set-Kalibrierung — aus der Git-Historie verifiziert, nicht aus dem Gedächtnis wiederholt
| Stufe | Änderung | Ergebnis |
| v1-Baseline (eingefroren) | Ursprünglicher Prompt + 10-Event-Golden-Set | 0/10 |
| v2-Kalibrierung | Prompt-Neugestaltung (Trigger-Kanal-Regel, Krypto-Asset-Klassen-Mapping), Any-of-Faktorzeichen-Matcher, geweitete Bänder | 7/10 |
| v3 (Dossier-Runde) | 5 reale VIP-/Influencer-Ereignisse ergänzt; 4 der neuen Ereignis-Erwartungen gegen echte Modell-Ausgabe korrigiert (nicht das Modell) | 14/15, ein Restfehler als Grenzwert-Flackern benannt |
v4 (Dossier-Runde; Code geoscore-prompt-v3) | Ergänzt TRACKED_ASSETS, eine Präferenzliste, damit das Modell ein erfasstes Instrument konsistent benennt (z.B. immer "BRENT") statt über Synonyme zu driften; kombiniert mit einer neuen asset_aliases.py-Kanonisierung | 13/15 unter echter Self-Consistency (n=3 Läufe); die 2 verbleibenden Fehlschläge (musk-memecoin-post-Score-Bereich, Exchange-Hack-Faktorzeichen) sind vorbestehende, von der Asset-Benennung unabhängige Kalibrierungslücken, auch schon unter v3 |
Hinweis: Eine frühere öffentliche Zusammenfassung dieser Historie nannte "0/10 → 8/10" — diese Zahl taucht in der Commit-Historie nirgends auf und wurde im Whitepaper auf die verifizierte Entwicklung 0/10 → 7/10 → 14/15 oben korrigiert. Ebenfalls zu beachten: Die v1/v2/v3/v4-Rundennummerierung dieser Tabelle ist unabhängig vom PROMPT_VERSION-String im Code (separat in der CMA-Model-Registry geführt) — die Runden v1-v3 oben liefen alle unter Code-Version geoscore-prompt-v2; erst Runde v4 hob den Code-String auf geoscore-prompt-v3 an.
Für eine frühere Version dieses Dossiers wurde ein frischer Einzellauf des vollständigen Golden Sets gegen das produktive Modell (qwen3.6:27b) ausgeführt: 15/15 bestanden, einschließlich des zuvor flackernden Events musk-memecoin-post — damals aber ausdrücklich als "ein guter Tag, kein Beweis" markiert, bis zu einem echten Self-Consistency-Re-Run. Dieser Re-Run hat inzwischen stattgefunden, gebündelt in der v4-Runde oben: unter --runs 3 fiel musk-memecoin-post erneut durch. Die 15/15 im Einzellauf waren, wie vorhergesagt, ein guter Tag — die ehrliche Zahl ist 13/15 unter Self-Consistency, und Roadmap-Punkt 2 unten wird mit diesem Ergebnis abgeschlossen statt mit einer Wiederholung der früheren, optimistischeren Zahl.
Persistenz — Append-and-Chain, live verifiziert
Ein erneutes Scoring überschreibt nie eine Zeile: Eine neue geoscore_event_scores-Zeile wird eingefügt und über superseded_by verkettet — dieselbe Disziplin wie die im CMA-Dossier beschriebene gate_decisions-Evidenztabelle. Live-Volumen zum Stand dieser Prüfung: 8.158 Events, 31.236 Scores, 8.442 Narrative.
Outcome-Capture — live, observe-only, echte vorläufige Ergebnisse
trading/geoscore/outcome.py läuft kontinuierlich in Produktion (systemd ... --outcomes). Sobald der Betrag des AIS eines Scores die niedrigste Watchlist-Schwelle überschreitet, wird eine inerte geoscore_signal_outputs-Zeile angelegt (gates_passed={"mode":"observe"} — keine Größe, keine Richtung wird je gehandelt) und später mit der realisierten prozentualen Preisbewegung an drei Checkpoints (1h / 1d / 1w) aus dem Kerzen-Speicher befüllt.
| Checkpoint | Erfasst (n) | Richtungstrefferquote |
| 1h | 781 | 53,7% (396/737, 44 flach) |
| 1d | 651 | 53,9% (329/610, 41 flach) |
| 1w | 17 | 58,8% (10/17) |
Ehrliche Einordnung, aktualisiert: Eine Änderung im August 2026 (Commit cdc39f44) senkte gezielt die Outcome-Capture-Schwelle, damit diese Tabelle nicht länger stichprobenarm bleibt — es hat gewirkt: 1h/1d stiegen von n=9/15 auf n=781/651. Bei dieser Größe ist 53,7%/53,9% nicht mehr trivial "zu klein, um irgendetwas zu sagen": Ein naiver zweiseitiger Binomialtest gegen p=0,5 ergibt p≈0,047 bei 1h und p≈0,057 bei 1d — grenzwertig nach der konventionellen 0,05-Schwelle. Das wird exakt so berichtet, wie es ist, nicht mehr: ein einzelner, unkorrigierter Test auf Signalen, die keine unabhängigen Versuche sind (viele häufen sich zeitlich und teilen denselben Markttreiber), ohne Out-of-Sample-Holdout — ein Hinweis, keine bestätigte Edge. 1w bleibt dünn (n=17), da es die längste Wartezeit bis zur Reife braucht. Roadmap-Punkt 5 unten ("eine vorab festgelegte Mindestanzahl erfasster Signale erreichen") ist damit für 1h/1d faktisch erledigt und für 1w weiterhin offen; ein sauberer präregistrierter Signifikanztest (Punkt 6) wurde noch nicht durchgeführt.
Datenqualitäts-Befund aus dieser Prüfung. market_candles zeigt für mindestens ein dünn gehandeltes Symbol (LCID) unplausible Preis-Oszillationen innerhalb von 15 Minuten zwischen rund $2,45 und $6,46 innerhalb einer Woche des erfassten Fensters, über alle gespeicherten Auflösungen hinweg — mit hoher Wahrscheinlichkeit ein vorgelagertes Feed-/Ingestion-Artefakt, keine reale Kursbewegung. Die aus diesem Fenster berechneten Outcome-Prozentwerte sind unzuverlässig, bis der Ingestion-Pfad geprüft ist. Hier als offener Punkt vermerkt statt stillschweigend ausgeschlossen — und selbst ein Beispiel für genau die Art von konkretem technischem Risiko, zu deren Auflösung dieses Forschungsprogramm existiert.
Die Signal-Konsumption bleibt bewusst AUS — dieselbe Default-OFF-Disziplin wie bei der im Whitepaper beschriebenen Observe/Shadow-Policy-Schicht. GeoScore beeinflusst heute keine einzige Live-Order.
4. Forschungsfragen und Hypothesen
| Frage | Hypothese |
| RQ-G1. Erzeugt strukturierte, beleggestützte Extraktion plus deterministisches Scoring besser kalibrierte gerichtete Prognosen als eine unstrukturierte LLM-Punktvorhersage oder eine Keyword-/Sentiment-Baseline? | Die strukturierte Pipeline zeigt bei gleicher Stichprobengröße eine engere Kalibrierungslücke (angegebene Wahrscheinlichkeit vs. realisierte Häufigkeit) als beide Baselines. |
| RQ-G2. Reduzieren exponentieller Zeit-Zerfall und Novelty-Gewichtung veraltete Fehlsignale gegenüber einer nicht-zerfallenden Baseline? | Entfernen von Decay/Novelty (Ablation) erhöht die Fehlsignalrate bei wiederholten oder bereits eingepreisten Ereignissen. |
| RQ-G3. Ab welcher Stichprobengröße wird die Richtungstrefferquote statistisch von 50% unterscheidbar, und variiert das nach Ereignisklasse (GEO/MACRO/REG/CORP/SOCIAL)? | Verschiedene Ereignisklassen erreichen Signifikanz bei unterschiedlichen Stichprobengrößen; SOCIAL/Celebrity-getriebene Ereignisse sind verrauschter als REG/GEO-Ereignisse. |
| RQ-G4. Reduziert die Pflicht zum wörtlichen Zitat messbar unbelegte (halluzinierte) Faktor-Scores ungleich null gegenüber unbeschränkter Extraktion? | Eine geprüfte Stichprobe zeigt eine deutlich niedrigere Rate unbelegter Behauptungen unter dem zitatpflichtigen Prompt als unter einem Kontroll-Prompt ohne diese Pflicht. |
5. Design-Prinzipien
- Wahrnehmung und Berechnung sind getrennt. Das LLM klassifiziert; es berechnet nie einen Score oder ein Kursziel. Jede Zahl entsteht in
engine.py, einer deterministischen, unit-getesteten Funktion.
- Jeder Faktor ungleich null muss seinen Beleg zitieren. Die Zitatpflicht ist der konkrete Mechanismus, kein bloßes Versprechen, hinter "kein unbegründeter Score erreicht die Datenbank".
- Nichts wird überschrieben. Erneutes Scoring hängt an und verkettet über
superseded_by; das Golden Set und seine Erwartungen sind versioniert, nie still editiert.
- Beobachten vor Konsumieren. Outcome-Tracking existiert vor und unabhängig von jedem Signal-Konsumptionspfad — Kalibrierungsdaten müssen existieren, bevor Vertrauen gewährt wird, nicht danach.
- Die ehrliche Zahl berichten, nicht die schmeichelhafte. Ein grenzwertiges 53,9%-Ergebnis (p≈0,057, unkorrigiert, nicht-unabhängige Versuche) beim 1-Tages-Horizont wird hier exakt so veröffentlicht, wie gemessen — nicht aufgerundet zu "einem Signal".
6. Validierungsprogramm
Geplante Baselines, noch keine gegen dasselbe erfasste Fenster gelaufen: B0-Random (Münzwurf/Random Walk), B1-NaiveLLM (Modell direkt nach Richtung fragen, keine strukturierte Zerlegung), B2-Keyword (einfache Positiv-/Negativ-Keyword- oder Sentiment-Lexikon-Zählung), sowie die aktuelle deterministische Engine mit und ohne Decay- und Novelty-Terme (Ablation). Metriken: Richtungstrefferquote pro Horizont und Ereignisklasse mit Wilson-Konfidenzintervallen (geeignet für kleine Stichproben), eine Kalibrierungskurve (angegebene Wahrscheinlichkeit vs. realisierte Häufigkeit) sowie die Zitat-Audit-Rate aus RQ-G4. Keine prädiktive Kernaussage wird veröffentlicht, bevor eine vorab festgelegte Mindeststichprobe pro Checkpoint erreicht und gegen die geplanten Baselines gelaufen ist — kontinuierlicher täglicher Betrieb, nicht neues Engineering, schließt diese Lücke.
7. Limitationen
- Stichprobengröße. Die 1h/1d-Checkpoints erreichten nach einer Änderung der Capture-Schwelle im August 2026 n=781/651; das grenzwertige Binomial-Ergebnis oben (p≈0,05-0,06) ist eine Momentaufnahme aus einem einzelnen, unkorrigierten Test auf nicht-unabhängigen Signalen, kein Befund — 1w bleibt mit n=17 dünn.
- Noch kein Baseline-Vergleich gelaufen. B0–B2 oben sind spezifiziert, aber noch nicht gegen dasselbe Fenster wie die aktuelle Engine ausgeführt.
- Nur eine Modellversion getestet. Alle Golden-Set- und Produktions-Scores bis heute nutzen ein Modell (qwen3.6:27b); Cross-Model-Robustheit ist ungeprüft.
- Marktdatenqualität. Die LCID-Kerzenanomalie oben; die Korrektheit der Outcome-Erfassung hängt von einer vorgelagerten Datenpipeline ab, die nicht unabhängig durchgeprüft wurde.
- Golden-Set-Größe. 15 Ereignisse fangen Prompt-/Engine-Regressionen ab; das reicht nicht, um Klassifikationsgenauigkeit mit engem Konfidenzintervall zu schätzen.
- Kein Kausalitätsanspruch. Selbst eine bestätigte gerichtete Edge würde nur eine Korrelation zwischen Score und nachfolgender Preisbewegung zeigen, nicht dass das extrahierte Narrativ sie verursacht hat.
8. Roadmap
- Ingestion-Pfad für die LCID-artige Anomalie prüfen und beheben — ein Datenqualitäts-Gate, bevor eine neue Metrik vertraut wird
- Erledigt. Golden Set unter Self-Consistency (
--runs 3, gebündelt in die v4-/geoscore-prompt-v3-Runde oben) erneut laufen lassen — die früheren 15/15 aus dem Einzellauf hielten nicht: 13/15, musk-memecoin-post fiel wie von seiner flackernden Historie erwartet durch. Die Kalibrierung dieses konkreten Events bleibt ein echt offener Folgepunkt.
- Golden Set über 15 Ereignisse hinaus erweitern, mit gezielter Abdeckung je Ereignisklasse
- B0–B2-Baselines implementieren und gegen dasselbe erfasste Fenster laufen lassen
- Eine vorab festgelegte Mindestanzahl erfasster Signale pro Checkpoint durch fortgesetzten Observe-Betrieb erreichen
- Kalibrierungskurven mit Wilson-Konfidenzintervallen veröffentlichen, aufgeschlüsselt nach Ereignisklasse und Horizont
- Erst nach nachgewiesener, statistisch unterscheidbarer Edge: einen gegateten, deterministischen Signal-Konsumptionspfad entwerfen — nie einen direkten LLM-zu-Order-Pfad, konsistent mit CMAs Invariante "Agenten schlagen vor, deterministische Dienste committen"
Bezug zur CMA-Memory-Architektur
GeoScore ist kein separates Produkt — es ist die konkrete, kalibrierte Umsetzung des im AAS-Abschnitt des Whitepapers beschriebenen Submodells Qualitative Narratives, und seine Append-and-Chain-Evidenzdisziplin (superseded_by, versioniertes Golden Set) ist die Vorlage, die der CMA-Event-Ledger über alle Memory-Klassen hinweg verallgemeinern soll, nicht nur Narrativ-Scores. Beide Module teilen dieselbe Sovereign-AI-Inferenz-Infrastruktur und dieselbe grundlegende Forschungshaltung: klar benennen, was gemessen ist, was vorgeschlagen ist, und was tatsächlich noch offen ist.
Implementiert GeoScore ist inzwischen als dritter Producer des CMA-Event-Ledgers angebunden: Jede zusammengesetzte geoscore_event_scores-Zeile wird zusätzlich als memory_type='assertion'-, authority='model_inferred'-Event in cma_memory_events gespiegelt (trading/geoscore/scoring.py:score_pending), best-effort und ohne den Primärschreibvorgang je zu blockieren — dieselbe Konvention wie bei den AAS- und gate_decisions-Producern. Hinter einem eigenen, standardmäßig deaktivierten Flag (CMA_LEDGER_MIRROR_GEOSCORE); Unit- und rollback-isolierte Real-DB-Tests bestehen, ein Live-Nachweis in Produktion steht noch aus.
Dieses Dossier begleitet das ZenTrader-Whitepaper und das CMA-Research-Dossier und ersetzt sie nicht. Es ist ein internes Forschungsprotokoll zur technischen und Förder-Prüfung; Forschungsfragen, Meilensteine und Zahlen sind datierte Messwerte aus einem aktiv fortlaufenden täglichen Forschungsprogramm, keine Endergebnisse oder Lieferzusagen. Implementierungs- und Kalibrierungszahlen wurden gegen Quellcode, Git-Historie und produktive Datenbank verifiziert (Stand dieser Überarbeitung) — jede konkrete Zahl ist zeitgestempelt zu lesen, nicht als dauerhaft gültig.