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."
Top: current Original fund pipeline with advisory research. Bottom: proposed thesis-driven fund with directive thesis control and lifecycle management.
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).
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.
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).
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.
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).
The private.geopolitical_theses table in Supabase. This is the bridge between NanoClaw research and the thesis portfolio builder.
| Column | Type | Purpose |
|---|---|---|
| id | UUID PK | Auto-generated unique ID |
| thesis_name | VARCHAR(200) | Short descriptive name (e.g. "Iran Strikes Oil Shock") |
| event_description | TEXT | 2-3 sentence event summary |
| affected_tickers | JSONB | [{symbol, direction, conviction, transmission}] |
| direction | VARCHAR(20) | bullish / bearish / mixed |
| conviction | INTEGER | 1-10 scale, weighted average across scenarios |
| time_horizon | VARCHAR(50) | e.g. "2-6 weeks", "3 months" |
| exit_triggers | JSONB | [{trigger, action}] conditions that force position unwind |
| scenarios | JSONB | [{name, probability, impact}] must sum to 100% |
| status | VARCHAR(20) | active / expired / invalidated / realized |
| deep_dive_url | TEXT | Link to full deep-dive report |
| created_at | TIMESTAMPTZ | When thesis was created |
| expires_at | TIMESTAMPTZ | When thesis time horizon ends |
| invalidated_at | TIMESTAMPTZ | When thesis was invalidated (null if active) |
| last_reviewed_at | TIMESTAMPTZ | Last periodic review timestamp |
12-week rollout from schema creation to paper trading. Infrastructure first, then prompts, then NanoClaw setup, then integration and validation.
private.geopolitical_theses table in Supabase (Week 1)FundId.THESIS to config_multi.py with methodology (Week 1-2)