An LLM-first hedge fund research system where an independent ML verifier, not the language model, approves capital.
Research collects. The LLM originates. Agents investigate. Evidence challenges. ML verifies. Risk sizes.
FusionFinance puts a language model first: it reads a sealed, point-in-time research dossier and either originates a falsifiable trade idea or passes. An analyst desk and a deterministic evidence audit reject fabricated quotes, unreconciled numbers, future sources, and contradictions. An independent ML verifier then tries to falsify what survives. It combines a walk-forward market model, a meta-labeler trained on the fund's own resolved LLM calls, and the LLM's empirical track record, and it never sees LLM text, embeddings, or self-reported confidence. Only ideas the verifier cannot falsify are sized (fractional Kelly with volatility scaling and hard limits). They then run through the same next-open execution kernel, with costs, as every comparison arm. Every decision, passes and vetoes included, lands in a hash-chained ledger.
- LLM-first fund: design, ablation, limits
- Research data collection and analysis pipeline
- Verifier committee: twenty published methods, consensus rules, audit
python3 -m venv .venv && . .venv/bin/activate
python -m pip install -e '.[dev]' # add ,claude for the Claude provider
make backtest # four-arm ablation on the synthetic world
python -m alpha.fund research S12 # print a research dossier
python -m alpha.fund review S01=0.5 S02=0.5 # five-lens portfolio review
python -m alpha.fund collect AAPL MSFT --out data/store \
--user-agent "Your Name you@example.com" # live SEC Form 4 + XBRL fundamentals
python -m alpha.fund research AAPL --data data/store --benchmark SPY
make testEverything runs offline by default, using deterministic stand-ins for the LLM.
ClaudeProvider (claude-opus-5-5, structured outputs, record/replay cache)
swaps in a real model. See running a real model.
Modelled on the research workflow Barebone AI publishes in its resources library, and made point-in-time and auditable for backtesting:
| Layer | Inputs | Output |
|---|---|---|
| News impact | articles, relationship graph | 0–10 impact, direction, second-order effects on suppliers and competitors |
| Sentiment | analyst ratings and targets, social mentions | institutional and retail gauges, divergence, spam and crowding warnings |
| Smart money | SEC Form 4, STOCK Act disclosures, 13F | discretionary insider cluster buys, buying the dip, committee-oversight flags, new fund positions |
| Earnings | reports, estimates, transcripts | surprise, guidance, beat quality, priced-in risk, bottleneck language |
| Valuation | XBRL fundamentals, prices, targets, peers | DCF with CAPM WACC, consensus, peer multiples, agreement across methods |
| Technicals | daily bars | confirmed multi-resolution zones, trend, RSI, entry/stop/target, 0–100 confidence |
| Convergence and portfolio | all of the above | watch/research/size tiers; growth, risk, income, sector, and momentum lenses |
Every record carries both event_at and available_at. Every analysis runs
on a view that cannot see the future, and the dossier's sentences and numbers
are the only evidence the LLM may cite.
| Arm | Dossier mode | Narrative mode (LLM fooled by hype) |
|---|---|---|
| LLM decides alone | +29.0%, Sharpe 4.91 | −6.9%, Sharpe −3.26 |
| Committee trades alone | +24.7%, Sharpe 4.49 | +24.7%, Sharpe 4.49 |
| LLM-first + single ML verifier | +23.7%, Sharpe 4.58 | −2.9%, Sharpe −1.43 |
| LLM-first + verifier committee | +29.4%, Sharpe 5.12 | +1.1%, Sharpe 0.58 |
The committee seated only the four jurors that carry this world's planted catalyst signal (analyst revisions, opportunistic insiders, post-earnings drift, Gu–Kelly–Xiu trees; IC t-stats of 3.9 to 5.9). It refused votes to the anomalies the world does not contain. When the LLM reads raw narrative and is fooled by hype, the committee gate passes 59% of genuine ideas and 23% of hype. The world is fictional, so it is leakage-free for any LLM, but its signals are planted and the thresholds are uncalibrated. See the fund doc and the committee doc.
Research and paper-trading software only. Not financial advice, a profit guarantee, or an authorization for real-money execution.
The sections below describe the original hackathon submission, in which ML proposed and agents investigated. Its replay, evidence receipts, and claim boundaries are unchanged.
Open the no-auth demo · View the public repository
The system defines three distinct arms under one intended experiment contract:
| Arm | Inputs | What it tests |
|---|---|---|
| Pure ML | Structured point-in-time market and filing features | Numerical consistency without narrative interpretation |
| Pure LLM | Agent research without the proprietary ML proposal | Context synthesis without quantitative calibration |
| FusionFinance | ML proposal, agent investigation, evidence and market verification, risk sizing | Whether defined checks improve decision quality |
FusionFinance is not a vote or an average. A fluent thesis can be rejected, and
a strong model score can remain untraded. The current Micron example does
exactly that: the proposal schema passes, but the retrospective thesis lacks a
prospective seal and citation-complete evidence, so the final action is
rejected with a zero position.
The shared execution foundation freezes the universe, market clock, capital,
costs, slippage, rebalance cadence, leverage, and position limits in
configs/fusionfinance-demo.json. It is
tested infrastructure for the next controlled run; it is not the provenance of
the legacy replay shown below.
The public February–July 2026 replay contains 109 stored observations and 12 visible rejected decisions. Metrics are recomputed from the checked-in curves:
| Stored arm | Return | Sharpe | Sortino | Max drawdown | Volatility |
|---|---|---|---|---|---|
| Pure ML | +1.7% | +0.76 | +1.03 | −2.9% | 5.4% |
| Pure LLM | −10.3% | −0.90 | −1.28 | −23.8% | 24.5% |
| Legacy Fusion line | +10.1% | +2.05 | +3.48 | −3.9% | 11.1% |
| SPY benchmark | +8.7% | +1.39 | +2.10 | −8.9% | 14.6% |
These numbers are provisional, not causal proof of fusion outperformance. The legacy arms were not produced by the new shared execution kernel, their historical LLM theses were not prospectively sealed, and those theses fail the current evidence contract. The replay demonstrates the product, metric pipeline, verifier behavior, and claim boundary—not universal alpha.
The legacy Fusion curve is also sampled differently: it contains only 21 nonzero changes across 109 stored account values, in an apparent five-session marking cadence, while the comparison arms change more frequently. That sparse cadence can hide intra-interval troughs and weakens cross-arm drawdown comparability.
Turnover, cost, exposure, cash, win rate, and trade count are shown as an em dash because the legacy trade ledger was not retained. The dash means unavailable, not zero trades.
The default demo is static, fast, and offline. It needs no login, API key,
model endpoint, or market-data connection. Python 3.11+ runs the reproducibility
suite; FFmpeg's ffprobe validates the checked-in release video.
# Instant judge path
python3 -m http.server 8000 --bind 127.0.0.1 --directory demo
# Open http://127.0.0.1:8000/index.html
# Reproducibility and tests
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[dev]'
make artifacts
make verify
make testThe artifact build reads only checked-in files under evidence/.
It performs no network request and uses no private cache. Running it twice
produces byte-identical public artifacts.
The judge path also includes a real provider-agnostic analyst runtime under
alpha/agents/. Market, news, fundamentals, and risk roles
run concurrently against one hash-sealed source snapshot. The default provider
is deterministic and offline; an optional OpenAI-compatible adapter uses only
the Python standard library and environment variables. Both paths must emit the
same strict JSON contract before an immutable thesis can reach the existing
evidence audit and veto-first candidate decision. Sources newer than the
proposal cutoff are rejected before any role sees them, and quantitative claims
must use reconciled citation fields:
pytest -q tests/test_agent_runtime.py -p no:captureThe focused test runs unseen structured fixtures through approval, malformed output, unknown-citation, contradiction, and risk-veto paths. It does not retroactively turn the legacy replay into a prospective agent run.
The receipt is explicitly an agent_evidence_precheck. It proves schema,
point-in-time, citation, numeric-reconciliation, and decision self-consistency;
it does not prove semantic entailment, authenticity, market-verifier approval,
portfolio construction, or execution. Its provisional_weight_cap is not an
executable target; those remain separate downstream gates. The current receipt embeds
the immutable proposal and source snapshot, then rederives their hashes,
evidence audit, decision, reasons, and provisional cap during validation.
Point-in-time data
│
├── Pure ML ───────────────────────────────────────────┐
├── Pure LLM agent roles ──────────────────────────────┤
└── ML proposal → agents → evidence audit │
→ market verifier ├→ shared execution → metrics
→ risk sizing ──────────────┘
alpha/filing_alpha/contains attributed XBRL, filing-text, point-in-time fusion, and evaluation transforms selected from the suppliedfiling_alpha_sharpe6archive. Its rejected strategy and unsafe timestamp parser were not imported.alpha/agents/contains the four-role concurrent desk, deterministic offline and optional HTTP providers, strict immutable input and output contracts, and the agent/evidence pre-gate orchestrator. The market verifier, portfolio policy, and execution remain downstream.alpha/verifier/defines immutable theses, exact-quote and numeric reconciliation, source-availability checks, calibration, market verification, and veto-first adjudication.demo/contains the immutable experiment contracts, common next-session execution/metrics kernel, and the deployed replay interface.evidence/is the complete public rebuild input and AMD receipt chain.
See architecture, methodology, and limitations for the implemented boundary and the work still required before a comparative claim.
AMD compute powers a recorded expanding walk-forward quantitative model training workload—not a decorative logo. This workload is separate from and did not generate the displayed legacy replay curves. Self-reported receipts record:
- AMD vendor and
gfx1100architecture; - PyTorch on ROCm/HIP
7.2.53211-e1a6bc5663; - 51,522,830,336 reported VRAM bytes;
- 72 expanding walk-forward ranker retrains; and
- 231.29 seconds of recorded GPU training.
The builder derives those fields from the receipt contents and cross-checks the environment, hardware, and training records. SHA-256 protects their published byte integrity; it is not independent hardware attestation. The raw device-name field and utilization are unavailable, so FusionFinance does not invent an exact commercial SKU or utilization value. Verify the published chain locally:
python3 scripts/verify_amd.pyFull evidence and caveats: AMD Compute Usage.
- Live replay
- Demo video
- 10-page slide deck
- Timed video storyboard and narration
- Replay result, metrics, decisions, and AMD manifest
- Submission copy and checklist
alpha/fund/ LLM-first fund: originator, ML gate, learning, sizing, ledger, backtest, CLI
alpha/research/ PIT research pipeline: collectors, store, six skills, dossier, portfolio review
alpha/verifier/committee/ twenty published-method jurors and the consensus protocol
alpha/ focused filing, agent, verifier, and AMD-backed quantitative modules
configs/ frozen controlled-comparison contract
demo/ no-auth UI plus shared execution and metrics kernel
docs/ architecture, methodology, AMD evidence, and limitations
evidence/ sealed replay input and three byte-preserved AMD receipts
presentation/ submitted deck/video sources and artifacts
results/ deterministic public outputs
scripts/ artifact builder, AMD verifier, and curated archive builder
tests/ focused unit, integration, publication, and release tests
The public tree intentionally excludes vendored research archives, obsolete demo surfaces, private caches, fine-tuning corpora, raw portrait/voice media, and historical experiment operators. The project acknowledges external ideas through links and notices instead of shipping unused upstream repositories.
Original FusionFinance work is licensed under
GPL-3.0-only. The filing-alpha subset retains its MIT notice in
alpha/filing_alpha/NOTICE. See NOTICE
for attribution and boundaries.
