Cassandra methodology
Auditable, source-traceable methods for every number shown to users. No unfalsifiable claims. No crash-date predictions. LLMs narrate; Python computes.
CRS (Crash Risk Score)
Implementation: src/scoring.py. Pure Python, unit-tested against worked examples.
CRS = (a·F + b·T + c·F·T) mapped to 0–100 scale with confidence band ±halfwidth
- F (Fragility): weighted mean of L, V, S, B factor aggregates
- T (Trigger): catalyst factor aggregate (C)
- Interaction term F·T is load-bearing. Never collapsed into a sum.
Each input carries source + asof. Stale inputs widen the band. Missing inputs reduce coverage honestly.
Wyckoff phase
Implementation: src/phase.py. Documented schematics, not proprietary magic.
| Phase | Detection signals |
|---|---|
| Accumulation | Range compression, volume dry-up, spring patterns |
| Markup | Higher highs + expanding participation |
| Distribution | Lower highs on declining volume, failed breakouts |
| Markdown | Break of support on volume expansion |
Output: phase label + confidence (0–1) + 2–3 evidence strings.
News similarity engine
Today's headlines are embedded and compared to archived windows (Mar 2000, Oct 2007, Feb 2020, and others). Cosine similarity surfaces top matches with source URLs.
Honesty guardrails: labeled descriptive, not predictive. Timing separation shown explicitly (±N days). Never implies "crash in X days."
What we do not claim
| Forbidden | Instead |
|---|---|
| "Predicts crashes" | Monitors fragility and trigger conditions |
| Specific crash dates | Analog + similarity + timing humility band |
| LLM-computed CRS | Python in scoring.py only |
Agent chat gate
Implementation: src/tools/agent_gate.py. Pre-LLM relevance filter. Score below 0.4 returns a canned response with no model invocation. Blocked attempts are logged for future classifier training.
Daily generation
Three runs per US trading day (04:00 / 13:00 / 16:00 UTC). One edition shared by all readers; tier controls depth and delay, not separate math.
Full markdown spec: METHODOLOGY.md (raw)
Personal research tooling, not financial advice. Signals can conflict; the system is designed to say "I don't know" when evidence is thin.