The fund already has a complete research-to-rebalancing loop. The geopolitical layer enhances this ecosystem with deep, event-driven analysis. It does not replace or fill a gap in the existing pipeline.
1. 20 RSS feeds polled hourly during market hours
2. LLM filter + LLM selector picks top 15 items for the Daily Market Brief
3. Newsletter sent 2h before market open; items stored in Supabase content_items
4. YouTube and earnings transcripts also stored as content_items
5. Weekly Research Combiner aggregates all content_items into combined_analyses with analysis_text per week
6. Portfolio Rebalancing reads weekly research via get_current_or_last_week_research()
7. Blog articles auto-generated from combined_analyses (GPT draft, Claude polish)
The existing research is general market and earnings coverage. The geopolitical layer adds deep scenario analysis on specific high-impact events that require 3-6 specialized agents working in parallel. This is a qualitatively different type of analysis.
All existing signal generators and research sources, with the proposed geopolitical layer highlighted.
| Signal | Location | Trigger | Frequency | Cost |
|---|---|---|---|---|
| SEC 8-K | fund/signals/generators/sec8/ | EDGAR polling | Continuous | ~$0.02/filing |
| Technical | fund/signals/generators/technical/ | Scheduled (daily) | Daily close | ~$0.00 (local compute) |
| Institutional 13-F | fund/signals/generators/institutional/ | Quarterly filing | Quarterly | ~$0.05/fund |
| Daily Market Brief | Supabase (content_items) | RSS hourly poll | Daily (pre-market) | ~$0.50/day |
| Weekly Research | Supabase (combined_analyses) | Weekly aggregation | Weekly | ~$2/week |
| YouTube / Transcripts | Supabase (content_items) | New content | As available | ~$0.10/item |
| Geopolitical NEW | Supabase (geopolitical_findings) | NanoClaw scheduler + LLM triage | Event-driven | ~$5-25/event |
The geopolitical layer integrates through Supabase, the same data store used by all existing research. This is not a local signal generator; it is an external research process that pushes findings to the shared database.
1. NanoClaw scheduler triggers triage agent (runs on local machine)
2. High-scoring events trigger 3-6 deep research agents in container isolation
3. Research agents write structured JSON to IPC_DIR/{id}/results/
4. IPC watcher picks up results, post-processor normalizes output
5. Post-processor pushes findings to Supabase (new geopolitical_findings table or extends content_items)
6. Weekly research combiner picks up geopolitical findings automatically (same pattern as RSS items)
7. OR: webapp fetches directly from geopolitical_findings for display
8. Portfolio rebalancer incorporates geopolitical analysis into next cycle
| Field | Type | Example |
|---|---|---|
| event_id | uuid | auto-generated |
| event_type | str | geopolitical_conflict |
| event_summary | str | "US-Iran strikes disrupt oil supply, regional instability" |
| tickers | list[str] | ["KSPI", "XOM", "CVX"] |
| scenarios | jsonb | [{name, probability, price_impact}] |
| trade_recs | jsonb | [{ticker, direction, conviction, time_horizon}] |
| sources | list[str] | ["CSIS", "Goldman Sachs", "EIA"] |
| analysis_text | text | Full research output (consumed by weekly combiner) |
| created_at | timestamp | auto-generated |