Implementation Blueprint: Thesis-Driven Fund

From strategy decision to production deployment

What Exists Today

5-step
Builder Cascade
Advisory
Research Role
1-3 mo
Holding Horizon
~150
Candidates/Cycle

Original Fund Architecture

The Original AI Fund is a bottom-up stock picker. It screens ~2,300 equities on P/S, EV/EBITDA, net margin, and revenue growth, then AI identifies ~100-200 BUY/STRONG_BUY candidates. A 5-step LLM cascade (Builder 1, Builder 2, SuperBuilder 1, SuperBuilder 2, SuperBuilder Final) selects the portfolio. Weekly research from Supabase is passed as advisory context that the LLM can choose to ignore. The prompt mandate: "Maximize short-term profit potential (1-3 months). Concentrate capital where short-term gains are most likely."

Architecture: Before and After

Top: current Original fund pipeline with advisory research. Bottom: proposed thesis-driven fund with directive thesis control and lifecycle management.

BEFORE: Advisory
Research is context the LLM sees but can override. The portfolio is optimized for short-term profit, not thesis expression. Geopolitical insights compete with hundreds of fundamental signals.
AFTER: Directive
Active theses ARE the portfolio construction principle. Every position references a thesis. Thesis invalidation forces unwinding. Cash reserves (30-50%) wait for the next high-conviction thesis.

What Changes

1. New Fund Configuration

Add FundId.THESIS to the enum in config_multi.py. New FundConfig with thesis-specific methodology: universe defined by active theses (no sector exclusions), selection driven by thesis conviction, rebalancing triggered by thesis lifecycle events. Initial capital: $50,000 (proprietary, not from Original fund).

2. New Supabase Table

Create private.geopolitical_theses table. Each row is a thesis object with: name, event description, affected tickers (JSONB), direction, conviction (1-10), time horizon, exit triggers, scenarios, status (active/expired/invalidated/realized), and timestamps. This is the single source of truth for what the portfolio should express.

3. New Prompt Set

Three new prompts replace the Original fund equivalents: Thesis Builder (replaces allocation investor, objective is thesis expression not short-term profit), Thesis SuperBuilder (thesis consistency as hard constraint, not preference), and Thesis Invalidation (adversarial review of active theses). Models: GPT-5.2 for builders (benchmark winner), Opus 4.6 for invalidation (reasoning depth).

4. New Rebalancing Triggers

Four thesis-specific triggers replace the Original fund triggers: thesis_published (new thesis from deep-dive), thesis_invalidated (exit triggers hit or conviction collapsed), thesis_expired (time horizon passed), thesis_review (weekly periodic check). The Original fund's SELL rating and earnings warning triggers do not apply.

5. NanoClaw Research Pipeline

Local machine running NanoClaw 24/7: triage agent scans geopolitical RSS feeds every 6 hours, deep-dive agents spawn when triage score >= 8, thesis objects written to IPC files, post-processor pushes to Supabase. Self-continuation via schedule_task(). Estimated cost: $40-60/month (hardware + API).

What stays the same (reused infrastructure): Execution pipeline (intent signing, IB broker gateway), webapp display, Supabase as data store, RSS feed infrastructure, LLM provider routing, portfolio normalization and validation logic, trade logging and performance tracking. The thesis fund plugs into the existing execution layer.

New Database Schema

The private.geopolitical_theses table in Supabase. This is the bridge between NanoClaw research and the thesis portfolio builder.

ColumnTypePurpose
idUUID PKAuto-generated unique ID
thesis_nameVARCHAR(200)Short descriptive name (e.g. "Iran Strikes Oil Shock")
event_descriptionTEXT2-3 sentence event summary
affected_tickersJSONB[{symbol, direction, conviction, transmission}]
directionVARCHAR(20)bullish / bearish / mixed
convictionINTEGER1-10 scale, weighted average across scenarios
time_horizonVARCHAR(50)e.g. "2-6 weeks", "3 months"
exit_triggersJSONB[{trigger, action}] conditions that force position unwind
scenariosJSONB[{name, probability, impact}] must sum to 100%
statusVARCHAR(20)active / expired / invalidated / realized
deep_dive_urlTEXTLink to full deep-dive report
created_atTIMESTAMPTZWhen thesis was created
expires_atTIMESTAMPTZWhen thesis time horizon ends
invalidated_atTIMESTAMPTZWhen thesis was invalidated (null if active)
last_reviewed_atTIMESTAMPTZLast periodic review timestamp

Implementation Timeline

12-week rollout from schema creation to paper trading. Infrastructure first, then prompts, then NanoClaw setup, then integration and validation.

Implementation Checklist