Exposure Workbench
Portfolio exposure analytics with an issuer-intelligence layer, over a fully traceable run history.
Risk numbers are only as trustworthy as your ability to explain how they changed. I wanted a workspace where the calculation is deterministic and the explanation is auditable — not a black box that emits a VaR.
Exposure Workbench reads positions and market data, runs deterministic risk and attribution calculations, and then lets an agent explain what changed — with every figure traceable back to the fact it came from.
Shape of the system
The design separates two things most tools blur together: the calculation, which is deterministic code and must be reproducible, and the explanation, which is where a language model helps but must never invent a number. Between them sits an append-only evidence layer — facts, chunks, calculations, and sources — so any output in a report can be walked back to its origin.
The issuer-intelligence layer extends this from “what is my exposure” to “what should I know about the issuers behind it,” using the same evidence discipline: nothing gets asserted that can’t be traced.
Current state
Active. The deterministic exposure pipeline runs end-to-end on real market data; the evidence stores and the issuer layer are where current work is. Several notes here — on fallbacks, the MCP surface, and traceable evidence — come directly out of building it.
A fallback postpones an error to where it's harder to diagnose; orthogonal modules remove the class.
Market-data sync is now idempotent
Moved market-data ingestion behind a provider abstraction; yfinance became one implementation rather than the interface. Re-running a sync no longer double-writes — the upsert is keyed and fail-loud on partial data.
Why every LLM-generated tool call should cross one audited surface — and what stays in code.
Filings, market data, calculations, and provenance each want a different system layer.
Append-only evidence stores landed
Stood up the four evidence stores — facts, chunks, calculations, sources — as append-only tables. Corrections are now supersessions, not mutations, which is the precondition for any figure being traceable end to end.
Traceability isn't a source column; it's every number reaching back to its raw fact.