Self-hosted AI investment committee
Four LLM roles cross-examine each other and a CIO aggregates one verdict. Execution remains your decision.
Installs the MCP server (tools auto-registered) + committee skills. Then say “set up invest” to onboard. No API key needed (Coordinator path).
Why OpenInvest
Return significance is bounded by t ≈ SR·√T: Sharpe 0.5 needs ~16 years and Sharpe 1 ~4 years to reach t≈2 (paper §4.3). OpenInvest therefore grades calibration and removes components that fail testing.
Pre-registered out-of-sample acceptance (fit 2007–2017, test 2018–2026): 30/60/90-day P10–P90 coverage 76/73/70% → 81/80/76%, inside the [75%, 85%] target band; Brier improves at all three horizons.
TradingAgents-style analyst agents scored 50.3 / 57.4 / 64.7% on 30-day direction — all below the 70.7–73.1% naive baseline. 0 of 3 passed the pre-registered gate.
At effective n=1, probability-band coverage falls to 42%. Thin buckets are flagged low_confidence and shrunk (k=80) toward the asset’s unconditional distribution.
LLM self-reported confidence has a median of 0.60 (n≈2,100) and clusters on multiples of 0.05; it carries no probabilistic meaning (paper Fig. 7).
Three analysts argue from separate data sources, cross-examine in round 2, and a CIO aggregates one verdict.
Product Philosophy
OpenInvest is not another AI assistant, and it is not trying to replace your agent.
We believe the future belongs to increasingly capable personal agents such as Claude Code, Codex, Hermes, OpenClaw, and future Agent OSs. These agents already understand their users far better than a standalone investment application ever could. They naturally accumulate long term context, remember past conversations, observe user behavior, and evolve alongside their owners.
Instead of rebuilding these capabilities, OpenInvest focuses on one thing: the investment decision engine.
OpenInvest produces auditable decision evidence; your agent helps you make the choice.
We do not want to compete with the rapidly evolving agent ecosystem by building another chat interface or another memory system. Instead, OpenInvest is designed to become the decision infrastructure that powers those agents.
As agents become smarter, OpenInvest becomes more valuable. Every improvement in the agent ecosystem immediately benefits OpenInvest users without requiring OpenInvest to reinvent conversation, memory, or personalization.
OpenInvest does not build another AI agent. It provides the decision engine that agents call.
Evidence
Figures are recomputed from the public research archive. Look-ahead-prone windows are flagged; results where the committee trails the baseline are included.
Defensive replay
GC=F, 2022: committee +1.95%, buy-and-hold -0.43%, 200-DMA trend -6.46%, regime rule -5.70%. One asset-year does not establish an edge (paper §4.3).
Walk-forward replay on GC=F, 2022 (pre-training-cutoff, no look-ahead). n=251 trading days.
experiments/ta-analysts/baselines/gold_fourth_arm_result.json
Sharpe, committee vs buy-and-hold: 2022 bear 0.20 vs 0.05; 2024–26 bull 1.82 vs 1.74; 2020 V-shaped crash 0.73 vs 1.13. Three windows do not establish an edge (paper §4.3).
† 2024–26 bull carries LLM look-ahead (upper-bound only). * 2020 / 2022 are clean. Sharpe ratio, GC=F.
experiments/ta-analysts/baselines/gold_fourth_arm_result.json
Fundamental, news and sentiment analysts all missed our pre-registered hit-rate gate — a naive “always-majority” baseline beat every one.
30-day directional hit-rate, Wilson 95% CI, n≈244/analyst. The single-sided bull window makes the ~73% baseline a high bar by design.
docs/wiki/16-ta-analysts-experiment.md
Of 9 window × model cells, 1 cleared the gate (2022 bear · fundamental 74.3%). A result is accepted only once replicated.
Gate = Wilson CI lower bound above both the naive baseline and the mechanical mapping.
docs/wiki/16-ta-analysts-experiment.md



![Pre-registered out-of-sample acceptance (fit 2007–17, test 2018–26): coverage 81/80/76%, inside [75%, 85%]; Brier 0.236→0.233 / 0.237→0.230 / 0.215→0.209.](/figures/table2_calibration.png)






Methodology & Deep Dive
Architecture decisions, calibration methods, and validation results.
To fix the LLM’s zero-session memory, a three-stage nightly job consolidates historical decisions. We apply volatility-aware opportunity cost thresholds to HOLD verdicts to counter over-conservatism.
Starts at midnight. Reads all past verdicts and subsequent market price movements, tagging each with the true market regime on that decision day, generating short-term-recall files.
Instead of untestable point estimates, we query 20+ years of historical data for the active regime. Paths are sorted into 4 mutually-exclusive categories using volatility units.
The same prompts run through two distinct implementations. Disagreements between Claude and DeepSeek are used as a model divergence validation signal rather than a bug.
Local sandboxed subprocesses on the user’s Claude subscription; no API charges.
ThreadPool execution for cron-based automation and real-time live SSE stream.
We optimize prompts and allocation rules programmatically. Rather than hiding failed assumptions, we document them to ensure scientific integrity.
λ = eff_n / (eff_n + k)k = 80Small-sample shrinkage — pull thin conditional buckets toward the asset’s unconditional distribution.
q′ = γ · qγ = 1.1 · P10/P90Bandwidth expansion on the P10/P90 & downside quantiles — fixes the structural under-coverage.
t ≈ SR · √TSharpe 1 → ~4 yrWhy calibration, not P&L: Sharpe-1 skill takes ~4 years to prove; calibration is testable now.
Across 30 Optuna trials, debate rounds (1 vs 3) had no significant effect. TradingAgents-style analysts scored below the naive baseline and failed the pre-registered gate.
We use YAML frontmatter for schema validation (Pydantic) and the Markdown body for direct LLM ingestion. Atomic transactions are secured via fcntl file locks.
Fcntl read-modify-write (RMW) locking prevents race conditions between chat bots, schedulers, and APIs.
Browse and read the raw, unedited Markdown documentation and Architecture Decision Records (ADRs) directly from our codebase.