Evidence-first financial research — every signal traced to its SEC filings and verifiable against a public, git-anchored ledger. CLI + REST + MCP + LangChain/LlamaIndex. Research / education only — not investment advice.
Project description
YUCLAW
Evidence-first financial research — every signal traced to its filings, verifiable by anyone.
An open-source research engine that turns SEC filings into research classifications (never buy/sell calls). Every signal links to its source filings, carries an Evidence Quality grade, and is hash-anchored in a public, git-anchored ledger so anyone can independently verify it.
Research and education only. Not investment advice.
Quickstart · Methodology · Disclaimer · Public ledger · PyPI
Try it in 3 minutes
pip install yuclaw
yuclaw demo
yuclaw demo is a guided, ~3-minute journey on a real, frozen signal: it shows the
structured signal and what drives it, the full research memo with every claim linked to
an SEC filing (accession number + ledger hash), a deterministic point-in-time replay, and
an independent verification against the public ledger. Raw scores are hidden by default —
research, not numeric recommendations.
yuclaw why AMD --as-of 2026-05-20 # structured signal (add --include-score for the composite)
yuclaw memo AMD --as-of 2026-05-20 # full research memo with evidence trail
yuclaw cascade AMD --as-of 2026-05-20 # supply-chain cascade that propagated into AMD
yuclaw verify AMD --date 2026-05-20 # re-verify the hash against the public ledger
yuclaw share AMD --as-of 2026-05-20 # a self-contained, independently-verifiable HTML card
The CLI (and the in-process SDK / MCP) is never metered — self-hosting is unlimited and
offline. The hosted REST API works anonymously (20 req/day/IP); a key raises the quota to
100/day (yuclaw keys create).
What YUCLAW is — and is not
- It produces research classifications:
STRONG_BULLISH · BULLISH · NEUTRAL · WATCH · WEAKENING · NEGATIVE_EVENT · BEARISH_WATCH · RISK_ALERT. There is no SELL/SHORT/BUY vocabulary — these are research labels, not recommendations. - Every signal is explainable and verifiable: a 9-component anatomy with rationale, an
evidence trail where each item carries a
source_url+ SECaccession_number+ledger_hash, and a point-in-timereplay_id. - A tamper-evidence record: signal content hashes are committed to a public, git-anchored Verified Research Ledger (yuclaw-trust). Anyone can recompute a hash from the public filings and confirm a signal was unaltered.
- It is not a trading bot, not investment advice, and makes no zero-knowledge or cryptographic proof of strategy correctness — the ledger proves integrity & timing, nothing more.
Capabilities
| Surface | What you get |
|---|---|
| CLI | yuclaw demo · why · memo · cascade · share · verify · keys |
| REST | GET /v1/{why,signal,memo,cascade,verify}/{ticker} → one unified ResearchResponse; /v1/share, /v1/keys/* |
| MCP | yuclaw_why (structured), yuclaw_memo (markdown) + yuclaw_universe/validation/verify — drop into Claude Desktop |
| Agents | LangChain YuclawWhyTool/YuclawMemoTool; LlamaIndex YuclawRetriever (each evidence item → a citable node) |
| SDK | yuclaw_py.Client (local Postgres or hosted API) |
Every surface returns the same contract — see docs/v4/openapi.yaml and docs/v4/migration.md.
Use it from an agent
from v4.integrations.langchain_yuclaw import YuclawWhyTool, YuclawMemoTool
agent = create_react_agent(llm, [YuclawWhyTool(), YuclawMemoTool()])
from v4.integrations.llamaindex_yuclaw import YuclawRetriever
nodes = YuclawRetriever().retrieve("AMD") # one citable node per source filing
See docs/v4/mcp_v2.md, docs/v4/langchain.md, docs/v4/llamaindex.md, docs/v4/api_keys.md.
Why a bounded ~80-name universe?
YUCLAW tracks ~80 names (49 equities + 15 sector ETFs + 5 broad ETFs + 10 macro indices),
not the whole market. The thesis is depth over breadth: a bounded universe lets every signal
be backed by actually-read primary filings and a curated supply-chain influence graph,
rather than thin coverage across thousands of tickers. The universe is explicit in
v3/universe.json and expands deliberately (see Roadmap).
Verification
Every signal's content hash is committed to the public git-anchored ledger. To verify:
yuclaw verify AMD --date 2026-05-20
# ✓ VERIFIED — recomputed hash matches the public ledger entry (commit 8a67ba7).
The yuclaw share card embeds the same hash + a "Verify independently →" link, so a
recipient can confirm a signal without trusting us. See
yuclaw-trust for the honest framing of what
hash-anchoring does (integrity & timing) and does not (it is not a proof of strategy merit).
Compliance
YUCLAW research output. Not investment advice. Past performance does not guarantee future results. Signal labels are research classifications, not buy/sell recommendations.
This notice is the single source of truth (v4/api/schema.py::COMPLIANCE_NOTICE, tag
draft-v0) and is attached to every signal-data response (including denials). See
DISCLAIMER.md. Full disclosure: the wording is a conservative placeholder
pending a post-funding securities-law review.
Roadmap
- v4 (shipped): unified
ResearchResponse, REST + MCP + LangChain/LlamaIndex, Memo Generator, Cascade History View, Share-this-Signal card, API keys + lite metering, the 3-minute demo, and the compliance regression guard. - v4.1 (deferred): multi-LLM extraction & cross-checking, Whisper audio ingestion, a larger universe, hosted share links, and a public bearish/short research lane (carefully scoped — still research classifications, never recommendations).
License & contributing
MIT. Issues and PRs welcome at
github.com/YuClawLab/yuclaw-brain. The compliance
regression test (tests/test_compliance_regression.py) runs on every PR — new endpoints must
keep the compliance block on signal responses.
Built with local Llama 3.1 70B inference (Ollama) on NVIDIA GB10. Research and education only — not investment advice.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yuclaw-4.0.0.tar.gz.
File metadata
- Download URL: yuclaw-4.0.0.tar.gz
- Upload date:
- Size: 195.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
575e2d30611cc2a0c9ea753ca4baceb513c9baaa9921cf11d0b3bd84a4aee012
|
|
| MD5 |
620dc527eeaf956f2b9ae5051a2cac6a
|
|
| BLAKE2b-256 |
59463312a2b1d64bb1e10582e59e782d62064e5a23d93025526ee3481ed8e680
|
File details
Details for the file yuclaw-4.0.0-py3-none-any.whl.
File metadata
- Download URL: yuclaw-4.0.0-py3-none-any.whl
- Upload date:
- Size: 195.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5089db3f608098034a94991097951f47ea7bd89c5a968c3a669502ab42e129f
|
|
| MD5 |
915aff3604b1d3237c01095729419d58
|
|
| BLAKE2b-256 |
b151d896193ee8d84bcc5412fe444fa81b8954c6635ae8f3b330ec77e4919fe5
|